需求 -->>
同一个文件的不同接口日志存入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"</

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

被折叠的 条评论
为什么被折叠?



