filebeat+elasticsearch管道提取message字段

1:个人使用背景:filebeat采集日志写入es的时候,日志内容在message字段中,因为其中添加了tid字段,要提取出projectname,date,tid等这些字段,采用管道对数据进行预处理,格式化数据,重新构建了索引,最后查询,排序,条件查询什么的都直接操作字段就可以了。

        ps:原理什么的就不说了,目标就是能直接操作下来,实际点。

第一步:首先要创建管道pipeline.json文件

1)touch一个pipeline.json文件,具体路径最好是跟日志文件一起(自己决定吧)

2)vim编辑pipeline.json文件格式如下

{
  "description" : "test-pipeline",
  "processors" : [
    {
      "grok" :{
        "field" : "message",
        "patterns" :["%{USERNAME:projectName} %{LOGLEVEL:level} %{TIMESTAMP_ISO8601:date} %{USERNAME:TID}:%{USERNAME:tranceid}%{GREEDYDATA:info}"
        ]
      }
    }
  ]
}

                ①test-pipeline是管道名称②field是你需要处理的字段③patterns是你写的grok语句(跟logstash是一样的)具体语法请参考grok语法定义

例子

       我的日志信息 

walle-frame DEBUG 2022-05-17 10:12:23.568 
TID:9d168592ecdc4e7a8251720b90b585a1.1.16526894988950001 PID:31184  logger:org.springframework.boot.env.OriginTrackedYamlLoader  
thread:[main]  msg:Loaded 1 document from YAML resource: Byte array resource [walle-frame-dev-v2.yaml]

我的gorck

%{USERNAME:projectName} %{LOGLEVEL:level} %{TIMESTAMP_ISO8601:date} %{USERNAME:TID}:%{USERNAME:tid}%{GREEDYDATA:info}

测试工具地址:grok调试地址

ps:注意空格,注意符号,从前往后一个个提取,我建议就是把比较好提取的日志信息放到前面来,这样前面匹配完了,直接用GREEDYDATA取最后所有的信息放到一个字段中,调试比较难受,参考语法,注意空格和符号,慢慢整吧少年。

效果图:

 第二步:将管道导入es中,指定管道名称

1)pipeline.json文件好了,然后在json文件目录下执行下面的语句创建es管道(IP地址自己更换一下)

curl -H 'Content-Type: application/json' -XPUT 'http://localhost:9200/_ingest/pipeline/test-pipeline' -d@pipeline.json

2)这样es管道搞好了,然后在filebeat写入的时候指定管道名称就可以了

output.elasticsearch:
  hosts: ["localhost:9200"]
  pipeline: "test-pipeline"

ps:如果不创建管道,先在filebeat的yml文件中指定管道的话,filebeat就起不来了

这样就可以了,完事了,自己重启一下filebeat,kibana查看一下es数据,验证一下

这个是我的效果,接口取数据,也都ok

 好了,到这吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清石小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值