filebeat提取获取massage字段利⽤pipelinegrok7.12嘴巴会说(情商)⽐技术有时候更重要!
⽔平有限,希望你看完有所收获!
背景
1,filebeat直连Elasticsearch,需要对massage提取⼀些特定的字段。
2,如果你对数据需要处理的⽐较多还是建议⽤logstash,logstash更强⼤⼀些。
pipeline 简单介绍
pipeline 我最开始了解的时候是使⽤jenkins的时候,即交付流⽔线。
平时写的jenkinsfile就是⽤的pipeline。
我理解的pipeline就是把你在界⾯上配置的⾃动化变成代码脚本。即Pipeline as Code。
⼀、原始massage
原始的⽇志内容如下,
我需要提取:4975481caf96a734bdb300acc118b5b5
2021-06-17 20:50:39|ERROR|4975481caf96a734bdb300acc118b5b5|1623934239.079|20003|user service error|/var/www/html/vendor/mdp/java-client/src/JavaClientResponse.php
⼆、操作
想要使⽤filebeat提取massage字段
1,得先在es⾥⾯创建⼀个pipeline脚本。
2,配置filebeat使⽤es的pipeline脚本。
2.1 创建pipeline.json⽂件
就是随便在linux⽬录创建⼀个⽂件。
⽂件名称随便起,后期能到就⾏。⽅便以后做更改。
vim extract-traceid-pipeline.json
{
"description" : "extract-traceid-pipeline", # 描述,可以描述⼀下这个pipeline的作⽤
"processors" : [
{
"grok" :{ # grok 语法
"field" : "message", # 需要对你采集的信息的哪个字段进⾏处理。其实就是filebeat采集完⼀条⽇志之后来执⾏这个处理。你可以对采集的任何字段的值进⾏处理
"patterns" : ["ERROR\\|%{DATA:trace_id}\\|"] # 这个就是从message信息中提取信息的语法了。
}
}
]
}
# [""] 这个是固定写法,⾥⾯的才是正则
# 2021-06-17 20:50:39|ERROR|4975481caf96a734bdb300acc118b5b5|
# 提取4975481caf96a734bdb300acc118b5b5,可以看到这段数据之前的是ERROR|
# 那我前⾯就写ERROR\\| |需要转义但是es也需要转义⼀层,所以就是两个\\
# %{} 这个是固定的写法,就是你想要提取哪个信息然后使你提取出来的信息成为⼀个字段key:value。
# DATA 是grok的语法,内置字段类型,⽐如
DATE:表⽰你提取的信息是⽇期
NUMBER:表⽰为数值
DATA:表⽰为字符串
IP:表⽰为⼀个ip地址
你在这标识的类型会在kibana上⾯把key的类型标识出来。
# :trace_id 这个表⽰你给你提取出来的信息定义⼀个Key的名称,⽐如
trace_id:4975481caf96a734bdb300acc118b5b5
到时候你收集到的这条⽇志信息⾥⾯就会多出这⼀个字段
你在kibana就能搜索到。
这个名称你随便定义就⾏。
2.2 将json⽂件传到es
在你json⽂件所在的⽬录执⾏
curl -H "Content-Type: application/json" -XPUT '192.168.31.61:9200/_ingest/pipeline/extract-traceid-pipeline' -d@extract-traceid-pipeline.json
# extract-traceid-pipeline 这个名称你可以随便起,但是在filebeat配置的时候需要写这个名称
# extract-traceid-pipeline.json 这个就是你⾃⼰的json⽂件
2.3 查看pipeline脚本
可以看到es⾥⾯有我们上传的pipeline规则了
访问:192.168.31.61:9200/_ingest/pipeline,我没安装google浏览器json插件。安装⼀个就格式化了。
还有就是可以⽤kibana的开发⼯具看到:
2.4 filebeat配置
# 编辑l配置⽂件
output.elasticsearch:
hosts: ["192.168.31.61:9200","192.168.31.62:9200","192.168.31.63:9200"]
pipelines: # pipelines 就是你下⾯可以放多个pipeline
- pipeline: "extract-traceid-pipeline" # 这个名称就是你curl put到es⾥⾯你后⾯写的那个名称浏览器json格式化
log_topics: "php-errlogs" # 就是当log_topics:"php-errlogs" 的时候才⽤这个pipeline
# when 就是if
# contains 就是包含的意思还有其他的⽐如:and,or,not,equals(必须相等)
2.5 查看数据
可以直接查看es数据,也可以去kibana上⾯看。收集的数据⾥⾯就会多出⼀个字段。
三、grok在线调试⼯具
⽔平有限!抱拳抱拳抱拳
⼤家可以看我的另⼀篇⽂章,elk的,实际运⽤pipline:wwwblogs/fanfanfanlichun/p/14917736.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论