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/temp
        org.apache.catalina.LifecycleException: Protocol handler initialization failed
                at 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 use
                at 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}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/235693.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA安全之Spring参数绑定漏洞CVE-2022-22965

前言 在介绍这个漏洞前,介绍下在spring下的参数绑定 在Spring框架中,参数绑定是一种常见的操作,用于将HTTP请求的参数值绑定到Controller方法的参数上。下面是一些示例,展示了如何在Spring中进行参数绑定: 示例1&am…

7.25 SpringBoot项目实战【我的借阅记录】

文章目录 前言一、编写控制器二、编写服务层三、Git提交前言 至此,我们已经实现 图书借阅、收藏、评论等场景,最后来到【还书】场景,首先 还书的 入口 一般 是【我的借阅记录】,在这里可以根据产品设计,对于需要归还的书 操作【还书】,所以本文来实现【我的借阅记录】。…

喜讯 | 同立海源生物荣获北京市“专精特新”企业认定

喜 讯 近日,北京市经济和信息化局公示了2023年第三季度专精特新中小企业名单,北京同立海源生物科技有限公司凭借专业技术实力、创新研发能力、行业影响力以及卓越的企业文化,顺利通过专家层层评审与综合评估,荣获北京市“专精特…

大数据讲课笔记1.1 安装配置CentOS

文章目录 零、学习目标一、导入新课二、新课讲解(一)安装VMWare Workstation1、获取安装程序2、进入安装向导3、按提示完成安装 (二)虚拟网络编辑器1、启动虚拟网络编辑器2、选择VMnet8虚拟网3、更改网络配置4、查看DHCP设置5、查…

用PHP和HTML做登录注册操作数据库Mysql

用PHP和HTML做登录注册操作数据库Mysql 两个HTML页面&#xff0c;两个PHP,两个css,两张图片&#xff0c;源码资源在上方。 目录 HTML页面 login.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta nam…

Python基础(四、探索迷宫游戏)

Python基础&#xff08;四、探索迷宫游戏&#xff09; 游戏介绍游戏说明 游戏介绍 在这个游戏中&#xff0c;你将扮演一个勇敢的冒险者&#xff0c;进入了一个神秘的迷宫。你的任务是探索迷宫的每个房间&#xff0c;并最终找到隐藏在其中的宝藏。 游戏通过命令行界面进行交互…

工业总线I/O网关模块的作用有哪些?

工业网关是工业互联网中的重要组成部分&#xff0c;工业I/O网关模块I代表输入&#xff0c;O代表输出&#xff0c;I/O模块的核心是实现计算机硬件组件与外部世界之间的通信和数据传输。它可以将物联网设备和工业设备连接起来&#xff0c; 实现设备、系统、平台之间的数据交换和信…

【教程】逻辑回归怎么做多分类

目录 一、逻辑回归模型介绍 1.1 逻辑回归模型简介 1.2 逻辑回归二分类模型 1.3 逻辑回归多分类模型 二、如何实现逻辑回归二分类 2.1 逻辑回归二分类例子 2.2 逻辑回归二分类实现代码 三、如何实现一个逻辑回归多分类 3.1 逻辑回归多分类问题 3.1 逻辑回归多分类的代…

【华为鸿蒙系统学习】- HarmonyOS4.0开发|自学篇

​ &#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 HarmonyOS 4.0 技术介绍&#xff1a; HarmonyOS三大特征&#xff1a; 1.实现硬件互助&#…

【LeetCode热题100】【滑动窗口】找到字符串中所有字母异位词

给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 示例 1: 输入: s "cbaebabacd", p "…

运营商二要素API:验证姓名和手机号码一致性的关键工具

前言 在当今数字化时代&#xff0c;手机号码已成为人们日常生活中不可或缺的一部分。然而&#xff0c;由于各种原因&#xff0c;姓名和手机号码往往并非完全匹配。为了解决这一问题&#xff0c;运营商二要素API应运而生&#xff0c;它能够验证姓名和手机号码是否一致&#xff…

《Vue.js设计与实现》—Vue3响应系统的原理

一、响应式数据与副作用函数 1. 副作用函数 1-1 指令材料 在JavaScript中&#xff0c;副作用函数是指在执行过程中对外部环境产生可观察的变化或影响的函数。这种函数通常会修改全局变量、修改传入的参数、执行I/O操作&#xff08;如读写文件或发送网络请求&#xff09;、修…

四十三、Redis基础

目录 一、认识NoSql 1、定义&#xff1a; 2、常见语法 3、与关系型数据库&#xff08;SQL&#xff09;的区别&#xff1a; 二、认识Redis 1、定义&#xff1a; 2、特征&#xff1a; 3、Key的结构&#xff1a; 三、安装Redis 四、Redis常见命令 1、数据结构介绍 2、…

Hive HWI 配置

前言 1、下载安装好hive后&#xff0c;发现hive有hwi界面功能&#xff0c;研究下是否可以运行&#xff0c;于是使用hive –service hwi命令启动hwi界面报错。 启动hwi功能 2、访问192.168.126.110:9999/hwi&#xff0c;发现访问错误 一、HWI介绍 HWI&#xff08;Hive Web Int…

gRPC .net学习

学习helloworld server用.net client有.net的控制台 和 unity server端 直接使用vs2022创建(需自行看有无装asp.net哦),搜索gPRC,使用6.0吧&#xff0c;创建工程后直接F5跑起来,服务端到此完成 .net控制台client,创建新的控制台,使用NuGet,然后导入server端的Protos文件夹 学…

[C++] STL_priority_queue(优先级队列) 的使用及底层的模拟实现,容器适配器,deque的原理介绍

文章目录 1、priority_queue1.1 priority_queue的介绍和使用1.2 priority_queue的使用模拟实现&#xff1a; 2、容器适配器2.1 什么是适配器2.2 STL标准库中stack和queue的底层结构 3、deque3.1 deque的原理介绍3.2 deque的缺陷 4、为什么选择deque作为stack和queue的底层默认容…

11月客户文章盘点——累计IF 150.5

凌恩生物以打造国内一流生物公司为目标&#xff0c;在科研测序领域深耕不辍&#xff0c;吸纳多名在生物信息高级技术人员的加盟&#xff0c;参与并完成多个高科技项目。现已在宏组学、基因组、表观遗传以及蛋白代谢等多组学及联合分析领域积累了深厚经验&#xff0c;打造出成熟…

Qt图形设计

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口相关设置//设置窗口标题this->setWindowTitle("王者荣耀");//设置窗口图标this->setWindowIcon(QIcon("C:\\Users\\28033\\Pictures\\Saved Pictures\\pict…

STM32超声波——HC_SR04

文章目录 一.超声波图片二.时序图三.超声波流程四.单位换算五.取余计算六.换算距离七.超声波代码 一.超声波图片 测量距离&#xff1a;2cm——400cm 二.时序图 (1).以下时序图要先提供一个至少10us的脉冲触发信号&#xff0c;告诉单片机我准备好了&#xff0c;然后该超声波…

最简单的pixel刷机和安装面具、lsposed

一 下载手机对应的系统 1&#xff0c;手机usb连接然后重启进入Fastboot模式&#xff1a;adb reboot bootloader2&#xff0c;找到你下载的系统&#xff0c;Windows 系统 直接运行 flash-all.bat上图 &#xff1a;左边就是安卓11和12的系统&#xff0c;右边是对应的手机型号 下…