Мне нужно отправить сообщение на сервер 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