Enviar mensagem de eco para graylog2 via porta GELF TCP 12201

20

Preciso enviar uma mensagem para o servidor graylog2 por meio de eco para testar se o% {@ type} do recurso está correto, mas depois que eu faço o eco que é o suporte do GELF, ele não chega ao meu servidor graylog2. Se ele reiniciar o graylog2, as mensagens sobre o início dele chegarão ao servidor graylog2.

Exemplo da mensagem de eco:

echo '{"version": "1.1","host":"example.org","short_message":"A short message that helps you identify what is going on","full_message":"Backtrace here\n\nmore stuff","level":1,"_user_id":9001,"_some_info":"foo","_some_env_var":"bar"}' | nc -w 1 my.graylog.server 12201

O que estou fazendo errado? O modo graylog --debug não mostra nada. Ele nem vê a mensagem chegar.

Editar:

A entrada Graylog2 é configurada para o GELF TCP e mostra conexões ativas e aumenta quando tento ecoar, mas nada chega ao servidor conforme a mensagem segue.

mYzk
fonte
11
Este comando funciona para mim. A única diferença é que eu uso a porta UDP no graylog. Portanto, adiciono -uparâmetro ao nc.
amra

Respostas:

29

Parece que a entrada GELF TCP precisa de um caractere nulo no final de cada mensagem Gelf.

Então você deve enviar:

echo -e '{"version": "1.1","host":"example.org","short_message":"Short message","full_message":"Backtrace here\n\nmore stuff","level":1,"_user_id":9001,"_some_info":"foo","_some_env_var":"bar"}\0' | nc -w 1 my.graylog.server 12201

Esta resposta foi encontrada em uma discussão sobre os problemas de Graylog .

user236376
fonte
12
Adicione -uparâmetro para ncusar o UDP
rsilva4
7

Como eu estava tentando verificar se uma instância do Logstash estava escutando corretamente as entradas GELF, encontrei esse segmento.

Aqui está um comando que funcionará para o Logstash + Gelf sobre UDP:

echo '{"version": "1.1","host":"example.org","short_message":"A short message that helps you identify what is going on","full_message":"Backtrace here\n\nmore stuff","level":1,"_user_id":9001,"_some_info":"foo","_some_env_var":"bar"}' | gzip | nc -u -w 1 127.0.0.1 12201

Notar que :

  • echobasta um simples , não há necessidade de-e
  • a mensagem é compactada com gzip, caso contrário, você receberá este erro: Could not find parser for header: [123, 34]nos logs do Logstash
  • O netcat está enviando pelo UDP
jlecour
fonte