最近在捣鼓Filebeat监听springboot的日志然后将其传入到es中。这个时候日志肯定要切分单独字段存储。这个时候用到了es自带的ingest node pipeline 功能,使用grok 使用正则将log进行切分
参考资料:
>
最近在做日志收集到es时遇到些问题。我不想用logstash做日志的切分,毕竟很大,想用FileBeat直接推数据到es中。这就涉及到一个问题,这步切分数据在哪做。这个可以使用es的ingest node来做。
es在50X以后推出了ingest node的功能,可以对数据进行预处理。我们可以指定需要的Pipeline,然后ingest node 将会帮我们按照规定的 processor 顺序来执行对数据的 *** 作和处理。
要在索引之前预处理文档,我们必须定义pipeline。pipeline定义了一系列processor。每个processor以某种方式转换文档。每个processor按照在 pipeline 中定义的顺序执行。 pipeline由两个主要字段组成description和processor列表。
pipeline 是群集级存储而被保存在每个节点的内存中,并且 pipeline 始终在 ingest node中运行,因此最好在群集中保留需要的 pipeline,而删除那些不需要的 pipeline。
Pipeline 以 cluster 状态存储,并且立即传播到所有 ingest node。 当 ingest node 接收到新 pipeline 时,它们将以内存 pipeline 表示形式更新其节点,并且 pipeline 更改将立即生效。
注册或者更新pipeline(根据对应的json注册test-pipeline)
删除pipeline(下面是删除test-pipeline)
格式如下
我在另外一篇文章也有讲怎么将FileBeat的数据直接传到es,然后做切分。这里只是讲下processor。
ingest node内置了很多processor,grok就是属于processor的一种。processor还有有很多,参考以下网址
我们这里2中常见的grok和drop
grok 适用于正则匹配,用来匹配分割文本并映射到关键字的工具,在grok调试中,由于采用是整个字段匹配,如果一处无法匹配,就会导致整个匹配失败
我们在写grok的时候,需要了解它的自带的类型,以及正则相关的知识,然后进行测试,下面是相关的链接
这里是些常用的
遇到的问题: 我在匹配正则的时候,想匹配全部使用GREEDYDATA 发现失败。因为GREEDYDATA 不匹配\n, 后来使用(|\n)这种形式发现是可以的。
remove这里用于删除字段。我这边的需求用到它是因为使用grok切分完,原有字段就将其删除了。
格式为,这个看官网就行,一大片
Logstash是Elastic stack 中的一个开源组件,其不仅能够对日志进行抓取收集,还能对抓取的日志进行过滤输出。Logstash的过滤插件有多种,如:grok、date、json、geoip等等。其中最为常用的为grok正则表达式过滤。
grok的匹配语法分为两种:grok自带的基本匹配模式、用户自定义的匹配模式。
Grok模块提供了默认内嵌了一些基本匹配模式,其使用语法为:
其中SYNTAX为匹配模式的名称,用于调用相应的匹配模式匹配文本,如:344 会被NUBER模式所匹配,而1010101会被IP模式所匹配。
而SEMANTIC则是用于标记被匹配到的文本内容,如1010101被IP模式所匹配,并编辑为ClientIP。
其使用例子:
Grok模块是基于正则表达式做匹配的,因此当基本匹配模式不足以满足我们的需求时,我们还自定义模式编译相应的匹配规则。
Grok的自定义模式的语法:
其中filed_name为自定义模式的名称,pattern即指正则表达式。
如:
grok支持下述的过滤配置选项
grok的通用选项:
下述选项是被所有过滤插件都支持的通用选项。
添加和移除指定的字段
Grok 是 Logstash 最重要的插件。你可以在 grok 里直接使用或应用预定义的表达式名称,grok 支持把预定义的 grok 表达式 写入到文件中,官方提供的预定义 grok 表达式见: >
以上就是关于FileBeat向elasticsearch传入数据,并使用GROK处理全部的内容,包括:FileBeat向elasticsearch传入数据,并使用GROK处理、你真的了解Grok吗、grok debugger怎么用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)