logstash grok匹配nginx日誌示例

2021-09-29 07:50:00 字數 2713 閱讀 1442

logstash內部定義(匹配正則):

/usr/local/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns

nginx日誌grok過濾示例:

nginx日誌格式如下:

logstash過濾規則配置如下:

}grok debugger除錯工具:

官方翻譯部分:

grok

的工作原理是將文字模式組合成與日誌匹配的內容。

grok

模式的語法是%

語法是匹配文字的模式的名稱。例如,

3.44

匹配數字模式,

55.3.244.1

匹配ip

模式。語法是如何匹配的。

語義是您為匹配的文字提供的識別符號。例如,

3.44

可以是事件的持續時間,因此可以簡單地將其稱為持續時間。此外,字串

55.3.244.1

可能標識發出請求的客戶機。

對於上面的例子,您的

grok

過濾器應該是這樣的:

% %

您還可以選擇向

grok

模式新增資料型別轉換。預設情況下,所有語義都儲存為字串。如果希望轉換語義的資料型別,例如,將字串更改為整數,然後將其字尾為目標資料型別。例如

%,它將

num語義從字串轉換為整數。目前唯一支援的轉換是

int和

float。

例子:有了語法和語義的概念,我們可以從乙個示例日誌中提取有用的字段,比如這個虛構的

請求日誌

:

55.3.244.1 get /index.html 15824 0.043
其模式可能是

:

% % % % %
乙個更實際的例子,讓我們從乙個檔案中讀取這些日誌

:

input
}
filter  % % % %" }
}
}

grok

過濾器之後,事件中會有一些額外的字段:

常規expressionsedit

grok

位於正規表示式之上,因此任何正規表示式在

grok

中都是有效的。正規表示式庫是

oniguruma

,您可以在

oniguruma

站點上看到完全支援的

regexp

語法。

自定義patternsedit 有時

logstash

沒有您需要的模式。對此,您有幾個選項。

首先,你可以使用

oniguruma

的命名捕獲語法,這將讓你匹配一段文字,並儲存為乙個字段

:

(?the pattern here)
例如,

postfix

日誌的佇列id是

10或11個字元的十六進製制值。我可以像這樣很容易地捕捉到

:

(?[0-9a-f])
另外,您可以建立乙個自定義模式檔案。

建立乙個名為

patterns

的目錄,其中包含乙個名為

extra

的檔案(

檔名無關緊要,但您可以為自己取乙個有意義的名稱)

在該檔案中,將需要的模式作為模式名稱、空格,然後為該模式編寫

regexp。

例如,執行上面的

postfix

佇列id示例:

# contents of ./patterns/postfix:
postfix_queueid [0-9a-f]
然後使用這個外掛程式中的

patterns_dir

設定來告訴

logstash

自定義模式目錄的位置。下面是乙個完整的例子與樣本日誌

:

jan  1 06:25:43 mailserver14 postfix/cleanup[21403]: bef25a72965: message-id=<[email protected]>
filter  %: %" }
}
}
以上將匹配並在以下欄位中得到結果:

附kibana頁面內建grok除錯工具:

logstash grok 多項匹配

業務場景 新版本日誌需要新增字段,需要相容新舊日誌匹配 版本 logstash 2.3 filter message remove field type id input type tags message beat offset filter 太多使用data和greedydaya會導致效能cpu...

logstash grok正則案例

aug 6 201120 34 46huawei 01hwcm 5 exit l 1 exit from configure mode jan 8 201303 58 15 07 00huawei 01hwcm 5 exit l 1 exit from configure mode s s s 空白...

logstash grok正則語法規則

這幾天一直在研究elk的搭建和使用,遇到logstash 的grok模組的時候,被困擾了很久,網上搜尋很多資料,大部分都是殘缺不全的並且很多都是 點到為止 為了理解方便,我們先來舉乙個例子更加直觀 2019 06 18t16 21 17.237207 08 00 12350 note aborted...