Graylog 系列 (1):什麼是 Streams?

EJ Feng
4 min readJul 13, 2020

--

讓 Graylog 在處理每一個 messages 的時候,即時地把 message 做分類的機制。

本文是自行翻譯自 Graylog 官方文件再加上自己操作的一些畫面。

Graylog 版本是 v.3.3.2。

什麼是 streams?

Graylog 的 streams 是一種機制,可以讓 Graylog 在處理每一個 messages 的時候,即時地把 message 做分類。你可以自行定義規則(rules)來指示 Graylog 哪個 message 要被分到哪個 stream 中。舉例來說,若有以下三個 messages 被送到 Graylog:

https://docs.graylog.org/en/latest/pages/streams.html#what-are-streams

你可以創建一個名為「Database errors」的 stream 來儲存每個來自 database 的 error message。例如,創建一個新的 stream,然後設定以下 2 個規則,並選擇「要符合所有規則」的這個選項:

  1. level 欄位值必須大於「4」
  2. source 欄位值必須符合 regular expression「^database-host-\d+」(因應我自己的實際資料狀況,調整成「^node\d+」)

這樣的話 Graylog 就會檢查每個新的 message,若符合 level 大於 4(WARN 警告的程度)以及 source 符合設定的 regular expression,那麼該 message 就會被歸類在該 stream 中。

一個 message 會被歸類在每個符合規則條件的 stream 中。也就是說,一個 message 可以被歸類在不只一個 stream 中。

設定好的 stream 就會出現在 streams list 當中,點擊 stream 的標題就會顯示所有 database errors 的 messages。

在某些條件發生時,stream 可以被用來作為告警(alert)。可參考 Alerts 的部分。

跟 saved searches 的差別?

Stream 跟 saved search 最大的不同是,streams 是即時地被處理,所以可以即時地告警以及轉送到其他系統中。若你需要將 database errors 轉送到其他系統或是需要定期的將這些 errors 從 message 儲存的地方寫到某個檔案中,即時地 streams 會做得比較好。

另外一個差異是,跟複雜的 stream 規則集(rule sets)比起來,搜尋(search)的執行效率較低,因為 message 在被處理的時候,會被標記(tag) stream ID。 不管你設定了多少條 stream 規則,在 Graylog 中搜尋總是會看起來像這樣:

https://docs.graylog.org/en/latest/pages/streams.html

建立一個包含所有規則的搜尋 query 會導致很高的負載(load)在 message storage 上。

因為它一份文件太長了,所以分篇寫摟~!

--

--