この質問をメーリングリストで何度か見ましたが、満足のいく答えがありませんでした。
パイプラインがスタックしていないことを監視するのに最適な方法はどれですか。クライアント-> logstash-> elasticsearch。
Logstash、特にelasticsearchはリソース不足の傾向があります。彼らはどちらも、中断したところから再開するのは素晴らしいですが、人々はどのようにしてウォッチャーを監視していますか?
意見を歓迎します。
私の環境では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を返します(黄と緑は大丈夫です)。
個人的に私は実際に、LS + ESの上流にある中央ロギングホストでredisがまだデキューしていることを確認します。
つまり、redis-cli llen logstash
はいくつかの固定数よりも小さいです。
これは、ログがredisで表示されていることをまったく示していない可能性がありますが、それもチェックできると思います。
それをチェックするようなものredis-cli info | grep total_commands_processed
は増え続けるでしょうか?
いくつかのアプローチを使用します。
最終エンドポイント(elasticsearchなど)の1秒あたりのログがベースラインを上回っていることを確認します。
つまり、エンドツーエンドのチェックを行います。最終結果が正しく機能していれば、パイプラインのすべてのステップが正しく機能していることがわかります。
問題が頻繁に発生する場合、またはより適切な内省が必要な場合は、上記のように、redisのようにパイプラインの各部分の計測を開始します。