¿Cuál es la mejor manera de monitorear logstash?

8

He visto esta pregunta en la lista de correo varias veces, pero no he tenido una respuesta satisfactoria.

¿Cuál es la mejor manera de controlar que la tubería no esté atascada? Clientes -> logstash -> elasticsearch.

Logstash y especialmente elasticsearch son propensos a la falta de recursos. Ambos son fantásticos para retomar donde lo dejaron, pero ¿cómo, exactamente, observan las personas a sus observadores?

Opiniones bienvenidas.

Dan Garthwaite
fuente
Puede ser de ayuda esto Cómo verificar el pulso de
Logstash

Respuestas:

2

Personalmente, en realidad compruebo que redis todavía está disminuyendo en el host de registro central, que está aguas arriba de LS + ES.

es decir: redis-cli llen logstashes menor que algún número fijo.

Sin embargo, esto puede no indicar que los registros están apareciendo en redis, pero eso también podría verificarse.

¿Algo como comprobar que redis-cli info | grep total_commands_processedsigue aumentando, tal vez?

Sirex
fuente
¿No seguiría aumentando eso a medida que lleguen más registros? Necesitaríamos el número total de LPOP. ¿O tal vez advertir cuando LLEN se hace demasiado grande?
Dan Garthwaite
Si. Lo redacté mal, verifico que llen es menor que algún número, y alerta si no lo es.
Sirex
¿No total_commands_processedsiempre se incrementaría, si no fuera de logstash, sondeándolo desde el infocomando en sí?
Dan Garthwaite
2

Uso zabbix en mi entorno, pero supongo que este método también podría funcionar en otras configuraciones. He configurado el siguiente comando que zabbix puede usar:

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

Esto devolverá el número total de registros elásticos de búsqueda comprometidos. Así que tomo este valor y lo divido por el número de segundos desde que tomé la última muestra (verifico cada minuto), si este número cae por debajo de un límite arbitrario, puedo alertarlo. También utilizo zabbix para verificar si el PID logstash ha muerto, y también alertarlo, y ejecutar el siguiente comando:

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/

Esto devolverá 1 si la salud del clúster se ha vuelto roja (amarillo y verde están bien), lo que también puedo alertar.

Retumba
fuente
0

Verifique que los registros por segundo en su punto final (p. Ej., Elasticsearch) estén por encima de la línea de base.

Es decir, haga una verificación de extremo a extremo, si el resultado final funciona correctamente, sabe que todos los pasos de la tubería funcionan correctamente.

Si con frecuencia tiene problemas o necesita una mejor introspección, comience a instrumentar cada pieza de la tubería como redis como se sugirió anteriormente.

dmourati
fuente
0

Utilizamos varios enfoques:

  1. Monit , para escuchar los puertos Elastic y Logstash y reiniciarlos
  2. Para los casos en que sucedió algo malo, y todo está en su lugar desde monit prospectivo, pero los registros no se consumen / almacenan, hay un script simple, que verifica el índice activo cada hora y alerta en caso de que el recuento de documentos no haya cambiado en la última hora.
Constantine Korobov
fuente