如何最好地监控 logstash?

如何最好地监控 logstash?

我已在邮件列表中看到过这个问题几次,但尚未得到满意的答案。

如何最好地监控管道是否卡住?客户端 -> logstash -> elasticsearch。

Logstash 和 elasticsearch 尤其容易出现资源匮乏的情况。它们都擅长从中断的地方继续运行,但人们究竟是如何监视它们的监视者的呢?

欢迎发表意见。

答案1

我实际上亲自检查过,redis 仍然在中央日志主机上出队,该主机位于 LS+ES 的上游。

即:redis-cli llen logstash小于某个固定数字。

虽然这可能并不表明日志出现在 redis 中,但我猜也可以检查一下。

可能像检查那样redis-cli info | grep total_commands_processed不断增加,对吗?

答案2

我在我的环境中使用 zabbix,但我认为这种方法在其他设置中也适用。我已配置允许 zabbix 使用的以下命令:

UserParameter=elasticsearch.commits,/usr/bin/curl -s 'localhost:9200/_cat/count?v' | /bin/sed -n '2p' | /bin/awk '{print $3}'

这将返回已提交的 elasticsearch 记录总数。因此,我取此值并除以自上次采样以来的秒数(我每分钟检查一次),如果此数字低于任意限制,我可以发出警报。我还使用 zabbix 检查 logstash PID 是否已死亡,并发出警报,然后运行以下命令:

UserParameter=elasticsearch.health,/usr/bin/curl -s 'http://localhost:9200/_cluster/health?pretty=true' | /bin/sed -n '3p' | /bin/awk -F'\"' '{print $4}' | /bin/sed s/yellow/0/ | /bin/sed s/green/0/ | /bin/sed s/red/1/

如果集群健康状况变为红色(黄色和绿色正常),这将返回 1,我也可以发出警报。

答案3

检查最终端点(例如 elasticsearch)的每秒日志量是否高于某个基线。

也就是说,进行端到端检查,如果最终结果正常,则您知道管道中的所有步骤都正常。

如果您经常遇到问题,或者需要更好的自省,请按照上述建议开始对管道的每个部分(如 redis)进行检测。

答案4

我们采用了几种方法:

  1. 监控,监听 Elastic 和 Logstash 端口并重新启动它们
  2. 对于发生不好的事情的情况,从监控的角度来看一切都已准备就绪,但日志未被使用/存储,有一个简单的脚本,每小时检查一次活动索引,并在文档计数在过去一小时内没有发生变化时发出警报。

相关内容