Назад | Перейти на главную страницу

Отправить эхо-сообщение в graylog2 через порт GELF TCP 12201

Мне нужно отправить сообщение на сервер graylog2 через эхо, чтобы проверить, является ли% {@ type} для объекта коррентным, но как только я сделаю эхо, которое в поддержке GELF, не поступит на мой сервер graylog2. Если он перезапустит graylog2, то сообщения об этом будут приходить на сервер graylog2.

Пример эхо-сообщения:

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

Что я делаю не так? Режим graylog --debug ничего не показывает. Он даже не видит входящего сообщения.

Редактировать:

Вход Graylog2 настроен для GELF TCP и показывает активные соединения, и он появляется, когда я пытаюсь эхо, но ничего не достигает сервера, что касается сообщения.

Кажется, что для ввода GELF TCP требуется нулевой символ в конце каждого сообщения Gelf.

Итак, вы должны отправить:

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

Этот ответ был найден в обсуждение вопросов Graylog.

Когда я пытался убедиться, что экземпляр Logstash правильно прослушивает входные данные GELF, я нашел этот поток.

Вот команда, которая будет работать для Logstash + Gelf через 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

Заметь :

  • простой echo достаточно, не нужно -e
  • сообщение сжато в архиве, иначе вы получите эту ошибку: Could not find parser for header: [123, 34] в журналах Logstash
  • netcat отправляет через UDP