GELF TCP 12201ポートを介してエコーメッセージをgraylog2に送信する


20

echo経由でメッセージを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用に設定されており、アクティブな接続を表示し、エコーしようとすると発生しますが、メッセージが送信されるとサーバーに何も届きません。


1
このコマンドは私のために機能します。唯一の違いは、グレイログでUDPポートを使用することです。したがって-u、nc にパラメーターを追加します。
アムラ14

回答:


29

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の問題に関する議論で見つかりました。


12
UDPを使用する-uパラメーターを追加nc
-rsilva4

7

LogstashインスタンスがGELF入力を正しくリッスンしていることを確認しようとしたときに、このスレッドが見つかりました。

Logstash + Gelf over 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
  • メッセージはgzipされています。そうでない場合Could not find parser for header: [123, 34]、Logstashログにこのエラーが表示されます。
  • netcatはUDPで送信しています
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.