LogStash因无法连接ElasticSearch输出端崩溃,求重连等待方案
解决LogStash在ElasticSearch断开后崩溃的问题
我之前也碰到过完全一样的情况!多管道模式下的LogStash默认配置确实会在ES连接失败且重试耗尽后直接崩溃,不过通过调整elasticsearch输出插件的几个关键参数,就能让它持续等待并重连,直到ES恢复。
核心是要让LogStash无限重试连接,并且合理控制重试间隔,避免资源浪费。你需要在每个管道的elasticsearch输出块中添加以下配置:
max_retries => -1:将重试次数设置为无限,默认情况下这个值是有限的(比如3次),一旦耗尽就会触发致命错误导致进程崩溃。设为-1后,LogStash会一直尝试重连,直到ES恢复。retry_initial_interval => 3:初始的重试间隔(单位:秒),第一次失败后3秒重试。retry_max_interval => 60:最大重试间隔,避免短时间内频繁重试耗尽系统资源,这里设置为60秒,之后每次重试都会间隔60秒。resurrect_delay => 5:当ES节点被标记为不可用时,每隔5秒尝试重新检测该节点是否恢复可用。
给你一个完整的输出配置示例:
output { elasticsearch { hosts => ["localhost:9200"] index => "your-log-index-%{+YYYY.MM.dd}" # 容错重连核心配置 max_retries => -1 retry_initial_interval => 3 retry_max_interval => 60 resurrect_delay => 5 # 如果你的ES启用了身份验证,添加下面两行 # user => "elastic" # password => "your-es-password" } }
注意:因为你用的是多管道模式,每个管道的elasticsearch输出都需要单独添加这些配置,每个管道的输出是独立管理的,只改一个管道的配置没用哦。
我当时这么配置后,就算把ES停掉几个小时,LogStash也会稳稳运行着,等我重启ES后,它会自动把队列里攒的事件全部发送过去,完全不会崩溃。
内容的提问来源于stack exchange,提问作者Gourmax
相关产品推荐
相关产品推荐

