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对服务器性能有一定的损耗。

 

posted on 2019-03-21 11:46 person1 阅读() 评论() 编辑 收藏

版权声明:本文为lzplmv原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lzplmv/p/10570437.html