Logstash提供了一系列filter过滤plugin来处理收集到的log event,根据log event的特征去切分所需要的字段,方便kibana做visualize和dashboard的data analysis。所有logstash支持的event切分插件查看这里。下面我们主要讲grok切分。

Grok基本介绍

  1. Grok 使用文本片段切分的方式来切分日志事件,语法如下:
%{SYNTAX:SEMANTIC}
* `SYNTAX`代表匹配值的类型,例如,`0.11`可以`NUMBER`类型所匹配,`10.222.22.25`可以使用`IP`匹配。 * `SEMANTIC`表示存储该值的一个变量声明,它会存储在`elasticsearch`当中方便`kibana`做字段搜索和统计,你可以将一个`IP`定义为客户端IP地址`client_ip_address`,eg:`%{IP:client_ip_address}`,所匹配到的值就会存储到`client_ip_address`这个字段里边,类似数据库的列名,也可以把event log中的数字当成数字类型存储在一个指定的变量当中,比如响应时间`http_response_time`,假设event log record如下: 
55.3.244.1 GET /index.html 15824 0.043

可以使用如下grok pattern来匹配这种记录

%{IP:client_id_address} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:http_response_time} 

在logstash conf.d文件夹下面创建filter conf文件,内容如下

# /etc/logstash/conf.d/01-filter.conf
filter {grok {match => { "message" => "%{IP:client_id_address} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:http_response_time}" }}
}

以下是filter结果

client_id_address: 55.3.244.1
method: GET
request: /index.html
bytes: 15824
http_response_time: 0.043

grok内置的默认类型有很多种,查看所有默认类型 Grok模式库。

  1. 使用自定义类型
    更多时候logstash grok没办法提供你所需要的匹配类型,这个时候我们可以使用自定义

    • 第一种,直接使用oniguruma语法去匹配文本片段,语法如下

      (?<field_name>the pattern here)
      

      假设你需要匹配的文本片段为一个长度为10或11的十六进制的值,使用下列语法可以获取该片段,并把值赋予queue_id

      (?<queue_id>[0-9A-F]{10,11})
      
    • 第二种,创建自定义pattern文件
      • 创建文件夹patterns,在此文件夹下面创建一个文件,文件名随意,eg: postfix
      # contents of ./patterns/postfix:
      POSTFIX_QUEUEID [0-9A-F]{10,11}
      
      • 然后将patterns file引入,告诉logstash你的自定义类型文件,以下面的event log record为例子:
      55.3.244.1 GET /index.html 15824 0.043 ABC24C98567
      

      在logstash conf.d文件夹下面创建filter conf文件,内容如下

      filter {
      grok {patterns_dir => ["./patterns"]match => { "message" => "%{IP:client_id_address} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:http_response_time} %{POSTFIX_QUEUEID:queue_id}" }
      }
      }
      

匹配结果如下:

client_id_address: 55.3.244.1
method: GET
request: /index.html
bytes: 15824
http_response_time: 0.043
queue_id: ABC24C98567

推荐使用grokdebugger来写匹配模式,输入event log record,再逐步使用pattern微调切分,下方会根据你所写的模式将输入切分字段。

  1. 其他常用内置方法

    • add_field: 当pattern匹配切分成功之后,可以动态的对某些字段进行特定的修改或者添加新的字段,使用%{fieldName}来获取字段的值
      Exmaple:
filter {grok{add_field => { "foo_%{somefield}" => "Hello world, %{somefield}" }}
}
# You can also add multiple fields at once:
filter {grok {add_field => {"foo_%{somefield}" => "Hello world, %{somefield}""new_field" => "new_static_value" } } } 

如果somefield=dad,logstash会将foo_dad新字段加入elasticsearch,并将值Hello world, dad赋予该字段

  • add_tag: 为经过filter或者匹配成功的event添加标签
    Example:
filter {grok {add_tag => [ "foo_%{somefield}" ]}
}
# You can also add multiple tags at once:
filter {grok {add_tag => [ "foo_%{somefield}", "taggedy_tag"]}
}

更多内置方法在这里

作者:eason02
链接:https://www.jianshu.com/p/d46b911fb83e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载于:https://www.cnblogs.com/hyl8218/p/8478247.html

使用Logstash filter grok过滤日志文件相关推荐

  1. logstash之grok过滤

    简介   前面我们的nginx日志编码使用的json,logstash直接输入预定义好的 JSON 数据,这样就可以省略掉 filter/grok 配置,但是在我们的生产环境中,日志格式往往使用的是普 ...

  2. logstash filter grok 用法

    在elk+filebeat都安装好,且明白了基本流程后,主要的就是写logstash的filter了,以此来解析特定格式的日志 logstash的filter是用插件实现的,grok是其中一个,用来解 ...

  3. java使用grok解析日志文件

    在项目中会产生大量的日志以方便问题跟踪,有时需要统计分析系统运行期间的日志,例如:分析系统使用情况,使用人数,系统错误信息等等.根据不同的日志类别,生成可视化图表展示,所以就需要需要对日志进行处理,将 ...

  4. Logstash filter grok正则的使用及介绍

    一.Logstash企业级插件案例(EFLK架构) 1.常见的插件概述 gork插件:Grok是将⾮结构化⽇志数据解析为结构化和可查询的好⽅法.底层原理是基于正则匹配任意 ⽂本格式.该⼯具⾮常适合sy ...

  5. linux过滤文件的关键字,linux tail 过滤日志文件中的关键字

    1.查看日志文件中带有指定关键词的日志信息 tail -f  日志文件名 | grep 关键字 | grep 关键字 2.查看日志文件最后1000行 tail -f -n 1000 日志文件  (实时 ...

  6. logstash 采集syslog过滤日志等级

    度娘老半天没找到一个能正常根据syslog日志等级正常过滤采集的 不了解syslog日志格式的,建议先去以下连接了解以下 syslog日志 数据格式与内容 Syslog-ng与Syslog协议与之数据 ...

  7. 用Kibana和logstash快速搭建实时日志查询、收集与分析系统

    Logstash是一个完全开源的工具,他可以对你的日志进行收集.分析,并将其存储供以后使用(如,搜索),您可以使用它.说到搜索,logstash带有一个web界面,搜索和展示所有日志. kibana ...

  8. ELK学习2_用Kibana和logstash快速搭建实时日志查询、收集与分析系统

    Logstash是一个完全开源的工具,他可以对你的日志进行收集.分析,并将其存储供以后使用(如,搜索),您可以使用它.说到搜索,logstash带有一个web界面,搜索和展示所有日志. kibana ...

  9. 基于logstash实现日志文件同步elasticsearch

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.op-kg.com/ ...

最新文章

  1. 软件测试培训分享:如何划分bug的严重级别
  2. 第十六周项目3:max带来的冲突
  3. 直击阿里新一代数据库技术:如何实现极致弹性能力?
  4. python简单使用
  5. STL 之find,find_if,find_end,find_first_of
  6. 小白学数据分析------日活跃人数分析
  7. Visual Studio的Web Performance Test提取规则详解(1)
  8. 死锁终结者:顺序锁和轮询锁!
  9. java中数组的定义
  10. python-词云wordcloud-0223
  11. BZOJ2241 [SDOI2011]打地鼠 【模拟】
  12. react style: 二级菜单
  13. 数学知识点回顾(三)
  14. 为何python不好找工作-Python这么火,为何有人说Python不好找工作?
  15. Visual Studio中绘制UML用例图
  16. 【随笔】稚晖君软件硬件环境总结
  17. 如果让你来制作一个访问量很高的大型网站,你会如何来管理所有CSS文件、JS与图片?
  18. Microsoft Excel 教程:如何在 Excel 中创建新工作簿、插入或删除工作表?
  19. 墨盒和墨仓打印机区别?
  20. 席位分配问题——惯例Q值法和d'hondt法的MATLAB程序

热门文章

  1. java mvc ef_一个简单MVC5 + EF6示例分享
  2. html表格边框设置波浪线,SVG CSS3 按钮悬停边线环绕+波浪线+选择框动效
  3. java mac sh_如何创建AppleScript或Command文件以在Mac OS上启动Java应用程序?
  4. word手写字体以假乱真_学会Word上下标,搞定公式输入
  5. Redirecting to binsystemctl start crond.service
  6. 纸的大小图解_折纸大全图解基础之如何裁切美元尺寸纸张
  7. oracle number类型能存空吗_《听雪楼》《白发》成爆款类型剧的效仿者,古装剧真的能回暖吗?...
  8. 10以内数的组成分解图_学前儿童如何学习20以内的加减法,收藏了
  9. 模型部署到移动端_TensorFlow Lite 自然语言处理模型的最新功能,助力设备端 NLP 部署...
  10. 老板让我每天刷群,无奈只能写一个自动群发脚本,不让自己疯狂复制粘贴