Beats 是安装在服务器上的数据中转代理。html
Beats 能够将数据直接传输到 Elasticsearch 或传输到 Logstash 。mysql
Beats 有多种类型,能够根据实际应用须要选择合适的类型。linux
经常使用的类型有:nginx
参考sql
更多 Beats 类型能够参考:community-beats服务器
说明网络
因为本人工做中只应用了 FileBeat,因此后面内容仅介绍 FileBeat 。elasticsearch
相比 Logstash,FileBeat 更加轻量化。ide
在任何环境下,应用程序都有停机的可能性。 Filebeat 读取并转发日志行,若是中断,则会记住全部事件恢复联机状态时所在位置。ui
Filebeat带有内部模块(auditd,Apache,Nginx,System和MySQL),可经过一个指定命令来简化通用日志格式的收集,解析和可视化。
FileBeat 不会让你的管道超负荷。FileBeat 若是是向 Logstash 传输数据,当 Logstash 忙于处理数据,会通知 FileBeat 放慢读取速度。一旦拥塞获得解决,FileBeat 将恢复到原来的速度并继续传播。
Unix / Linux 系统建议使用下面方式安装,由于比较通用。
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.1.1-linux-x86_64.tar.gz tar -zxf filebeat-6.1.1-linux-x86_64.tar.gz
参考
更多内容能够参考:filebeat-installation
首先,须要知道的是:filebeat.yml
是 filebeat 的配置文件。配置文件的路径会由于你安装方式的不一样而变化。
Beat 全部系列产品的配置文件都基于 YAML 格式,FileBeat 固然也不例外。
filebeat.yml 部分配置示例:
filebeat: prospectors: - type: log paths: - /var/log/*.log multiline: pattern: '^[' match: after
参考
更多 filebeat 配置内容能够参考:配置 filebeat
更多 filebeat.yml 文件格式内容能够参考:filebeat.yml 文件格式
(文件监视器)用于指定须要关注的文件。
示例
filebeat.prospectors: - type: log enabled: true paths: - /var/log/*.log
若是你但愿使用 filebeat 直接向 elasticsearch 输出数据,须要配置 output.elasticsearch 。
示例
output.elasticsearch: hosts: ["192.168.1.42:9200"]
若是你但愿使用 filebeat 向 logstash输出数据,而后由 logstash 再向elasticsearch 输出数据,须要配置 output.logstash。
注意
相比于向 elasticsearch 输出数据,我的更推荐向 logstash 输出数据。
由于 logstash 和 filebeat 一块儿工做时,若是 logstash 忙于处理数据,会通知 FileBeat 放慢读取速度。一旦拥塞获得解决,FileBeat 将恢复到原来的速度并继续传播。这样,能够减小管道超负荷的状况。
示例
output.logstash: hosts: ["127.0.0.1:5044"]
此外,还须要在 logstash 的配置文件(如 logstash.conf)中指定 beats input 插件:
input { beats { port => 5044 # 此端口须要与 filebeat.yml 中的端口相同 } } # The filter part of this file is commented out to indicate that it is # optional. # filter { # # } output { elasticsearch { hosts => "localhost:9200" manage_template => false index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } }
若是打算使用 Filebeat 提供的 Kibana 仪表板,须要配置 setup.kibana 。
示例
setup.kibana: host: "localhost:5601"
在 Elasticsearch 中,索引模板用于定义设置和映射,以肯定如何分析字段。
在 Filebeat 中,setup.template.settings 用于配置索引模板。
Filebeat 推荐的索引模板文件由 Filebeat 软件包安装。若是您接受 filebeat.yml 配置文件中的默认配置,Filebeat在成功链接到 Elasticsearch 后自动加载模板。
您能够经过在 Filebeat 配置文件中配置模板加载选项来禁用自动模板加载,或加载本身的模板。您还能够设置选项来更改索引和索引模板的名称。
参考
更多内容能够参考:filebeat-template
说明
如无必要,使用 Filebeat 配置文件中的默认索引模板便可。
Filebeat 附带了示例 Kibana 仪表板。在使用仪表板以前,您须要建立索引模式 filebeat- *
,并将仪表板加载到Kibana 中。为此,您能够运行 setup
命令或在 filebeat.yml
配置文件中配置仪表板加载。
为了在 Kibana 中加载 Filebeat 的仪表盘,须要在 filebeat.yml
配置中启动开关:
setup.dashboards.enabled: true
参考
更多内容能够参考:configuration-dashboards
filebeat 提供了一系列命令来完成各类功能。
执行命令方式:
./filebeat COMMAND
参考
更多内容能够参考:command-line-options
说明
我的认为命令行没有必要一一掌握,由于绝大部分功能均可以经过配置来完成。且经过命令行指定功能这种方式要求每次输入一样参数,不利于固化启动方式。
最重要的固然是启动命令 run 了。
示例 指定配置文件启动
./filebeat run -e -c filebeat.yml -d "publish" ./filebeat -e -c filebeat.yml -d "publish" # run 能够省略
Filebeat 提供了一套预构建的模块,让您能够快速实施和部署日志监视解决方案,并附带示例仪表板和数据可视化。这些模块支持常见的日志格式,例如Nginx,Apache2和MySQL 等。
output.elasticsearch: hosts: ["myEShost:9200"] username: "elastic" password: "elastic" setup.kibana: host: "mykibanahost:5601" username: "elastic" password: "elastic
username 和 password 是可选的,若是不须要认证则不填。
执行下面命令,filebeat 会加载推荐索引模板。
./filebeat setup -e
执行下面命令,指定但愿加载的模块。
./filebeat -e --modules system,nginx,mysql
参考
更多内容能够参考: 配置 filebeat 模块 | filebeat 支持模块
Filebeat 有两个主要组件:
harvester:负责读取一个文件的内容。它会逐行读取文件内容,并将内容发送到输出目的地。
prospector:负责管理 harvester 并找到全部须要读取的文件源。好比类型是日志,prospector 就会遍历制定路径下的全部匹配要求的文件。
filebeat.prospectors: - type: log paths: - /var/log/*.log - /var/path2/*.log
Filebeat保持每一个文件的状态,并常常刷新注册表文件中的磁盘状态。状态用于记住 harvester 正在读取的最后偏移量,并确保发送全部日志行。
Filebeat 将每一个事件的传递状态存储在注册表文件中。因此它能保证事件至少传递一次到配置的输出,没有数据丢失。