流(Streams)是 Graylog 中用於實時消息分類與路由的關鍵功能。
它能夠根據定義的規則將輸入的日誌消息自動分發到不同的目標,實現日誌的有序管理和高效檢索。
在 Graylog 中,所有消息默認會流入 Default Stream,這個內建的流無法刪除或暫停。
通過創建自定義流和配置流規則,我們可以將特定條件的消息路由到指定的索引集或輸出目標。
假設我們有多個應用通過 GELF UDP 輸入發送日誌,需要按應用名稱分流處理:
步驟 1:創建新流
步驟 2:配置流規則
對於更複雜的路由需求,可以組合多個規則,例如:
Rule 1: source = "192.168.1.100"
Rule 2: level >= 3
Match type: ALL (AND邏輯)
這將匹配來自特定主機且日誌級別大於等於 3 以上的消息。
通過 GELF UDP 接收的應用日誌通常包含 application_name
或其它自定義欄位。利用這些可以實現精確分流:
application_name = "mysql"
application_name = "nginx"
_app_name = "my_web_app"
Critical Stream: level <= 2
Warning Stream: level = 4
Info Stream: level >= 6
這樣的配置能夠將不同嚴重程度的日誌分別路由到對應的索引,便於後續的告警配置和分析處理。
性能考量:流規則在消息索引階段執行,規則複雜度直接影響系統性能。建議使用簡單的字段匹配而非複雜的正則表達式。
移除默認流:創建流時可選擇 Remove matches from 'Default Stream',避免消息重複存儲,節省存儲空間。
規則測試:配置完成後,務必規則是否正確匹配預期消息,確保路由邏輯符合需求。
通過合理的流配置,能夠實現日誌的自動化分類管理,為後續的檢索分析、告警配置和儀表板創建奠定堅實基礎。