iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0

要在 Graylog 中實現日誌的端到端處理,主要分為三個階段:Streams 規則Pipelines目的地(索引 / 輸出)。本文以將示範如何配置並串接這三個環節,完成基本的資料路由與處理。

一、Streams 規則:篩選日誌流

Streams 用於將日誌劃分到不同的流中,依靠規則(Stream Rules)來過濾。只有符合條件的訊息才會進入指定的 Stream。

Stream: error_logs
Rule:
  欄位 message 包含 "ERROR"
  1. 在 Graylog Web 介面,前往 StreamsCreate Stream,命名為 error_logs
  2. 在該 Stream 下新增規則:選擇欄位 message,匹配方式 contains,關鍵字 ERROR
  3. 啟用並儲存 Stream。

此後,所有訊息內容含有 “ERROR” 的日誌都會被路由到 error_logs 流中。

二、Pipelines:處理與豐富化日誌

Pipelines 可在訊息寫入索引前,對其進行格式化、欄位提取或標籤補充。步驟如下:

  1. 建立 Pipeline:在 ProcessingPipelines 中新增。
  2. 撰寫規則:在 Rules 分頁編輯 Rule。
  3. 套用至 Pipeline:將規則加入 Pipeline,設定階段(Stage)順序。

範例:為錯誤日誌新增 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

三、目的地:索引與輸出

1. 索引(Index)

處理完成的訊息預設存入 OpenSearch 索引。

  • SystemIndices 檢視與管理索引集區。
  • 建議針對不同 Streams 建立專屬索引,例如 error_index,以便後續搜尋與歸檔。

2. 輸出(Output)

Graylog Open 僅支援以下兩種外部轉發方式:

  • STDOUT Output:將訊息輸出至控制台,用於測試或串接外部收集。
  • GELF Output:以 Graylog Extended Log Format 轉發至其他 Graylog 或 GELF 支援系統。

設定 GELF Output 範例:

  1. Streams → 選擇 error_logsManage OutputsGELF
  2. 填寫目標主機(Host)、埠號(Port)及傳輸協定(TCP/UDP)。
  3. 儲存並啟用。

STDOUT 輸出範例:

type: stdout

可用於將處理後的訊息直接顯示於 Graylog 伺服器日誌中,方便即時偵錯。

四、完整流程示意

# mermaid
flowchart LR
    A[日誌輸入] --> B[Streams 規則]
    B --> C[Pipelines 處理]
    C --> D[寫入索引]
    C --> E[STDOUT/GELF 輸出]
  1. 日誌輸入:透過 Input 接收原始日誌。
  2. Streams 規則error_logs 流僅過濾 ERROR 日誌。
  3. Pipelines:運行 “add_severity” 規則,為訊息新增 severity 欄位。
  4. 目的地
    • 寫入專屬索引 error_index
    • 同時透過 GELF 將訊息轉發至另一個 Graylog 或輸出至 Graylog 日誌。

補充:STDOUT Output 與 GELF Output 用法

STDOUT Output
適合在測試或開發階段使用,能將處理後的訊息直接寫到 Graylog 伺服器的標準輸出(console)。

outputs:
  - type: stdout

配置步驟:

  1. StreamsManage OutputsAdd Output,選擇 Stdout
  2. 儲存即可。
    這種方式不會將訊息發送到外部系統,而是方便即時查看格式化後的日誌內容。

GELF Output
常用於將日誌轉發到其他 Graylog 節點或支援 GELF 協定的系統,例如 Logstash、Fluentd 等。

outputs:
  - type: gelf
    host: 192.168.1.100
    port: 12201
    protocol: UDP

配置步驟:

  1. StreamsManage OutputsAdd Output,選擇 GELF
  2. 填入目標主機(Host)、埠號(Port)與傳輸協定(TCP/UDP)。
  3. 儲存並啟用。
    GELF 轉發可確保訊息結構化,並支援自訂欄位傳輸。

上一篇
Day 11: 流 (Streams) 配置與路由
系列文
從零開始的 graylog 探險12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言