logstash之grok插件自定義規則學習

文章目錄

    • 1、前言
    • 2、Grok提供的常用Patterns說明及舉例
      • 2.1 常用的表達式說明
    • 3、使用grok插件進行日志字段處理
    • 4、案例1:處理nginx的日志
      • 4.1、查看nginx日志格式
      • 4.2、對nginx的日志進行過濾處理
    • 5、案例2:處理tomcat的日志
      • 5.1、[安裝logstash-filter-multiline](https://blog.csdn.net/weixin_44729138/article/details/115747384)
      • 5.2、對tomcat的日志進行過濾處理

1、前言

近期通過ELK(Elasticsearch, Logstash, Kibana)對Nginx產生的日志進行采集(往期文章),但是在對nginx的日志格式進行預處理的時候使用到了logstash的grok的插件,特意在此為大家分享下個人的學習總結。

2、Grok提供的常用Patterns說明及舉例

要學習Grok的默認表達式,我們就要找到它的具體配置路徑,路徑如下:

patterns路徑
[logstash安裝路徑]/vendor/bundle/jruby/x.x.x/gems/logstash-patterns-core-x.x.x/patterns

如我的如下:

/u01/isi/application/index/logstash-7.10.0/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.1.2/patterns

2.1 常用的表達式說明

鏈接地址:https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/legacy/grok-patterns

  • USERNAME 或 USER
    用戶名:由數字、大小寫及特殊字符(._-)組成的字符串。如:Tom、323、isi_186等
  • EMAILLOCALPART
    電子郵件用戶名部分:首位由大小寫字母組成,其他位由數字、大小寫及特殊字符(_.±=:)組成的字符串。
    注意,國內的QQ純數字郵箱賬號是無法匹配的,需要修改正則。比如:stone、Gary_Lu、abc-123等
  • EMAILADDRESS
    電子郵件,比如:stone@abc.com、Gary_Lu@gmail.com、abc-123@163.com等
  • HTTPDUSER
    Apache服務器的用戶,可以是EMAILADDRESS或USERNAME
  • INT
    整數:包括0和正負整數,比如:0、-123、43987等
  • BASE10NUM 或 NUMBER
    十進制數字:包括整數和小數,比如:0、18、5.23等
  • BASE16NUM
    十六進制數字,整數,比如:0x0045fa2d、-0x3F8709等
  • BASE16FLOAT
    十六進制數字,整數和小數
  • WORD
    字符串,包括數字和大小寫字母
    比如:String、3529345、ILoveYou等
  • NOTSPACE
    不帶任何空格的字符串
  • SPACE
    空格字符串
  • QUOTEDSTRING 或 QS
    帶引號的字符串,比如:“This is an apple”、'What is your name?'等
  • UUID
    標準UUID,比如:550E8400-E29B-11D4-A716-446655440000
  • MAC
    MAC地址,可以是Cisco設備里的MAC地址,也可以是通用或者Windows系統的MAC地址
  • IP
    IP地址,IPv4或IPv6地址
    比如:127.0.0.1、FE80:0000:0000:0000:AAAA:0000:00C2:0002等
  • HOSTNAME
    主機名稱
  • IPORHOST
    IP或者主機名稱
  • HOSTPORT
    主機名(IP)+端口,比如:127.0.0.1:3306、api.stozen.net:8000等
  • PATH
    路徑,Unix系統或者Windows系統里的路徑格式,比如:/usr/local/nginx/sbin/nginx、c:\windows\system32\clr.exe等
  • URIPROTO
    URI協議,比如:http、ftp等
  • URIHOST
    URI主機,比如:www.stozen.net、10.0.0.1:22等
  • URIPATH
    URI路徑,比如://www.stozen.net/abc/、/api.php等
  • URIPARAM
    URI里的GET參數,比如:?a=1&b=2&c=3
  • URIPATHPARAM
    URI路徑+GET參數,比如://www.stozen.net/abc/api.php?a=1&b=2&c=3
  • URI
    完整的URI,比如:http://www.stozen.net/abc/api.php?a=1&b=2&c=3
  • MONTH
    月份名稱,比如:Jan、January等
  • MONTHNUM
    月份數字,比如:03、9、12等
  • MONTHDAY
    日期數字,比如:03、9、31等
  • DAY
    星期幾名稱,比如:Mon、Monday等
  • YEAR
    年份數字
  • HOUR
    小時數字
  • MINUTE
    分鐘數字
  • SECOND
    秒數字
  • TIME
    時間,比如:00:01:23
  • DATE_US
    美國日期格式,比如:10-15-1982、10/15/1982等
  • DATE_EU
    歐洲日期格式,比如:15-10-1982、15/10/1982、15.10.1982等
  • ISO8601_TIMEZONE
    ISO8601時間格式,比如:+10:23、-1023等
  • TIMESTAMP_ISO8601
    ISO8601時間戳格式,比如:2016-07-03T00:34:06+08:00
  • DATE
    日期,美國日期%{DATE_US}或者歐洲日期%{DATE_EU}
  • DATESTAMP
    完整日期+時間,比如:07-03-2016 00:34:06
  • HTTPDATE
    http默認日期格式,比如:03/Jul/2016:00:36:53 +0800
  • LOGLEVEL
    Log表達式,日志等級,比如:Alert、alert、ALERT、Error等

3、使用grok插件進行日志字段處理

grok在線工具:https://www.5axxw.com/tools/v2/grok.html
但是鑒于這個太慢太卡了,我自己用docker搭建一個,總共也就三步走:

  1. docker pull epurs/grokdebugger #拉取鏡像
  2. docker run -itd --name=grok -p8000:80 epurs/grokdebugger #運行容器
  3. 頁面訪問http://192.168.16.115:8000/
    在這里插入圖片描述

4、案例1:處理nginx的日志

4.1、查看nginx日志格式

在這里插入圖片描述

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
  1. $remote_addr:客戶端ip
  2. $remote_user:客戶端的用戶,通過在做了nginx訪問控制后顯示訪問的用戶名,否則為"-"
  3. $time_local:訪問時間和時區
  4. $request:請求的URI和HTTP協議
  5. $status:HTTP請求狀態
  6. $body_bytes_sent:發送給客戶端文件內容大小
  7. $http_referer:url跳轉來源
  8. $http_user_agent:用戶終端瀏覽器等信息
  9. $http_x_forwarded_for:用戶代理/蜘蛛、被轉發請求的原始ip
    ``
    在這里插入圖片描述

4.2、對nginx的日志進行過濾處理

以下為nginx中的一段access.log日志

124.71.129.73 - - [15/Apr/2021:11:19:14 +0800] "GET /proxy/count.haiwainet.cn/imgpv/592/5c7498c75a6acaa1ae50.png HTTP/1.0" 404 548 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.76" "118.26.130.253"
202.168.188.174 - - [15/Apr/2021:11:19:14 +0800] "GET /rongmeiti-wenhai-hongqi/openAPI/token/reflashToken HTTP/1.1" 200 53 "-" "Apache-HttpClient/4.5.2 (Java/1.8.0_202)" "-"
124.71.129.73 - - [15/Apr/2021:11:19:14 +0800] "POST /wenhai-api/essql/getDataBySql HTTP/1.0" 200 199940 "-" "Apache-HttpClient/4.5.2 (Java/1.8.0_221)" "111.32.83.42"
124.71.129.73 - - [15/Apr/2021:11:19:14 +0800] "POST /wenhai-api/essql/getDataBySql HTTP/1.0" 200 139 "-" "Apache-HttpClient/4.5.2 (Java/1.8.0_221)" "111.32.83.42"
60.194.35.67 - - [15/Apr/2021:11:19:14 +0800] "POST /wenhaiFt-datapush/openAPI/analysis/getSearchInfosInRaw HTTP/1.1" 200 2953812 "-" "Apache-HttpClient/4.5.13 (Java/1.8.0_112)" "-"
過濾規則表達式
%{IPV4:remote_ip} \- \- \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}\" %{NUMBER:status} %{NUMBER:bytes} \"%{NOTSPACE:domain}\" \"%{GREEDYDATA:access_url}\" \"%{GREEDYDATA:real_ip}\"

5、案例2:處理tomcat的日志

5.1、安裝logstash-filter-multiline

詳見地址:https://blog.csdn.net/weixin_44729138/article/details/115747384

不修改tomcat的日志配置

5.2、對tomcat的日志進行過濾處理

19-Mar-2021 14:45:06.943 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/root/pkg/apache-tomcat-9.0.33/webapps/docs]
19-Mar-2021 14:45:06.953 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/root/pkg/apache-tomcat-9.0.33/webapps/docs] has finished in [10] ms
19-Mar-2021 14:45:06.555 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/root/pkg/apache-tomcat-9.0.33/temporg.apache.catalina.LifecycleException: Protocol handler initialization failedat org.apache.catalina.core.StandardService.initInternal(StandardService.java:533)at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.lang.reflect.Method.invoke(Method.java:498)Caused by: java.net.BindException: Address already in useat sun.nio.ch.Net.bind0(Native Method)at sun.nio.ch.Net.bind(Net.java:433)at sun.nio.ch.Net.bind(Net.java:425)at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)at org.apache.tomcat.util.net.NioEndpoint.initServerSocket(NioEndpoint.java:229)at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:212)at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1141)at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1154)at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:581)at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:74)at org.apache.catalina.connector.Connector.initInternal(Connector.java:1010)... 13 more
19-Mar-2021 14:45:06.775 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [383] milliseconds
19-Mar-2021 14:45:06.794 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
過濾規則表達式
%{NOTSPACE:Day_time} %{NOTSPACE:Day} %{LOGLEVEL} \[%{WORD}\] %{GREEDYDATA :message}

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

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

相關文章

外包干了3個月,技術退步明顯.......

先說一下自己的情況,大專生,18年通過校招進入武漢某軟件公司,干了接近4年的功能測試,今年年初,感覺自己不能夠在這樣下去了,長時間呆在一個舒適的環境會讓一個人墮落! 而我已經在一個企業干了四年的功能測…

【MySQL】在 Centos7 環境下安裝 MySQL

環境搭建 一、檢查環境二、檢查系統安裝包三、安裝 mysql yum 源四、安裝 mysql 服務五、啟動服務六、登錄 mysql七、配置 my.cnf 注意,我們搭建的 mysql 環境是在 Linux 的 Centos7 環境下安裝的~ 一、檢查環境 注意,我們在安裝和卸載中,先…

pytorch 中 drop_last與 nn.Parameter

1. drop_last 在使用深度學習,pytorch 的DataLoader 中, from torch.utils.data import DataLoader# Define your dataset and other necessary configurations # Create DataLoader train_loader DataLoader(dataset, batch_sizebatch_size, drop_la…

vue項目列表跳轉詳情返回列表頁保留搜索條件

需求 列表進入詳情后,返回詳情的時候保留搜索的條件,第幾頁進入的返回還在第幾頁 1.在詳情頁設置定義一個字段 mounted() {sessionStorage.setItem("msgInfo", true);},2.在獲取列表數據的時候在mounted里面判斷定義的字段 if (sessionStor…

【EI會議征稿】第二屆純數學、應用數學與計算數學國際學術會議(PACM 2024)

第二屆純數學、應用數學與計算數學國際學術會議(PACM 2024) 2024 2nd International Cnference on Pure, Applied and Computational Mathematics (PACM 2024) 第二屆純數學、應用數學計算數學國際學術會議 (PACM2024) 將于2024年1月19-21日在中國廈門隆…

報錯:AttributeError: ‘DataFrame‘ object has no attribute ‘reshape‘

這個錯誤通常發生在你試圖在 Pandas DataFrame 上直接使用 reshape 方法時。reshape 方法通常與 NumPy 數組相關聯,而不是 Pandas DataFrame。 如果你正在使用 Pandas DataFrame 并希望重新塑造它,你應該使用 Pandas 的重塑函數,如 pivot、m…

linux常用命令大全50個Linux常用命令

Linux有許多常用的命令,這些命令可以用來管理文件、運行程序、查看系統狀態等。以下是一些常用的Linux命令: pwd:顯示當前所在的工作目錄的全路徑名稱。cd:用于更改當前工作目錄,例如,若要進入Documents目…

UE5 樹葉飄落 學習筆記

一個Plane是由兩個三角形構成的,所以World Position Offset,只會從中間這條線折疊 所有材質 這里前幾篇博客有說這種邏輯,就是做一個對稱的漸變數值 這里用粒子的A值來做樹葉折疊的程度,當然你也可以用Dynamic Param 這樣就可以讓…

Android 11.0 長按按鍵切換SIM卡默認移動數據

Android 11.0 長按按鍵切換SIM卡默認移動數據 近來收到客戶需求想要通過長按按鍵實現切換SIM卡默認移動數據的功能,該功能主要通過長按按鍵發送廣播來實現,具體修改參照如下: 首先創建廣播,具體修改參照如下: /vend…

麒麟KYLINOS上刪除多余有線連接

原文鏈接:麒麟KYLINOS上刪除多余網絡有線連接 hello,大家好啊,今天我要給大家介紹的是在麒麟KYLINOS操作系統中,如何刪除通過Parallels Desktop虛擬機安裝時產生的多余有線連接。在使用Parallels Desktop虛擬機安裝麒麟桌面操作系…

C/C++ 題目:給定字符串s1和s2,判斷s1是否是s2的子序列

判斷子序列一個字符串是否是另一個字符串的子序列 解釋:字符串的一個子序列是原始字符串刪除一些(也可以不刪除)字符,不改變剩余字符相對位置形成的新字符串。 如,"ace"是"abcde"的一個子序…

服務器數據恢復—raid5少盤狀態下新建raid5如何恢復原raid5數據?

服務器數據恢復環境: 一臺服務器上搭建了一組由5塊硬盤組建的raid5陣列,服務器上層存放單位重要數據,無備份文件。 服務器故障&分析: 服務器上raid5有一塊硬盤掉線,外聘運維人員在沒有了解服務器具體情況下&#x…

如何在linux中使用rpm管理軟件

本章主要介紹使用rpm對軟件包進行管理。 使用rpm查詢軟件的信息 使用rpm安裝及卸載軟件 使用rpm對軟件進行更新 使用rpm對軟件進行驗證 rpm 全稱是redhat package manager,后來改成rpm package manager,這是根據源 碼包編譯出來的包。先從光盤中拷貝一…

[算法每日一練]-雙指針 (保姆級教程篇 1) #A-B數對 #求和 #元音字母 #最短連續子數組 #無重復字符的最長子串 #最小子串覆蓋 #方塊桶

目錄 A-B數對 解法一:雙指針 解法二:STL二分查找 解法三:map 求和 元音字母 最短連續子數組 無重復字符的最長子串 最小子串覆蓋 方塊桶 雙指針特點:雙指針絕不回頭 A-B數對 解法一:雙指針 先把數列排列成…

《C++新經典設計模式》之第8章 外觀模式

《C新經典設計模式》之第8章 外觀模式 外觀模式.cpp 外觀模式.cpp #include <iostream> #include <memory> using namespace std;// 中間層角色&#xff0c;隔離接口&#xff0c;兩部分模塊通過中間層打交道 // 提供簡單接口&#xff0c;不與底層直接打交道 // 提…

Grounding DINO、TAG2TEXT、RAM、RAM++論文解讀

提示&#xff1a;Grounding DINO、TAG2TEXT、RAM、RAM論文解讀 文章目錄 前言一、Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection1、摘要2、背景3、部分文獻翻譯4、貢獻5、模型結構解讀a.模型整體結構b.特征增強結構c.解碼結構 6、實…

使用Sourcetrail解析C項目

閱讀源碼的工具很多&#xff0c;今天給大家推薦一款別具一格的源碼閱讀神器。 它就是 Sourcetrail&#xff0c;一個免費開源、跨平臺的可視化源碼探索項目 使用

釋放深度學習的力量:使用 CUDA 和 Turing GPU 構建 AI

深度學習是一種人工智能的分支,它使用神經網絡模擬人類大腦的學習過程,從大量的數據中學習特征和規律。深度學習已經徹底改變了無數領域,從圖像和語音識別到自然語言處理和自動駕駛汽車。但是,要充分利用深度學習的強大功能,需要強大的工具,而 NVIDIA 的 Turing GPU 就是…

Faster R-CNN pytorch源碼血細胞檢測實戰(二)數據增強

Faster R-CNN pytorch源碼血細胞檢測實戰&#xff08;二&#xff09;數據增強 文章目錄 Faster R-CNN pytorch源碼血細胞檢測實戰&#xff08;二&#xff09;數據增強1. 資源&參考2. 數據增強2.1 代碼運行2.2 文件存放 3 數據集劃分4. 訓練&測試5. 總結 1. 資源&參…

靜態SOCKS5的未來發展趨勢和新興應用場景

隨著網絡技術的不斷發展和進步&#xff0c;靜態SOCKS5代理也在不斷地完善和發展。未來&#xff0c;靜態SOCKS5代理將會呈現以下發展趨勢和新興應用場景。 一、發展趨勢 安全性更高&#xff1a;隨著網絡安全問題的日益突出&#xff0c;用戶對代理服務器的安全性要求也越來越高…