ELK 使用心得
ELK 使用心得
写在前面:我使用的架构是filebeat => kafka => logstash => elasticsearch <=> kibana;
一. Filebeat
首先是filebeat,filebeat用来采集日志,将日志信息推送给kafka。在这个过程中有几点是个人遇到的问题:1.一条日志信息有内容换行了,在收集日志时当然要归属于同一条信息;2.自定义字段补充日志信息;3.不同的业务的日志推送到kafka中的topic不同;
1.多行问题
解决方案如下:
multiline.pattern: ‘^[0-9]{4}-[0-9]{2}-[0-9]{2}’
multiline.negate: true
multiline.match: after
pattern是一个正则匹配,匹配日志开头;negate: true
和 match: after
设置来指定任何不符合指定模式的行都属于上一行。
解释上面案例的逻辑就是如果这一行不是以日期开头的话,那么就和上一行同属一条日志信息。
2.自定义字段
fields:
log_topics: programlog-test
s-ip: 172.22.66.66
可以通过以上方式添加想要增加的字段并存储信息,该字段会和收集到的日志信息一起发给kafka;
3.不同的topic
完整示例代码如下:
type: log enabled: true paths: - D:\log1\*.log fields: log_topics: log1 s-ip: 172.22.22.26 multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}' multiline.negate: true multiline.match: after - type: log enabled: true paths: - D:\logs\logdemo\*.log fields: log_topics: log2 s-ip: 172.22.22.26 multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}' multiline.negate: true multiline.match: after output.kafka: enable: true hosts: ["172.20.11.11:9092","172.20.22.22:9092","172.20.33.33:9092"] topic: '%{[fields][log_topics]}'
二. Logstash
logstash的任务是从kafka中读取信息,并将信息加工成自己需要的样式,加工过程用到很多正则,所以对logstash对服务器性能有一定的损耗。