Qual a melhor forma de monitorar o logstash?

8

Eu já vi essa pergunta na lista de correspondência algumas vezes, mas não tive uma resposta satisfatória.

Qual a melhor forma de monitorar se o pipeline não está preso? Clientes -> logstash -> elasticsearch.

O logstash e, principalmente, a pesquisa elástica são propensos à falta de recursos. Os dois são fantásticos em continuar de onde pararam, mas como exatamente as pessoas estão observando seus observadores?

Opiniões bem-vindas.

Dan Garthwaite
fonte
Pode ser útil para
Logstash

Respostas:

2

Pessoalmente, na verdade, verifico se o redis ainda está desenfileirando no host de log central, que é upstream do LS + ES.

ou seja: redis-cli llen logstashé menor que um número fixo.

Isso pode não indicar que os logs estão aparecendo em redis, mas isso pode ser verificado também, eu acho.

Algo como verificar que redis-cli info | grep total_commands_processedcontinua aumentando, talvez?

Sirex
fonte
Isso não continuaria a aumentar à medida que mais logs chegassem? Nós precisaríamos do número total de LPOPs. Ou talvez avisar quando o LLEN ficar muito grande?
Dan Garthwaite
sim. Eu escrevi mal, verifico que llen é menor que algum número e alerta se não for.
Sirex
Nem total_commands_processedsempre o incremento, se não do logstash, faz a pesquisa do infopróprio comando?
Dan Garthwaite
2

Eu uso o zabbix no meu ambiente, mas acho que esse método também poderia funcionar em outras configurações. Eu configurei o seguinte comando que o zabbix tem permissão para usar:

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

Isso retornará o número total de registros confirmados da pesquisa elástica. Então, pego esse valor e divido pelo número de segundos desde que tirei a última amostra (verifico a cada minuto); se esse número cair abaixo de um limite arbitrário, posso alertá-lo. Também uso o zabbix para verificar se o PID do logstash morreu, alertar sobre isso também e executar o seguinte 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/

Isso retornará 1 se a integridade do cluster ficar vermelha (amarelo e verde estão corretos), o que também posso alertar.

Rumbles
fonte
0

Verifique se os logs por segundo em seu terminal final (por exemplo, elasticsearch) estão acima de alguma linha de base.

Ou seja, faça uma verificação completa, se o resultado final estiver funcionando corretamente, você sabe que todas as etapas do pipeline funcionam corretamente.

Se você tiver problemas com freqüência ou precisar de uma melhor introspecção, comece a instrumentar cada parte do pipeline como redis, conforme sugerido acima.

dmourati
fonte
0

Usamos várias abordagens:

  1. Monit , para ouvir as portas Elastic e Logstash e reiniciá-las
  2. Para os casos em que algo de ruim aconteceu e tudo está em vigor desde o monit prospectivo, mas os logs não são consumidos / armazenados, existe um script simples que verifica o índice ativo a cada hora e alerta se a contagem de documentos não mudou na última hora.
Constantine Korobov
fonte