【ELK之logstash】 grok入门:自测实例+常用正则(grok-patterns)

2024-04-23 03:38

本文主要是介绍【ELK之logstash】 grok入门:自测实例+常用正则(grok-patterns),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、背景
研究了grok几天,虽然知识还是很浅薄,但还是在这里做个总结。

场景 
在使用logstash进行日志收集工作的时候,filter是个很重要的插件,而其中的Grok能很好的解析日志。

logstash教程:https://blog.csdn.net/qq_34646817/article/details/81232083 
grok教程:https://blog.csdn.net/qq_34646817/article/details/81232121#t1

基础知识 
grok作为解析日志的插件,内含120种模式,即配置的正则。所以学习之前,不妨先去学习下

正则表达式https://deerchao.cn/tutorials/regex/regex.htm

 

Gork基础:

Gork支持 预置正则、自定义正则、插件过滤、Ruby代码过滤。性能应该是依次递减。

 

写Gork正则基本套路:

至少打开3个网页对照:

1.在线debug:http://grok.51vagaa.com/

支持自定义正则,修改后自动执行。如果经常写gork建议自己搭建一个debugger服务自己用。

 

2.Grok预定义正则含义:

https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns

不想理解去自行百度查预置正则含义吧:https://blog.csdn.net/cai750415222/article/details/86614854

 

3.最基础的是正则符号含义API:

正则表达式https://deerchao.cn/tutorials/regex/regex.htm

http://www.net-add.com/a/zidonghuayunwei/rizhifenxi/2018/0717/77.html

 

4.在debugger网页尽情尝试吧,实践出真理。

Tips:

不要急慢慢来就不会被逼疯,如果现在很暴躁建议晚点或者明天再来debug..哈哈 本人死磕5个小时就一个简单的log匹配,硬是没搞懂,第二天用debugger一下就明白后总结的经验。

 

以下是Copy他人的使用示例:

二、自测示例
下一章罗列了常用的一些正则,规则详情也有;在进行记忆学习前,我先展示下我自己的自测学习示例。

日志
我这边有一个log4j的日志,部分展示如下

[2018-07-10T16:22:30,001] AbstractBeanFactory(doGetBean:248): Returning cached instance of singleton bean 'mainCtl'
[2018-07-10T16:22:30,007] MainCtl(doControl:52): current tradecode:trigger_timer,flowsn:1
[2018-07-10T16:22:30,008] FlowParser(getFlowInfo:462): debugow:C:\Users\61661\Downloads\tinyWebDemo\tinyWebDemo1\src\main\resources\flow\trigger_timer.flow
[2018-07-10T16:22:30,009] MainCtl(doControl:60): flowInfos:{1=id:1,name:script}
[2018-07-10T16:22:30,011] AbstractBeanFactory(doGetBean:248): Returning cached instance of singleton bean 'enumTools'
[2018-07-10T16:22:30,013] AbstractBeanFactory(doGetBean:248): Returning cached instance of singleton bean 'jsDemo'
[2018-07-10T16:22:30,013] JsDemo(init:18): js demo init
[2018-07-10T16:22:30,019] TinyLog(debug:17): [null-trigger_timer] do function trigger_timer_1
[2018-07-10T16:22:30,019] TinyLog(info:21): [null-trigger_timer] start timer......
[2018-07-10T16:22:30,020] MainCtl(doControl:103): :2ms

grok配置
grok的编写配置虽然不难,但是很容易出错,要善于学会使用grok debugger来测试。 
这边给一个中文版的测试网站(英文的要翻墙):http://grok.qiexun.net/

测试结果如下图,表达式为:

\[%{TIMESTAMP_ISO8601:logdate}\] %{WORD:AA}\(%{WORD:BB}:%{WORD:BB}\): %{GREEDYDATA:C}
1


编写conf文件
说明:以下命令根据自己的路径进行调整

当前目录下编写conf文件

input {
    file {
         #日志所在目录
        path => ["/opt/data/test.log"]
        type => "system"
        #从文件开始的地方读
        start_position => "beginning"
        #这个是我爬过的坑 T.T ,写上下面的这段,反复重启的时候,才会从文件开始的地方读
        sincedb_path => "/dev/null"
    }
}
filter {
    grok {
      match => { "message" => "\[%{TIMESTAMP_ISO8601:logdate}\] %{WORD:AA}\(%{WORD:BB}:%{WORD:BB}\): %{GREEDYDATA:C}" }
    }
    date {
      match => [ "logdate", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
}
output{
     stdout{
       codec=>rubydebug{}
    }
}

logstash 解析
执行命令

/opt/elk/logstash-6.2.2/bin/logstash -f test.conf  
1
最后结果如下(截取了一部分):

{
          "host" => "hadoop02",
       "message" => "[2018-07-10T16:22:30,019] TinyLog(debug:17): [null-trigger_timer] do function trigger_timer_1",
      "@version" => "1",
       "logdate" => "2018-07-10T16:22:30,019",
            "AA" => "TinyLog",
          "tags" => [
        [0] "_dateparsefailure"
    ],
             "C" => "[null-trigger_timer] do function trigger_timer_1",
            "BB" => [
        [0] "debug",
        [1] "17"
    ],
          "path" => "/opt/data/test.log",
    "@timestamp" => 2018-08-01T16:43:18.303Z,
          "type" => "system"
}
{
          "host" => "hadoop02",
       "message" => "[2018-07-10T16:22:30,019] TinyLog(info:21): [null-trigger_timer] start timer......",
      "@version" => "1",
       "logdate" => "2018-07-10T16:22:30,019",
            "AA" => "TinyLog",
          "tags" => [
        [0] "_dateparsefailure"
    ],
             "C" => "[null-trigger_timer] start timer......",
            "BB" => [
        [0] "info",
        [1] "21"
    ],
          "path" => "/opt/data/test.log",
▽   "@timestamp" => 2018-08-01T16:43:18.303Z,
          "type" => "system"
}
{
          "host" => "hadoop02",
       "message" => "[2018-07-10T16:22:30,020] MainCtl(doControl:103): :2ms",
      "@version" => "1",
       "logdate" => "2018-07-10T16:22:30,020",
            "AA" => "MainCtl",
          "tags" => [
        [0] "_dateparsefailure"
    ],
             "C" => ":2ms",
            "BB" => [
        [0] "doControl",
        [1] "103"
    ],
          "path" => "/opt/data/test.log",
    "@timestamp" => 2018-08-01T16:43:18.303Z,
          "type" => "system"
}

三、Gork常用的正则
说明:左边是名称,右边的是正则,意义都有在注解里面说明 
当然,你自己测一下就知道了。
https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns

http://grok.51vagaa.com/patterns#

 

 

这篇关于【ELK之logstash】 grok入门:自测实例+常用正则(grok-patterns)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/927683

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联