Quelle est la meilleure façon de surveiller Logstash?

8

J'ai vu cette question sur la liste de diffusion plusieurs fois mais je n'ai pas eu de réponse satisfaisante.

Comment contrôler au mieux que le pipeline n'est pas bloqué? Clients -> logstash -> elasticsearch.

Logstash et surtout elasticsearch sont sujets à la famine. Ils sont tous les deux fantastiques pour reprendre là où ils se sont arrêtés mais comment, exactement, les gens regardent-ils leurs observateurs?

Les opinions sont les bienvenues.

Dan Garthwaite
la source
Peut-être aider cela Comment vérifier le pouls de
Logstash

Réponses:

2

Personnellement, je vérifie que redis est toujours en attente de mise en file d'attente sur l'hôte de journalisation central, qui est en amont de LS + ES.

c'est-à-dire: redis-cli llen logstashest inférieur à un certain nombre fixe.

Cela peut ne pas indiquer du tout que les journaux apparaissent dans redis, mais cela pourrait aussi être vérifié, je suppose.

Quelque chose comme la vérification qui ne redis-cli info | grep total_commands_processedcesse d'augmenter, peut-être?

Sirex
la source
Cela ne continuerait-il pas d'augmenter à mesure que davantage de journaux arriveraient? Nous aurions besoin du nombre total de LPOP. Ou peut-être avertir lorsque LLEN devient trop grand?
Dan Garthwaite
Ouais. Je l'ai mal formulé, je vérifie que llen est inférieur à un certain nombre et alerte si ce n'est pas le cas.
Sirex
Ne serait-il pas total_commands_processedtoujours incrémenté, sinon à partir de l'interrogation de logstash, puis à partir de la infocommande elle-même?
Dan Garthwaite
2

J'utilise zabbix dans mon environnement, mais je suppose que cette méthode pourrait également fonctionner dans d'autres configurations. J'ai configuré la commande suivante que zabbix est autorisée à utiliser:

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

Cela renverra le nombre total d'enregistrements elasticsearch engagés. Je prends donc cette valeur et la divise par le nombre de secondes depuis que j'ai pris le dernier échantillon (je vérifie toutes les minutes), si ce nombre tombe en dessous d'une limite arbitraire, je peux l'alerter. J'utilise également zabbix pour vérifier si le PID de logstash est mort, et l'alerter également, et exécuter la commande suivante:

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/

Cela retournera 1 si la santé du cluster est devenue rouge (le jaune et le vert sont corrects), ce que je peux également alerter.

Gronde
la source
0

Vérifiez que les journaux par seconde à votre point de terminaison final (par exemple elasticsearch) sont supérieurs à une ligne de base.

Autrement dit, effectuez une vérification de bout en bout, si votre résultat final fonctionne correctement, vous savez que toutes les étapes du pipeline fonctionnent correctement.

Si vous rencontrez fréquemment des problèmes ou avez besoin d'une meilleure introspection, commencez à instrumenter chaque morceau du pipeline comme redis comme suggéré ci-dessus.

dmourati
la source
0

Nous utilisons plusieurs approches:

  1. Monit , pour écouter les ports Elastic et Logstash et les redémarrer
  2. Pour les cas où quelque chose de mauvais s'est produit, et tout est en place depuis monit prospective, mais les journaux ne sont pas consommés / stockés, il existe un script simple, qui vérifie l'index actif toutes les heures et alerte si le nombre de documents n'a pas changé au cours de la dernière heure.
Constantine Korobov
la source