Beats系列产品:
Filebeat:
架构:
用于监控、收集服务器日志文件
部署与运行:
下载地址:https://www.elastic.co/downloads/beats
mkdir /usr/local/beats
tar -zxvf filebeat-6.5.4-linux-x86_64.tar.gz
cd filebeat-6.5.4-linux-x86_64
创建如下配置文件 fan.yml
filebeat.inputs:
- type: stdin #输入的方式
enabled: true #启用输入
output.console: # 输出到控制台
pretty: true
enable: true
启动filebeat
./filebeat -e -c fan.yml # -e 输出到标准输出,默认输出到syslog和logs下,-c 指定配置文件,-d 输出debug信息(-d "publish")
输入hello运行结果如下:hello
{ "@timestamp": "2020-03-27T03:32:57.130Z", "@metadata": { #元数据信息 "beat": "filebeat", "type": "doc", "version": "6.5.4" }, "input": { #控制台标准输入 "type": "stdin" }, "beat": { #beat版本以及主机信息 "name": "fan", "hostname": "fan", "version": "6.5.4" }, "host": { "name": "fan" }, "source": "", "offset": 0, "message": "hello", #输入的内容 "prospector": { #标准输入勘探器 "type": "stdin" } }
读取文件:
复制一份配置并修改
cp fan.yml fan-log.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /fan/beats/logs/*.log
setup.template.settings:
index.number_of_shards: 3
output.console:
pretty: true
enable: true
在 /fan/beats/logs 目录下准备一下日志文件进行测试
启动 filebeat
./filebeat -e -c fan-log.yml
可以看出,开始会读取已有的日志文件,后面检测到日志文件有更新,立刻就会读取到更新的内容,并且输出到控制台。
自定义字段:
修改配置文件
filebeat.inputs:
- type: log
enabled: true
paths:
- /fan/beats/logs/*.log
tags: ["web"] #添加自定义tag,便于后续的处理
fields: #添加自定义字段
from: test-web
fields_under_root: true #true为添加到根节点,false为添加到子节点中
output.console:
pretty: true
enable: true
启动测试:
输出到Elasticsearch:
修改配置文件
filebeat.inputs:
- type: log
enabled: true
paths:
- /fan/beats/logs/*.log
tags: ["web"] #添加自定义tag,便于后续的处理
fields: #添加自定义字段
from: test-web
fields_under_root: true #true为添加到根节点,false为添加到子节点中
setup.template.settings:
index.number_of_shards: 3 #指定es索引的分区数
output.elasticsearch: #指定ES的配置
hosts: ["192.168.43.182:9200","192.168.43.182:9201","192.168.43.182:9202"]
Filebeat工作原理:
Filebeat由两个主要组件组成:prospector 和 harvester。
harvester:
负责读取单个文件的内容。
如果文件在读取时被删除或重命名,Filebeat将继续读取文件。
prospector
prospector 负责管理harvester并找到所有要读取的文件来源。
如果输入类型为日志,则查找器将查找路径匹配的所有文件,并为每个文件启动一个harvester。
Filebeat目前支持两种prospector类型:log和stdin。
Filebeat如何保持文件的状态
Filebeat 保存每个文件的状态并经常将状态刷新到磁盘上的注册文件中。
该状态用于记住harvester正在读取的最后偏移量,并确保发送所有日志行。
如果输出(例如Elasticsearch或Logstash)无法访问,Filebeat会跟踪最后发送的行,并在输出再次可用时继续读取文件。
在Filebeat运行时,每个prospector内存中也会保存的文件状态信息,当重新启动Filebeat时,将使用注册文件的数据来重建文件状态,Filebeat将每个harvester在从保存的最后偏移量继续读取。
文件状态记录在data/registry文件中。
读取Nginx日志文件:
创建配置文件 fan-nginx.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/nginx/logs/*.log
tags: ["nginx"]
setup.template.settings:
index.number_of_shards: 3
output.elasticsearch:
hosts: ["192.168.43.182:9200","192.168.43.182:9201","192.168.43.182:9202"]
启动后,可以在Elasticsearch中看到索引以及查看数据: