Qual a melhor maneira de monitorar o logstash?

8

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

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

O Logstash e especialmente o elasticsearch estão propensos à inanição de recursos. Ambos são fantásticos em continuar de onde pararam, mas como, exatamente, as pessoas estão observando seus observadores?

Opiniões bem-vindas.

    
por Dan Garthwaite 07.05.2014 / 20:41

4 respostas

2

Pessoalmente, eu realmente verifico que os redis ainda estão sendo dequeuing no host de registro central, que é upstream de LS + ES.

, ou seja: redis-cli llen logstash é menor que alguns números fixos.

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 se redis-cli info | grep total_commands_processed continua aumentando, talvez?

    
por 08.05.2014 / 00:49
2

Eu uso o zabbix no meu ambiente, mas suponho que esse método possa funcionar em outras configurações também. 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 comprometidos no elasticsearch. Então, eu pego esse valor e divido pelo número de segundos desde que tirei a última amostra (eu verifico a cada minuto), se esse número cair abaixo de um limite arbitrário, posso alertá-lo. Eu também uso o zabbix para verificar se o PID do logstash morreu, e também o alerta, e execute 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 bem), o que eu também posso alertar.

    
por 05.05.2015 / 10:06
0

Verifique se os registros por segundo em seu endpoint final (por exemplo, elasticsearch) estão acima de uma linha de base.

Isto é, faça uma verificação de fim a fim, se o resultado final estiver funcionando corretamente, você sabe que todas as etapas do pipeline funcionam corretamente.

Se você costuma ter problemas, ou precisa de uma melhor introspecção, comece a instrumentar cada peça do pipeline como os réis, como sugerido acima.

    
por 03.04.2015 / 21:15
0

Nós usamos várias abordagens:

  1. Monit , para ouvir as portas Elastic e Logstash e reiniciá-las
  2. Para casos em que algo de ruim aconteceu, e tudo está em vigor de monit prospective, mas logs não são consumidos / armazenados, há um script simples, que verifica o índice ativo a cada hora e alerta caso a contagem de documentos não tenha sido alterada no último hora.
por 16.07.2015 / 22:09