Il modo migliore per monitorare il logstash?


8

Ho visto questa domanda sulla mailing list alcune volte ma non ho avuto una risposta soddisfacente.

Il modo migliore per monitorare che la tubazione non sia bloccata? Clienti -> logstash -> elasticsearch.

Logstash e soprattutto elasticsearch sono inclini alla fame di risorse. Sono entrambi fantastici nel riprendere da dove avevano interrotto, ma come, esattamente, le persone stanno guardando i loro osservatori?

Opinioni benvenute.


Può essere d'aiuto questo Come controllare l'impulso di
Logstash

Risposte:


2

Personalmente in realtà controllo che redis stia ancora eseguendo il dequecing sull'host di registrazione centrale, che è a monte di LS + ES.

vale a dire: redis-cli llen logstashè inferiore a un numero fisso.

Ciò potrebbe non indicare che i registri vengano comunque visualizzati in redis, ma anche questo potrebbe essere verificato.

Qualcosa come il controllo che redis-cli info | grep total_commands_processedcontinua ad aumentare, forse?


Non continuerebbe ad aumentare man mano che arrivano altri registri? Avremmo bisogno del numero totale di LPOP. O forse avvisare quando LLEN diventa troppo grande?
Dan Garthwaite,

si. L'ho scritto male, controllo che llen sia inferiore a qualche numero e avviso se non lo è.
Sirex,

Non total_commands_processedaumenterebbe sempre, se non dal logstash che lo polling dal infocomando stesso?
Dan Garthwaite,

2

Uso zabbix nel mio ambiente, ma suppongo che questo metodo potrebbe funzionare anche in altre configurazioni. Ho configurato il seguente comando che zabbix può usare:

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

Ciò restituirà il numero totale di record di elasticsearch impegnati. Quindi prendo questo valore e divido per il numero di secondi da quando ho preso l'ultimo campione (controllo ogni minuto), se questo numero scende al di sotto di un limite arbitrario posso avvisarlo. Uso anche zabbix per verificare se il logstash PID è morto e avvisare anche quello ed eseguire il comando seguente:

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/

Questo restituirà 1 se lo stato del cluster è diventato rosso (giallo e verde sono a posto), che posso anche avvisare.


0

Verificare che i log al secondo nell'endpoint finale (ad es. Elasticsearch) siano al di sopra di alcuni valori di base.

Cioè, esegui un controllo end-to-end, se il risultato finale funziona correttamente, sai che tutti i passaggi della pipeline funzionano correttamente.

Se hai spesso problemi o hai bisogno di una migliore introspezione, inizia a strumentare ogni pezzo della pipeline come redis come suggerito sopra.


0

Utilizziamo diversi approcci:

  1. Monit , per ascoltare le porte Elastic e Logstash e riavviarle
  2. Per i casi in cui è successo qualcosa di brutto, e tutto è a posto dal monitoraggio futuro, ma i registri non vengono consumati / memorizzati c'è un semplice script, che controlla l'indice attivo ogni ora e avvisa nel caso in cui il conteggio dei documenti non sia cambiato nell'ultima ora.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.