web-dev-qa-db-ja.com

logstashを監視するのに最適な方法は?

この質問をメーリングリストで何度か見ましたが、満足のいく答えがありませんでした。

パイプラインがスタックしていないことを監視するのに最適な方法はどれですか。クライアント-> logstash-> elasticsearch。

Logstash、特にelasticsearchはリソース不足の傾向があります。彼らはどちらも、中断したところから再開するのは素晴らしいですが、人々はどのようにしてウォッチャーを監視していますか?

意見を歓迎します。

8
Dan Garthwaite

私の環境では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を返します(黄と緑は大丈夫です)。

2
Rumbles

個人的に私は実際に、LS + ESの上流にある中央ロギングホストでredisがまだデキューしていることを確認します。

つまり、redis-cli llen logstashはいくつかの固定数よりも小さいです。

これは、ログがredisで表示されていることをまったく示していない可能性がありますが、それもチェックできると思います。

それをチェックするようなものredis-cli info | grep total_commands_processedは増え続けるでしょうか?

2
Sirex

いくつかのアプローチを使用します。

  1. Monit 、ElasticおよびLogstashポートをリッスンして再起動する
  2. 何か問題が発生し、monitの予測からすべてが整っているが、ログが消費/保存されていない場合、単純なスクリプトがあり、アクティブなインデックスを毎時間チェックし、ドキュメント数が最後の1時間で変更されていない場合にアラートを出します。
0

最終エンドポイント(elasticsearchなど)の1秒あたりのログがベースラインを上回っていることを確認します。

つまり、エンドツーエンドのチェックを行います。最終結果が正しく機能していれば、パイプラインのすべてのステップが正しく機能していることがわかります。

問題が頻繁に発生する場合、またはより適切な内省が必要な場合は、上記のように、redisのようにパイプラインの各部分の計測を開始します。

0
dmourati