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

 好了,到这吧。

<think>好的,我需要帮助用户配置日志收集系统,将日志发送到Elasticsearch。用户提到了Logstash和Filebeat,所以我需要比较这两种工具的使用方法。 首先,用户提供的引用中有多个关于Filebeat和Logstash的例子,比如引用2和3提到Filebeat收集Nginx和Tomcat日志,发送到Logstash处理后再到Elasticsearch。这可能是一个常见的架构,Filebeat负责收集,Logstash处理,然后存储到ES。 我需要分步骤说明两种方法:使用Filebeat直接发送到ES,或者通过Logstash处理后再发送。根据引用4,Logstash可以作为数据收集引擎,监听端口接收数据,而Filebeat作为数据源端发送日志。 对于Filebeat配置,用户需要安装并修改配置文件,指定日志路径和输出到ES的地址。引用2中的示例可能有用,例如配置filebeat.yml的input和output部分。 对于Logstash配置,需要安装Logstash,并创建配置文件,包含input(接收Filebeat或直接读取日志)、filter(比如grok解析,引用1提到使用Grok插件),以及output到ES。引用1和4提到了Logstash的过滤器和输出配置。 另外,用户可能需要了解如何同时使用Filebeat和Logstash,比如Filebeat发送到Logstash进行处理,再由Logstash转发到ES。引用2和3的案例展示了这种流程,需要配置Filebeat输出到Logstash的端口,然后Logstash配置input beats,filter处理,output到ES。 还要注意Elasticsearch和Kibana的安装,如引用2中的yum安装步骤。用户可能需要先确保这些组件已经安装并运行。 最后,生成相关问题,可能涉及性能优化、日志解析、安全性等方面,参考用户之前的示例问题。</think>### 分步配置指南 #### 方法一:使用Filebeat直接发送到Elasticsearch 1. **安装组件** ```bash yum install -y filebeat elasticsearch kibana # 引用[2] ``` 2. **配置Filebeat** 修改`/etc/filebeat/filebeat.yml`: ```yaml filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/*.log # 指定日志路径,例如Nginx日志 output.elasticsearch: hosts: ["localhost:9200"] # Elasticsearch地址 indices: - index: "nginx-%{+yyyy.MM.dd}" # 按日期创建索引 ``` 3. **启动服务** ```bash systemctl start elasticsearch filebeat ``` #### 方法二:Filebeat + Logstash + Elasticsearch 1. **安装Logstash** ```bash yum install -y logstash # 引用[2] ``` 2. **配置Filebeat输出到Logstash** 修改`filebeat.yml`: ```yaml output.logstash: hosts: ["localhost:5044"] # Logstash监听端口 ``` 3. **配置Logstash管道** 创建`/etc/logstash/conf.d/logstash.conf`: ```conf input { beats { port => 5044 # 接收Filebeat数据 } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } # 使用Grok解析日志,引用[1][4] } } output { elasticsearch { hosts => ["localhost:9200"] index => "applogs-%{+YYYY.MM.dd}" # 自定义索引名称 } } ``` 4. **启动服务** ```bash systemctl start logstash elasticsearch filebeat ``` #### 验证数据 通过Kibana(http://localhost:5601)创建索引模式,查看日志数据[^3]。 --- ### 关键配置对比 | 组件 | 直接发送到ES | 通过Logstash处理 | |------------|----------------------------------|----------------------------------| | **复杂度** | 简单,适合基础场景 | 复杂,支持数据解析和格式转换 | | **功能** | 仅收集和传输 | 支持过滤、字段提取、数据增强 | | **性能** | 资源占用低 | 需更多计算资源处理复杂逻辑 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

清石小猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值