elasticsearch - Logstash + Elasticsearch 本地故障转移或重试

标签 elasticsearch redis logstash

我有一个可用的 Redis 支持的 ELK 堆栈,但是偶尔,当 ElasticSearch 由于某种原因不可用时,我会遇到问题。

日志事件流:

  1. 服务器生成日志
  2. 服务器运行 log-courier,收集日志,远程推送到 Logstash 服务器
  3. Logstash-incoming 写入本地 Redis 服务
  4. Redis 保存要处理的事件,充当缓冲区
  5. Logstash-outgoing 从 Redis 队列读取数据,运行 grok 和其他过滤器,然后输出到 Elasticsearch 集群。

logstash-incoming.conf

input {
  courier {
    port => 123
    transport => "tcp"
  }
}
output {
  redis {
    host => "127.0.0.1"
    data_type => "list" 
    key => "logstash"
  }
}

logstash-outgoing.conf

input {
  redis {
    host => "127.0.0.1"
    data_type => "list" 
    key => "logstash"
  }
}
output {
  elasticsearch {
    hosts => "elasticsearchcluster.local"
  } 
}

如果第 5 步失败,事件将从 Redis 中弹出,Logstash 将尝试三次,然后将批量有效负载设为黑洞,从而导致我的数据收集出现漏洞。

有没有办法:

  1. 将重试时间从 3 次 x 2 秒的等待时间延长到更慷慨的时间。
  2. 将失败的负载写入磁盘,以便在问题解决后将它们通过管道传输回 ElasticSearch。
  3. 理想情况下,两者兼而有之。

最佳答案


我认为在撰写本文时,两者都不可能。关于第 2 点。死信队列设施已在路线图上,但显然尚未发布。查看这两张票:

再见, 马库斯

关于elasticsearch - Logstash + Elasticsearch 本地故障转移或重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36320253/

相关文章:

elasticsearch - 是否分析了提供给通配符查询的文本?

java - Elasticsearch Java API 创建带有映射的索引失败

elasticsearch - 动态更改Elasticsearch查询中的 “from”值

data-structures - Redis 中的复合键/二级索引策略

python - Redis pubsub 给出错误的结果

tomcat - 错误显示时间过滤器 kibana 3 (utc)

amazon-web-services - 在 logstash 中将输出配置为 elasticsearch

elasticsearch - refresh_interval对ElasticSearch对旧不变索引的影响

java - RedisUtil 共享连接池 false

elasticsearch - Kibana多个仪表板支持