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.mzph.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;用户对代理服务器的安全性要求也越来越高…