[关闭]
@student2018 2019-01-17T06:10:18.000000Z 字数 1905 阅读 1226

filebeat使用文档

ELK

filebeat是基于go语言开发的项目,基于logstash-forward项目。
可以监控捕获日志文件的内容直接发送到logstash和ES,kafka等组件。
也可以直接输出到console用于测试,具体可以参考配置文件内容。

  1. filebeat的安装使用
  1. curl -L -O https://github.com/student2028/docker/raw/master/filebeat.yml
  2. curl -L -O https://github.com/student2028/docker/raw/master/filebeat
  3. chmod +x filebeat
  4. chmod 644 filebeat.yml

更多的配置信息可以参考
https://github.com/student2028/docker/blob/master/filebeat.reference.yml
开启filebeat,以下任一方法均可。

  1. ./filebeat #默认使用filebeat.yml 配置文件
  2.  #如果需要使用其他配置文件可以
  3. ./filebeat -c path2conf.yml
  4. ./filebeat -e #在console输出日志信息
  1. filebeat配置
    filebeat提供了一些模块来处理常用的日志格式,这样就可以直接入库elasticsearch,但是需要用到elastichsearch的ingest特性,
    在我们的项目中是自定义规则解析,所以暂用不到这块功能。
    filebeat.yml 是默认的配置文件,如果它放置在filebeat同目录,默认使用它。
    filebeat.reference.yml 是一个样例文件,它里面包含了所有可用的配置项,必要的时候可以参考它的内容来更新配置文件。
    配置文件中,配置了监控哪些文件,监控的内容输出到哪里去,对监控的输出字段进行处理的处理器的配置,处理器可以删除不必要的字段和对字段进行重命名等。还可以派生新的字段,但此功能比较简单,仅支持常量。
    配置文件中还可以用到简单的过滤,如文件扩展名过滤,或包含某些关键字的行才处理。
    以示例filebeat.yml 解析一下
  1. filebeat.inputs:
  2. - type: log
  3. enabled: true
  4. paths:
  5. - /var/log/*.log
  6. #include_lines: ['error']
  7. # multiline:
  8. # pattern: '^[A-Za-z]{3}\s+\d{2}'
  9. # negate: true
  10. # match: after
  11. fields_under_root: true
  12. output.kafka:
  13. hosts: ["192.168.152.1:9092"]
  14. topic: 'filebeat_test'
  15. version: 0.10.1.0
  16. processors:
  17. - rename:
  18. fields:
  19. - from: "agent.hostname"
  20. to: "@hostname"
  21. - drop_fields:
  22. fields: ["log","agent","service","ecs","event","input","host"]

示例配置文件的含义是:
监控/var/log/下的后缀名为log的文件内容输出到kafka.

我们需要改动的点就是paths,即监控文件的路径,支持通配符。如 /var/log/*.log。
可以支持多行的事件,示例中是用于处理linux系统日志信息的,
日志格式前面是日期 Mon day的格式,所以写了这样的正则表达式。
表示的意思是如果不按正则表达式开头的行追加到前面的内容后面
这个多行的配置也比较灵活,可以根据日志的特点进行调整。
 

filebeat的工作原理
filebeat保证捕获的数据至少一次发送到配置的输出组件。
因为它在注册表文件中保存了事件发送的状态。
filebeat启动后,会在启动目录创建两个目录,data,logs.
分别用于保存注册表文件和日志信息。
注册表文件内容示例如下:
[{"source":"/var/log/test.log","offset":12775,"timestamp":"2019-01-17T11:14:40.275202146+08:00","ttl":-1,"type":"log","meta":null,"FileStateOS":{"inode":70886757,"device":64768}}]
如果输出端如kafka不可用,为了保证至少一次可达的特性,这个offset的值就不会更新,直到发送成功。
但如果没有得到反馈的时候filebeat失败了,则再次重启的时候,可能会有数据再次被发送,这样会造成数据的重复。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注