Wyślij wiadomość echa do graylog2 przez port GELF TCP 12201

20

Muszę wysłać wiadomość do serwera graylog2 za pośrednictwem echa, aby sprawdzić, czy% {@ type} dla obiektu jest aktywny, ale kiedy to zrobię, echo obsługi GELF nie dotrze do mojego serwera graylog2. Jeśli zrestartuje graylog2, wówczas wiadomości o rozpoczęciu docierają do serwera graylog2.

Przykład komunikatu echa:

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

Co ja robię źle? Tryb graylog --debug niczego nie pokazuje. Nawet nie widzi wiadomości.

Edytować:

Wejście Graylog2 jest skonfigurowane dla GELF TCP i pokazuje aktywne połączenia i podnosi się, gdy próbuję echo, ale nic nie dociera do serwera, jak w przypadku wiadomości.

mYzk
źródło
1
To polecenie działa dla mnie. Jedyna różnica polega na tym, że korzystam z portu UDP na graylog. Dlatego dodaję -uparametr do nc.
amra

Odpowiedzi:

29

Wygląda na to, że wejście GELF TCP wymaga znaku zerowego na końcu każdej wiadomości Gelf.

Więc powinieneś wysłać:

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

Ta odpowiedź została znaleziona w dyskusji na temat problemów Graylog .

użytkownik236376
źródło
12
Dodaj -uparametr, aby ncużyć UDP
rsilva4,
7

Gdy próbowałem sprawdzić, czy instancja Logstash poprawnie nasłuchuje danych wejściowych GELF, znalazłam ten wątek.

Oto polecenie, które będzie działać dla Logstash + Gelf przez 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

Zauważ, że :

  • wystarczy proste echo, bez potrzeby-e
  • wiadomość jest gzipowana, w przeciwnym razie pojawi się ten błąd: Could not find parser for header: [123, 34]w dziennikach Logstash
  • Netcat wysyła przez UDP
Jlecour
źródło