Netcat
通過 GELF TCP 12201 埠向 graylog2 發送回顯消息
我需要通過 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 發送