Wie kann man Logstash am besten überwachen?

8

Ich habe diese Frage einige Male auf der Mailingliste gesehen, aber keine zufriedenstellende Antwort erhalten.

Wie lässt sich am besten überwachen, dass die Pipeline nicht festsitzt? Clients -> Logstash -> Elasticsearch.

Logstash und insbesondere Elasticsearch sind anfällig für Ressourcenmangel. Sie sind beide fantastisch darin, dort weiterzumachen, wo sie aufgehört haben, aber wie genau beobachten die Leute ihre Beobachter?

Meinungen willkommen.

Dan Garthwaite
quelle
Kann
jBee

Antworten:

2

Persönlich überprüfe ich tatsächlich, dass Redis immer noch auf dem zentralen Protokollierungshost, der sich vor LS + ES befindet, aus der Warteschlange entfernt wird.

dh: redis-cli llen logstashist kleiner als eine feste Zahl.

Dies bedeutet möglicherweise nicht, dass Protokolle überhaupt in Redis angezeigt werden, aber das könnte auch überprüft werden, denke ich.

So etwas wie eine Überprüfung, redis-cli info | grep total_commands_processeddie vielleicht immer weiter zunimmt?

Sirex
quelle
Würde das nicht weiter zunehmen, wenn mehr Protokolle eingehen? Wir würden die Gesamtzahl der LPOPs benötigen. Oder vielleicht warnen, wenn LLEN zu groß wird?
Dan Garthwaite
Ja. Ich habe es schlecht formuliert, ich überprüfe, ob llen kleiner als eine Zahl ist, und alarmiere, wenn es nicht ist.
Sirex
Würde nicht total_commands_processedimmer inkrementieren, wenn nicht von logstash, der es dann vom infoBefehl selbst abfragt ?
Dan Garthwaite
2

Ich verwende zabbix in meiner Umgebung, aber ich nehme an, dass diese Methode auch in anderen Setups funktionieren könnte. Ich habe den folgenden Befehl konfiguriert, den zabbix verwenden darf:

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

Dies gibt die Anzahl der insgesamt festgeschriebenen Elasticsearch-Datensätze zurück. Also nehme ich diesen Wert und dividiere durch die Anzahl der Sekunden seit der letzten Probe (ich überprüfe jede Minute). Wenn diese Zahl unter einen beliebigen Grenzwert fällt, kann ich darauf hinweisen. Ich benutze auch zabbix, um zu überprüfen, ob die Logstash-PID gestorben ist, und alarmiere dies auch und führe den folgenden Befehl aus:

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/

Dies gibt 1 zurück, wenn der Clusterzustand rot geworden ist (gelb und grün sind in Ordnung), was ich auch alarmieren kann.

Rumpelt
quelle
0

Überprüfen Sie, ob die Protokolle pro Sekunde an Ihrem endgültigen Endpunkt (z. B. Elasticsearch) über einer bestimmten Basislinie liegen.

Führen Sie eine End-to-End-Überprüfung durch. Wenn Ihr Endergebnis ordnungsgemäß funktioniert, wissen Sie, dass alle Schritte in der Pipeline ordnungsgemäß funktionieren.

Wenn Sie häufig Probleme haben oder eine bessere Selbstbeobachtung benötigen, beginnen Sie, jedes Stück der Pipeline wie oben beschrieben wie Redis zu instrumentieren.

dmourati
quelle
0

Wir verwenden verschiedene Ansätze:

  1. Überwachen Sie , um nach Elastic- und Logstash-Ports zu suchen und diese neu zu starten
  2. In Fällen, in denen etwas Schlimmes passiert ist und alles aus Sicht der Überwachung vorhanden ist, die Protokolle jedoch nicht verbraucht / gespeichert werden, gibt es ein einfaches Skript, das den aktiven Index jede Stunde überprüft und Warnungen für den Fall, dass sich die Anzahl der Dokumente in der letzten Stunde nicht geändert hat.
Konstantin Korobov
quelle