简介
Beats 是安装在服务器上的数据中转代理。
Beats 可以将数据直接传输到 Elasticsearch 或传输到 Logstash 。
Beats 有多种类型,可以根据实际应用需要选择合适的类型。
常用的类型有:
- Packetbeat:网络数据包分析器,提供有关您的应用程序服务器之间交换的事务的信息。
- Filebeat:从您的服务器发送日志文件。
- Metricbeat:是一个服务器监视代理程序,它定期从服务器上运行的操作系统和服务收集指标。
- Winlogbeat:提供Windows事件日志。
FileBeat 的作用
相比 Logstash,FileBeat 更加轻量化。
在任何环境下,应用程序都有停机的可能性。 Filebeat 读取并转发日志行,如果中断,则会记住所有事件恢复联机状态时所在位置。
Filebeat带有内部模块(auditd,Apache,Nginx,System和MySQL),可通过一个指定命令来简化通用日志格式的收集,解析和可视化。
FileBeat 不会让你的管道超负荷。FileBeat 如果是向 Logstash 传输数据,当 Logstash 忙于处理数据,会通知 FileBeat 放慢读取速度。一旦拥塞得到解决,FileBeat 将恢复到原来的速度并继续传播。
安装
下载安装包,然后解压即可。
官网下载地址:
https://www.elastic.co/cn/downloads/beats/filebeat
配置文件
Filebeat的配置结构类似Logstash,也需要配置input和output,分别配置输入和输出,Filebeat使用yaml格式编写配置文件。
默认配置文件路径:
${安装目录}/filebeat.yml
/etc/filebeat/filebeat.yml
/usr/share/filebeat/filebeat.yml
如果使用的是tar安装包安装,则选择${安装目录}/filebeat.yml 路径。
配置文件示例
# 配置采集数据源
filebeat.inputs:
- type: log
paths:
- /var/log/messages
- /var/log/*.log
# 配置输出目标,这里将数据投递给logstash
output.logstash:
# logstash地址
hosts: ["127.0.0.1:5044"]
说明:
type为log类型,表示收集日志文件数据,paths是一个文件路径数组,这里扫描/var/log/messages文件和/var/log/目录下所有以log为扩展名的日志文件。
Logstash beat配置
input {
# 配置接收Filebeat数据源,监听端口为5044
# Filebeat的output.logstash地址保持跟这里一致
beats {
port => 5044
}
}
output {
# 将数据导入到ES中
elasticsearch {
hosts => ["http://localhost:9200"]
index => "tizi365"
}
}
启动Filebeat
进入filebeat安装目录
./filebeat -c filebeat.yml
下面详细介绍一些重要配置项
filebeat.prospectors
文件监视器)用于指定需要关注的文件。
filebeat.prospectors:
- type: log
enabled: true
paths:
- /var/log/*.log
output.elasticsearch
如果你希望使用 filebeat 直接向 elasticsearch 输出数据,需要配置 output.elasticsearch 。
output.elasticsearch:
hosts: ["192.168.1.42:9200"]
output.logstash
如果你希望使用 filebeat 向 logstash输出数据,然后由 logstash 再向elasticsearch 输出数据,需要配置 output.logstash。
output.logstash:
hosts: ["127.0.0.1:5044"]
相比于向 elasticsearch 输出数据,个人更推荐向 logstash 输出数据。因为 logstash 和 filebeat 一起工作时,如果 logstash 忙于处理数据,会通知 FileBeat 放慢读取速度。一旦拥塞得到解决,FileBeat 将恢复到原来的速度并继续传播。这样,可以减少管道超负荷的情况。
setup.kibana
如果打算使用 Filebeat 提供的 Kibana 仪表板,需要配置 setup.kibana 。
setup.kibana:
host: "localhost:5601"
setup.dashboards
Filebeat 附带了示例 Kibana 仪表板。在使用仪表板之前,您需要创建索引模式 filebeat- *,并将仪表板加载到Kibana 中。为此,您可以运行 setup 命令或在 filebeat.yml 配置文件中配置仪表板加载。
为了在 Kibana 中加载 Filebeat 的仪表盘,需要在 filebeat.yml 配置中启动开关:
setup.dashboards.enabled: true
原理
Filebeat 有两个主要组件:
harvester:负责读取一个文件的内容。它会逐行读取文件内容,并将内容发送到输出目的地。
prospector:负责管理 harvester 并找到所有需要读取的文件源。比如类型是日志,prospector 就会遍历制定路径下的所有匹配要求的文件。
filebeat.prospectors:
- type: log
paths:
- /var/log/*.log
- /var/path2/*.log
Filebeat保持每个文件的状态,并经常刷新注册表文件中的磁盘状态。状态用于记住 harvester 正在读取的最后偏移量,并确保发送所有日志行。
Filebeat 将每个事件的传递状态存储在注册表文件中。所以它能保证事件至少传递一次到配置的输出,没有数据丢失。