Logstash - 日誌解析



Logstash 使用輸入外掛接收日誌,然後使用過濾器外掛解析和轉換資料。日誌的解析和轉換是根據輸出目標系統中存在的系統進行的。Logstash 解析日誌資料,僅轉發所需欄位。之後,這些欄位將轉換為目標系統相容且易於理解的形式。

如何解析日誌?

日誌解析是透過使用**GROK**(知識圖形表示)模式進行的,您可以在 Github 上找到它們:

https://github.com/elastic/logstash/tree/v1.4.2/patterns.

Logstash 將日誌資料與指定的 GROK 模式或模式序列匹配以解析日誌,例如“%{COMBINEDAPACHELOG}”,這通常用於 Apache 日誌。

解析後的資料結構更清晰,更易於搜尋和執行查詢。Logstash 在輸入日誌中搜索指定的 GROK 模式,並提取日誌中的匹配行。您可以使用 GROK 偵錯程式來測試您的 GROK 模式。

GROK 模式的語法為 %{SYNTAX:SEMANTIC}。Logstash GROK 過濾器採用以下形式:

%{PATTERN:FieldName}

這裡,PATTERN 代表 GROK 模式,fieldname 是欄位的名稱,它表示輸出中解析的資料。

例如,使用線上 GROK 偵錯程式 https://grokdebugger.com/

輸入

日誌中的一行示例錯誤:

[Wed Dec 07 21:54:54.048805 2016] [:error] [pid 1234:tid 3456829102]
   [client 192.168.1.1:25007] JSP Notice:  Undefined index: abc in
   /home/manu/tpworks/tutorialspoint.com/index.jsp on line 11

GROK 模式序列

此 GROK 模式序列與日誌事件匹配,該事件包括時間戳、日誌級別、程序 ID、事務 ID 和錯誤訊息。

\[(%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\] \[.*:%{LOGLEVEL:loglevel}\]
   \[pid %{NUMBER:pid}:tid %{NUMBER:tid}\] \[client %{IP:clientip}:.*\]
   %{GREEDYDATA:errormsg}

輸出

輸出採用 JSON 格式。

{
   "day": [
      "Wed"
   ],
   "month": [
      "Dec"
   ],
   "loglevel": [
      "error"
   ],
   "pid": [
      "1234"
   ],
   "tid": [
      "3456829102"
   ],
   "clientip": [
      "192.168.1.1"
   ],
   "errormsg": [
      "JSP Notice:  Undefined index: abc in
      /home/manu/tpworks/tutorialspoint.com/index.jsp on line 11"
   ]
}
廣告
© . All rights reserved.