filebeat + ELK 数据生命周期日志数据拼接

本文介绍了如何使用Filebeat、Kafka、Logstash和Elasticsearch搭建日志追踪系统,解决大规模接口日志分发、清洗与关联查询的问题。重点讲解了如何配置Filebeat按接口分发日志至不同Kafka topic,Logstash处理并转换为JSON格式,以及如何通过traceId查询完整业务生命周期。同时讨论了遇到的问题和解决策略,以提升性能并减轻数据库压力。

需求 -->>
同一个文件的不同接口日志存入es,通过traceId查询整个业务的生命周期;

解决方案–>>
log文件 <-- filebeat --> kafka --> logstash --> es <-- kabana 解决方案还是传统的ELK方案;

ps: 后续可以提供一个接口程序,传入指定关键字和时间,通过日志里的traceid进行关联,查询整个业务生命周期的数据;对于处理大批量(本次是100W条*4/天)的数据会比数据库快一些吧;也减轻数据库的压力,这是这次部署elk的初衷;

遇到的一些问题,以及解决方法 -->>
问题1、同一个文件的不同接口日志要首先存入到不通的topic中;
问题2、filebeat 去除无用数据,message里的信息原文存入kafka;
问题3、logstash 字符串格式转json格式存入elstaicsearch;

问题1:
– 启动多个filebeat指定不同的配置文件;测试了在同一个文件里配置几个input没有成功;

> ps -ef|grep filebeat
./filebeat -e -c 1.yaml
./filebeat -e -c 2.yaml
./filebeat -e -c 3.yaml

问题2:
– 见配置文件注解;

> cat 1.yaml
filebeat.prospectors:
- input_type: log
  paths:
    - "input logpath"
  include_lines: ['work key'] # 正则表达式,最好使用单引号(');转义用反斜杠(\)
  fields: 
    topic: {
   
   topic name} # 添加topic字段,后面可以引用;作为kafka分队列使用
...
...
output.kafka:
    hosts: ["host1:port","host2:port","host3:port"] 
    topic: '%{[fields][topic]}' # 引用字段,数据按照字段存入不同kafka;*本文情景不符合,适用于不同文件,存入不同的kafka;
    codec.format:  # 只取message字段的数据,存入kafka;正常数据会有@version、@timestamp等没有用的数据,避免了logstash需要二次修正数据;
        string: '%{[message]}'
...
...
processors:
- drop_fields: # 这里是可以删除的数据字段
   fields: ["log_type", "input_type", "offset", "beat", "source", "type"</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值