Netcat

通過 GELF TCP 12201 埠向 graylog2 發送回顯消息

  • October 26, 2016

我需要通過 echo 向 graylog2 伺服器發送一條消息,以測試設施的 %{@type} 是否正確,但是一旦我執行了 GELF 支持中的 echo 就不會到達我的 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 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
  • 消息已壓縮,否則您將收到此錯誤:Could not find parser for header: [123, 34]在 Logstash 日誌中
  • netcat 正在通過 UDP 發送

引用自:https://serverfault.com/questions/591758