要在 Graylog 中實現日誌的端到端處理,主要分為三個階段:Streams 規則、Pipelines 與 目的地(索引 / 輸出)。本文以將示範如何配置並串接這三個環節,完成基本的資料路由與處理。
Streams 用於將日誌劃分到不同的流中,依靠規則(Stream Rules)來過濾。只有符合條件的訊息才會進入指定的 Stream。
Stream: error_logs
Rule:
欄位 message 包含 "ERROR"
error_logs
。message
,匹配方式 contains
,關鍵字 ERROR
。此後,所有訊息內容含有 “ERROR” 的日誌都會被路由到 error_logs
流中。
Pipelines 可在訊息寫入索引前,對其進行格式化、欄位提取或標籤補充。步驟如下:
範例:為錯誤日誌新增 severity
欄位。
rule "add_severity"
when has_field("message") && contains(to_string($message.message), "ERROR")
then
set_field("severity", "high");
end
將此規則加入 Stage 0,並在 Pipelines 裡關聯至 error_logs
Stream。這樣,所有進入該 Pipeline 的錯誤訊息都會自動附加 severity: high
。
處理完成的訊息預設存入 OpenSearch 索引。
error_index
,以便後續搜尋與歸檔。Graylog Open 僅支援以下兩種外部轉發方式:
設定 GELF Output 範例:
error_logs
→ Manage Outputs → GELF。STDOUT 輸出範例:
type: stdout
可用於將處理後的訊息直接顯示於 Graylog 伺服器日誌中,方便即時偵錯。
# mermaid
flowchart LR
A[日誌輸入] --> B[Streams 規則]
B --> C[Pipelines 處理]
C --> D[寫入索引]
C --> E[STDOUT/GELF 輸出]
error_logs
流僅過濾 ERROR 日誌。severity
欄位。error_index
;STDOUT Output
適合在測試或開發階段使用,能將處理後的訊息直接寫到 Graylog 伺服器的標準輸出(console)。
outputs:
- type: stdout
配置步驟:
Stdout
。GELF Output
常用於將日誌轉發到其他 Graylog 節點或支援 GELF 協定的系統,例如 Logstash、Fluentd 等。
outputs:
- type: gelf
host: 192.168.1.100
port: 12201
protocol: UDP
配置步驟:
GELF
。