最近項目用到logstash,要求利用grok截取日誌消息中某一指定長度的內容。
Logstatsh需要兩個必需參數input、output,以及一個可選參數filter。input用於輸入數據的設置,output用於輸出數據的設置。filter是實現數據過濾的設置。grok是在filter裏面實現數據截取。
項目有一串協議消息如 7e8900000c040116432693324af0010180010005e98e0706000a7e,要求利用grok截取7e後面的四個字符,利用grok正則表達式即可實現。
實現代碼如下:
filter{
grok{
match => {
"message" => "(?<mid>(?<=7e)(.{4}))"
}
}
}
輸出結果爲:
"mid" => "8900"
代碼解釋:
message:即輸入的數據信息。
mid:即輸出結果的名稱
(?<=7e):即表示獲取7e後面的字符,但不包括7e
(.{4}):即表示獲取的字符長度爲4個。
參考文章:
[1]. https://blog.csdn.net/cai750415222/article/details/86614854