Logstash中grok filter example例子

2024-06-07 13:38

本文主要是介绍Logstash中grok filter example例子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

title: Logstash中grok filter example例子

date: 2017-02-28

tags: 大数据


一、Logstash

本文适合有部分Logstash经验的人阅读,如果不懂Logstash是什么,请多加google,后面我会继续整理的

1、filters

Logstash核心组成部分就包括filters,这是个过滤器。一般日志中还是有很多有用信息的,利用Logstash的filter机制可以将这些信息抽取出来

1)、JSON Filter

​ 这种方式对于日志数据源是json格式的比较有效,这里我不多讲,一般人日志不会特意弄成json格式的吧…

2)、Grok Filter
这种方式是我今天重点记录的,Grok是一种数据格式化工具,利用它就可以进行定制我们的格式化请求了。

​ 我们先来看一段实例:

input {stdin{}}
filter{grok {match => {"message"=>"20%{YEAR:year}-%{MONTHNUM:month}-%{MONTHDAY:day} %{HOUR:hour}:?%{MINUTE:minutes}(?::?%{SECOND:second}) \[%{LOGLEVEL:level}\] appname._log%{NAGIOSTIME:linenumber}: (.*)"}
}
}
output {stdout{}}

​ input和output我省略了,这段代码重点看的是filter部分。其实就是一些类似正则表达式的东西,然后去匹配我们的log,然后转成一个个json,然后发给output,output我设置的es。

看了上面的匹配例子,大概心里有个底,长什么样子,下面来解析
  • 牢记,每一个小表达式的样子就是%{IP:client}这种

    辣么IP是什么?client是什么?IP是一种模式的名称,能够自动去匹配你log中的部分,这里IP顾名思义,看到了ip地址如127.0.0.1就会给这一条log起个key值,key是client,所以json里面就会多一条数据,多一条client=>127.0.0.1这样的

  • 现有的模式我去哪里找?

    这个问题问得比较好,官方其实是支持很多的,让我们来看看支持列表点击这里

    上面的这个是Logstash1.4.2支持的,为什么没有新版的呢???这个问题下面回答

  • 为什么没有新版的Logstash支持的patterns

    在新版本的logstash里面,pattern目录已经为空,最后一个commit提示core patterns将会由logstash-patterns-core gem来提供,该目录可供用户存放自定义patterns,啥意思?也就是说用户可以自定义一些pattern然后保存在本地

  • 怎么自定义

    这里先留着,官方文档有,以后补充

  • 这么麻烦,还有没有现成的?

    答案是有,很多人帮你封装好了,地址在这里 ,这个是别人整理好的一些pattern,你可以按照他的安装方法,然后直接调用,里面有一些非常实用的表达式,比如可以直接解析tomcat打印出来的日志,直接一个表达式就搞定TOMCATLOG

下面我们来看一下grok的实例
  1. 我有一段thinkphp这样的日志:

    2016-12-19 14:36:26,298 [INFO] appname._log[95]: send sms use channel :6 
    2016-12-19 14:36:26,338 [INFO] appname._log[95]: send email use channel :4 
    2016-12-19 14:36:26,498 [INFO] appname._log[95]: send email use channel :6  

    首先要分析一下日志结构,才能写出相应的解析代码

    日志结构:日期+[日志级别]+appname._log[行号]:详情

    日期用年月日表示20%{YEAR:year}-%{MONTHNUM:month}-%{MONTHDAY:day} %{HOUR:hour}:?%{MINUTE:minutes}(?::?%{SECOND:second})

    日志级别:%{LOGLEVEL:level}

    详情: (.*) 直接这个表达式搞定

    其他特殊符号:比如说逗号,- 号等,我们可以原样写出即可,部分可能需要转义

    所以整体上面是这样的

    match => {"message"=>"20%{YEAR:year}-%{MONTHNUM:month}-%{MONTHDAY:day} %{HOUR:hour}:?%{MINUTE:minutes}(?::?%{SECOND:second}) \[%{LOGLEVEL:level}\] appname._log%{NAGIOSTIME:linenumber}: (.*)"}
  2. 我有一段tomcat的日志

    2016-12-28 14:55:05,062 INFO |XmlWebApplicationContext                |Closing Root WebApplicationContext: startup date [Wed Dec 28 14:46:44 CST 2016]; root of context hierarchy
    2016-12-28 14:55:06,062 INFO |XmlWebApplicationContext                |Closing Root WebApplicationContext: startup date [Wed Dec 28 14:46:44 CST 2016]; root of context hierarchy
    2016-12-28 14:55:07,062 INFO |XmlWebApplicationContext                |Closing Root WebApplicationContext: startup date [Wed Dec 28 14:46:44 CST 2016]; root of context hierarchy
    2016-12-28 14:55:08,062 INFO |XmlWebApplicationContext                |Closing Root WebApplicationContext: startup date [Wed Dec 28 14:46:44 CST 2016]; root of context hierarchy
    

    同样分析结构,如果安装了上面说的那个插件的话,就可以直接match => {"message" => "%{TOMCATLOG}"}这样一句话搞定,

  3. 我有一段nginx的日志

    55.3.244.1 GET /index.html 15824 0.043

    表达式可以像下面那样写

    %{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}
  4. 验证你写的表达式是否正确

    可以到这个验证网站验证一下你写的是否正确

这篇关于Logstash中grok filter example例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

python中update()函数的用法和一些例子

《python中update()函数的用法和一些例子》update()方法是字典对象的方法,用于将一个字典中的键值对更新到另一个字典中,:本文主要介绍python中update()函数的用法和一些... 目录前言用法注意事项示例示例 1: 使用另一个字典来更新示例 2: 使用可迭代对象来更新示例 3: 使用

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

springboot filter实现请求响应全链路拦截

《springbootfilter实现请求响应全链路拦截》这篇文章主要为大家详细介绍了SpringBoot如何结合Filter同时拦截请求和响应,从而实现​​日志采集自动化,感兴趣的小伙伴可以跟随小... 目录一、为什么你需要这个过滤器?​​​二、核心实现:一个Filter搞定双向数据流​​​​三、完整代码

Spring Boot拦截器Interceptor与过滤器Filter详细教程(示例详解)

《SpringBoot拦截器Interceptor与过滤器Filter详细教程(示例详解)》本文详细介绍了SpringBoot中的拦截器(Interceptor)和过滤器(Filter),包括它们的... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)详细教程1. 概述1

dubbo3 filter(过滤器)如何自定义过滤器

《dubbo3filter(过滤器)如何自定义过滤器》dubbo3filter(过滤器)类似于javaweb中的filter和springmvc中的intercaptor,用于在请求发送前或到达前进... 目录dubbo3 filter(过滤器)简介dubbo 过滤器运行时机自定义 filter第一种 @A