Graylog

修復 graylog2 Web 界面上的嚴重性

  • July 6, 2012

我正在使用 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配置中。

從那時起,它就像一種魅力。

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