首先filebeat是Beats中的一员。 Beats在是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。 目前Beats包含六种工具:
Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。
Filebeat的工作方式如下:启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件,并将聚集的数据发送到为Filebeat配置的输出。
工作的流程图如下:
操作系统:centos 7.6
docker版本:19.03.12
ip地址:192.168.31.196
这里需要使用filebeat收集主机的/var/log/messages文件,直接发送给elasticsearch。
关于elasticsearch安装,请参考链接:
https://www.cnblogs.com/xiao987334176/p/13565468.html
docker pull elastic/filebeat:7.5.1
临时启动
docker run -d --name=filebeat elastic/filebeat:7.5.1
拷贝数据文件
docker cp filebeat:/usr/share/filebeat /data/elk7/
chmod 777 -R /data/elk7/filebeat
chmod go-w /data/elk7/filebeat/filebeat.yml
编辑配置文件
# 收集系统日志
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/messages
filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
processors:
- add_cloud_metadata: ~
- add_docker_metadata: ~
output.elasticsearch:
hosts: '192.168.31.196:9200'
indices:
- index: "filebeat-%{+yyyy.MM.dd}"
以新的方式启动
docker rm -f filebeat
docker run -d \
--name=filebeat \
--restart=always \
-v /data/elk7/filebeat:/usr/share/filebeat \
-v /var/log/messages:/var/log/messages \
elastic/filebeat:7.5.1
等待30秒,查看日志是否有错误
docker logs -f filebeat
访问elasticsearch head
http://192.168.31.196:9100/
如果有filebeat索引,说明成功了。
本文参考链接: