ELK: logstash gork filter 多個模式(pattern)匹配規則語法和多行日志匹配設置

項目里用logstash分析日志,由于有多種模式(pattern)需要匹配,網上搜了很多示例,發現這些都是老的寫法,都會報錯,后來查閱了官方文檔,才發現,新版本只支持新語法。
錯誤的語法:

        if "batch-trans" in [tags] {grok {match => ["message","\[(?<logDate>[\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}\s+d{1,2}:d{1,2}:d{1,2}]*)\]\s+\[(?<mainJobId>(?:[+-]?(?:[0-9]+)))\-(?<subJobId>(?:[+-]?(?:[0-9]+)))\-(?<shardingId>(?:[+-]?(?:[0-9]+)))\]\s+\[(?<traceId>[^\]]*)\]\s+\[(?<jobName>[^\]]*)\]\s+\[(?<threadId>[^\]]*)\]\s+\[(?<zoneId>[^\]]*)\]\s+\[(?<traceType>[^\]]*)\]\s+\[(?<cost>[^\]]*)\]\s+\[(?<splitZoneId>[^\]]*)\]\s+\[(?<url>[^\]]*)\]\s+\[(?<subJobId>[^\]]*)\](?<msg>.*)","message","\[(?<logDate>[\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}\s+d{1,2}:d{1,2}:d{1,2}]*)\]\s+\[(?<mainJobId>(?:[+-]?(?:[0-9]+)))\-(?<subJobId>(?:[+-]?(?:[0-9]+)))\]\s+\[(?<traceId>[^\]]*)\]\s+\[(?<jobName>[^\]]*)\]\s+\[(?<threadId>[^\]]*)\]\s+\[(?<zoneId>[^\]]*)\]\s+\[(?<traceType>[^\]]*)\]\s+\[(?<cost>[^\]]*)\]\s+\[(?<splitZoneId>[^\]]*)\]\s+\[(?<url>[^\]]*)\]\s+\[(?<subJobId>[^\]]*)\](?<msg>.*)",]}}

正確的語法:

filter {if "accounting-log" in [tags] {grok {match => {"message" => ["^\[(?<log-time>[\s\S]*)\]\s+%{LOGLEVEL:log-level}\s\[%{DATA:trace-id}\]\s\[%{DATA:thread-name}\s*\]\s\[%{DATA:logger}\s*: %{NUMBER:line-no}\] \[%{DATA:zone-id}\]\sJob-Sharding-Params: jobId=%{NUMBER:job-id}, transCode=*%{NUMBER:trans-code}, shardingId=*%{NUMBER:sharing-id}, shardingTable=*%{DATA:sharding-table}, JobParameters=\{%{GREEDYDATA:job-parameters}\}","^\[(?<log-time>[\s\S]*)\]\s+%{LOGLEVEL:log-level}\s\[%{DATA:trace-id}\]\s\[%{DATA:thread-name}\s*\]\s\[%{DATA:logger}\s*:\s*%{NUMBER:line-no}\]\s\[%{DATA:zone-id}\]\s%{GREEDYDATA:msg}"]}}}}
}

注意,先后順序很重要,上面示例中,如果排錯了順序,后面規則永遠匹配不到,都會被前面的規則搶先了。
為方便大家拿來主義,上面示例對應的logback配置如下:

logback:<property name="NORMAL_FILE_LOG_PATTERN"value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %5p [%0.16X{traceId}] [%-12.12t] [%-40.40logger{39}:%3L] [%0.2X{zoneId}] %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" />gork:
"^\[(?<log-time>[\s\S]*)\]\s+%{LOGLEVEL:log-level}\s\[%{DATA:trace-id}\]\s\[%{DATA:thread-name}\s*\]\s\[%{DATA:logger}\s*:\s*%{NUMBER:line-no}\]\s\[%{DATA:zone-id}\]\s%{GREEDYDATA:msg}"

另外,為了讓一條日志包含多行(如,異常日志),應該做如下配置:

input{file {path => "/logs/accounting-service.log"type => "system"tags => ["accounting-log"]codec => multiline {pattern => "^(\[.+\] )" #這兒就是說多行要匹配到一行開頭:[******]跟隨一個空格的形式negate => truewhat => "previous"auto_flush_interval => 2 #這行非常重要,就是2秒內如果沒新的內容,就認為這條日志結束了,否則最后一條日志永遠就是要等到有下一條日志進來才會被采集}start_position => "beginning"}
}

參考官方文檔:(搜索“multiple patterns”)
https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166163.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166163.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166163.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【MISRA-C 2012】濃縮版解讀

文章目錄 1、前言2、簡介2.1、如何看待MISRA-C 20122.2、準則(guidelines)里面的指示(Directive)和規則(Rule)2.3、準則(guidelines)的級別(Category) 3、若干重要的Directive和Rule3.1、指示(Directive)Dir 2.1&#xff08;必要&#xff09; 所有的源文件編譯過程不得有編譯錯…

聚類筆記/sklearn筆記:Affinity Propagation親和力傳播

1 算法原理 1.1 基本思想 將全部數據點都當作潛在的聚類中心(稱之為 exemplar )然后數據點兩兩之間連線構成一個網絡( 相似度矩陣 )再通過網絡中各條邊的消息( responsibility 和 availability )傳遞計算出各樣本的聚類中心。 1.2 主要概念 Examplar聚類中心similarity S(i…

Java Excel Poi 單元格內置的數據格式

位置 //在類 org.apache.poi.ss.usermodel.BuiltinFormats 中的私有成員變量_formats中 private static final String[] _formats new String[]{"General", "0", "0.00", "#,##0", "#,##0.00", "\"$\"#,##…

【ARM CoreLink 系列 3.2 -- CCI-400,CCI-500, CCI-550 差異】

文章目錄 CCI-400 和 CCI-500 差異ARM CCI-400ARM CCI-500ARM CCI-550CCI-400 和 CCI-500 差異 ARM的 CCI(Cache Coherent Interconnect)系列產品是用于多核處理器之間的高性能緩存一致性互連。CCI-400 和 CCI-500 是該系列中的兩種設計,它們旨在允許多個處理器核心和其他資…

TopNet-(CVPR2023)前背景圖像合成

文章目錄 摘要引言算法架構結構損失函數 實驗數據集評估SOTA比較模型是否過擬合到修復區域泛化到真實圖片消融實驗 討論及結論限制 參考文獻 摘要 作者調研自動放置目標到背景進行圖像合成的問題。提供背景圖、分割的目標&#xff0c;訓練模型預測合理放置信息&#xff08;位置…

JavaScript文檔加載和文檔準備的區別

你可能已經聽說過JavaScript中的“文檔加載”和“文檔準備”這兩個術語。雖然它們聽起來很相似&#xff0c;但它們實際上有一些重要的區別。在本文中&#xff0c;我們將深入探討這兩個概念的區別&#xff0c;以及它們在實際編碼中的應用。 引言 在開始討論JS文檔加載和文檔準備…

批量添加PPT備注

我一直都覺得&#xff0c;用python高效辦公&#xff0c;是件沒必要的事。。。 但直到最近寫課做PPT&#xff0c;做了80多頁PPT&#xff0c;要把每一頁PPT的備注粘貼進去時 我覺得&#xff0c;有什么關系呢&#xff0c;一頁一頁粘 但是粘到5頁&#xff0c;我感覺ctlc\v頻率有點兒…

程序員接單,寶藏好平臺抄底攻略清單!五大平臺精選。

前陣子“雙十一”購物節狂歡促銷&#xff0c;各種好貨清單席卷而來。 程序員購不購物我不知道&#xff0c;但是這個兼職、接單清單相信你一定用得著。 搜羅海量信息&#xff0c;整理大量數據與評價&#xff0c;挖出了5個寶藏平臺&#xff0c;絕對個個精選&#xff0c;保證量大…

圖片轉換成pdf格式的軟件ABBYY16

ABBYY PDF這款提供多種圖像處理選項&#xff0c;可提高源圖像的質量&#xff0c;便于準確地識別光學字符。我們掃描紙質文檔或從圖像文件創建 PDF 時&#xff0c;務必選擇合適的圖像處理選項。而在ABBYY PDF 中包含下列圖像處理選項。 識別文本 — 選擇此選項會將文本層放在圖…

(保姆級教程)Mysql中索引、觸發器、存儲過程、存儲函數的概念、作用,以及如何使用索引、存儲過程,代碼操作演示

講解 MySQL 中索引、觸發器、存儲過程、存儲函數的使用 文章目錄 1. 索引1.1 索引的分類1.2 索引的設計原則1.3 如何使用&#xff08;create index&#xff09; 2. 觸發器2.1 觸發器的分類2.2 如何使用&#xff08;create trigger&#xff09; 3. 存儲過程3.1 如何使用&#xf…

SpringBoot調用HTTP接口

1. RestTemplate 首先引入依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> 編寫配置類 Configuration public class RestTemplateConfig {Beanpublic Re…

Git拉取遠程倉庫代碼覆蓋本地,也就是放棄本地修改

git撤銷本地 、強制拉取遠程代碼覆蓋本地-CSDN博客 說的最多的是用&#xff1a;git fetch --all 但是親測是無效的&#xff0c;并不能將本地不存在但遠程倉庫存在的文件取回來。就是git fetch 項目地址&#xff0c;也是沒用的&#xff01; 就算是重新pull整個項目&#xff0…

Django中間件

目錄 一.介紹 1.什么是Django中間件 2.作用&#xff1a; 3.示例 二.Django請求生命周期流程圖 三.Django中間件是Django的門戶 四.中間件方法 1.必須掌握的中間件方法 &#xff08;1&#xff09;process_request: 示例&#xff1a; 2.需要了解的中間件方法 &#x…

新生兒散光:原因、科普和注意事項

引言&#xff1a; 散光是一種常見的眼睛問題&#xff0c;雖然在新生兒時期相對較少見&#xff0c;但了解其原因、科普相關知識&#xff0c;并提供一些建議的注意事項&#xff0c;對于嬰兒的視力健康至關重要。本文將深入探討新生兒散光的原因、相關科普知識&#xff0c;并為父…

大廠前沿技術導航

百度Geek說 - 知乎 騰訊技術 - 知乎 美團技術團隊

YaRN方法:無需微調,高效擴展語言模型上下文窗口/螞蟻集團與浙大發布原生安全框架v1.0,引領企業網絡安全新時代 |魔法半周報

我有魔法?為你劈開信息大海? 高效獲取AIGC的熱門事件&#x1f525;&#xff0c;更新AIGC的最新動態&#xff0c;生成相應的魔法簡報&#xff0c;節省閱讀時間&#x1f47b; &#x1f525;資訊預覽 YaRN方法&#xff1a;無需微調&#xff0c;高效擴展語言模型上下文窗口 螞蟻…

2023 hnust 湖南科技大學 信息安全管理課程 期中考試 復習資料

前言 ※老師沒畫重點的補充內容★往年試卷中多次出現或老師提過的&#xff0c;很可能考該筆記是奔著及格線去的&#xff0c;不是奔著90由于沒有聽過課&#xff0c;部分知識點不一定全&#xff0c;答案不一定完全正確 題型 試卷有很多題是原題 判斷題&#xff08;PPT&#xff…

python-冒泡排序

冒泡排序 &#xff08;穩定&#xff09; O(n^2) (穩定&#xff1a;表示相等的數&#xff0c;相對位置會不會改變) 冒泡排序&#xff08;Bubble Sort&#xff09;是一種簡單的排序算法&#xff0c;它通過多次遍歷待排序的元素&#xff0c;比較相鄰兩個元素的大小并交換它們&…

Kafka 常用功能總結(不斷更新中....)

kafka 用途 業務中我們經常用來兩個方面 1.發送消息 2.發送日志記錄 kafka 結構組成 broker&#xff1a;可以理解成一個單獨的服務器&#xff0c;所有的東西都歸屬到broker中 partation&#xff1a;為了增加并發度而做的拆分&#xff0c;相當于把broker拆分成不同的小塊&…

黨建信息管理系統源碼 支持在線交黨費 附帶完整的搭建教程

傳統的黨建管理模式通常采用手工方式&#xff0c;不僅效率低下&#xff0c;而且容易出錯。隨著組織規模的擴大和黨員數量的增加&#xff0c;這種管理方式已經無法滿足現實需求。此外&#xff0c;傳統的黨建管理模式缺乏在線交黨費功能&#xff0c;給黨員帶來不便。因此&#xf…