Graylog
修復 graylog2 Web 界面上的嚴重性
我正在使用 logstash 從一組 webapps 中收集日誌並將它們發送到 graylog2 以進行集中查看。
我有以下用於標記的過濾器:
grok { type => "webapps" pattern => "^%{TIME:timestamp} \[%{NOTSPACE:thread}\]%{SPACE}%{WORD:loglevel}%{SPACE}%{JAVACLASS:class} - %{GREEDYDATA:short_message}" drop => false debug => "true" add_tag => [ "%{loglevel}" ] }
日誌級別將沿著 TRACE、DEBUG、INFO、NOTICE、ERROR、FATAL 行。
最初,一切都顯示為“警報”(在 ruby/graylog-server 中的數值為 5,並且在原始碼中標記為“未知”)。
然後我添加了一系列變異過濾器,例如:
mutate { type => "webapps" tags => "INFO" add_tag => [ "ll_%{@level}", "mutated" ] replace => [ "@level", "6" ] # informational }
這讓我更接近顯示在 web 界面中的正確日誌級別/嚴重性,但所有“INFO”消息都顯示為調試消息。
我編寫了一個腳本來查看 elasticsearch 數據並根據它應該是什麼來設置 level 欄位。
- 調試:7
- 資訊:6
- 警告:4
- 錯誤:3
- 關鍵:2
沒有使用級別 0、1 和 5,因為消息來源表明這些是保留的。
但是這個腳本在資源方面很昂貴,當它試圖更新的數據集以每秒數百或數千條消息的速度增長時,我認為它不會很好地工作。
我注意到的另一件事是,當我在標籤中使用“@source”之類的東西時,會顯示正確的值。當我執行“@level”時,我將它作為文字插入,這表明它不是已指示的預定義欄位。
我已經查看了一些來源,但並不詳盡,所以我可能只是錯過了它。
問題是,我需要在我的 mutate 過濾器中進行哪些更改才能使“INFO”在 graylog2 界面中顯示為“Informational”?
我試過的都沒有用,郵件列表也無濟於事。
我最終要做的是停止為此使用logstash,並添加一個logback-gelf jar並添加到我的logback配置中。
從那時起,它就像一種魅力。