Logstash Filter Plugin Grok


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

Grok基本介绍


1.Grok 使用文本片段切分的方式来切分日志事件,语法如下:

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如下:

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

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

以下是filter结果

grok内置的默认类型有很多种,读者可以自行查看。


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

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

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

第二种,创建自定义pattern文件

创建文件夹patterns,在此文件夹下面创建一个文件,文件名随意,eg: postfix

然后将patterns file引入,告诉logstash你的自定义类型文件,以下面的event log record为例子:

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

匹配结果如下:

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

3.其他常用内置方法

add_field: 当pattern匹配切分成功之后,可以动态的对某些字段进行特定的修改或者添加新的字段,使用%{fieldName}来获取字段的值
Exmaple:

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

add_tag: 为经过filter或者匹配成功的event添加标签
Example:


©著作权归作者所有:来自51CTO博客作者mob604756edd67c的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 浅谈DHCP Relay
  2. web前端编程语言有哪些?
  3. Linux 三剑客 Awk、Sed、Grep 命令详解
  4. python怎么安装pip
  5. 全球分布式,多模数据库Azure Cosmos DB
  6. #Build 2017观察# 微软的战略升级
  7. 2、AP上线的那些事儿(1)capwap建立过程、设备初始化以及二层上线
  8. 微软大数据领域优势分析
  9. 探讨微软的混合云

随机推荐

  1. java-信息安全(三)-PBE加密算法
  2. JAVA EXAM2 复习提纲
  3. dom4j-java-如何获取root中具有特定元素
  4. Java 并发开发:Lock 框架详解
  5. JAVASCRIPT实现翻页保存已勾选的项目
  6. java--this指针在哪里存着呢?
  7. EXclipse导出的JAR可以在电脑上运行,但是
  8. mockito - java.lang.VerifyError:分支
  9. JAVA课程设计(坦克大战)
  10. 如何为英语以外的语言执行string.contain