Beats
Beats是一个开放源代码的数据发送器。我们可以把Beats作为一种代理安装在我们的服务器上,这样就可以比较方便地将数据发送到Elasticsearch或者Logstash中。Elastic Stack提供了多种类型的Beats组件。
审计数据
|
AuditBeat
|
日志文件
|
FileBeat
|
云数据
|
FunctionBeat
|
可用性数据
|
HeartBeat
|
系统日志
|
JournalBeat
|
指标数据
|
MetricBeat
|
网络流量数据
|
PacketBeat
|
Windows事件日志
|
Winlogbeat
|
Beats可以直接将数据发送到Elasticsearch或者发送到Logstash,基于Logstash可以进一步地对数据进行处理,然后将处理后的数据存入到Elasticsearch,最后使用Kibana进行数据可视化
1、FileBeat简介
FileBeat专门用于转发和收集日志数据的轻量级采集工具。它可以为作为代理安装在服务器上,FileBeat监视指定路径的日志文件,收集日志数据,并将收集到的日志转发到Elasticsearch或者Logstash
2、FileBeat的工作原理
启动FileBeat时,会启动一个或者多个输入(Input),这些Input监控指定的日志数据位置。FileBeat会针对每一个文件启动一个Harvester(收割机)。Harvester读取每一个文件的日志,将新的日志发送到
libbeat,libbeat将数据收集到一起,并将数据发送给输出(Output)。
3、安装FileBeat
安装FileBeat只需要将FileBeat Linux安装包上传到Linux系统,并将压缩包解压到系统就可以了。 FileBeat官方下载地址: https://www.elastic.co/cn/downloads/past-releases/filebeat-7-6-1
上传FileBeat安装到Linux,并解压。 tar -xvzf filebeat-7.6.1-linux-x86_64.tar.gz -C /usr/local/es/
4、使用FileBeat采集MQ日志到Elasticsearch
4.1、需求分析 在资料中有一个mq_server.log.tar.gz压缩包,里面包含了很多的MQ服务器日志,现在我们为了通过在Elasticsearch中快速查询这些日志,定位问题。我们需要用FileBeats将日志数据上传到Elasticsearch中。
问题: 首先,我们要指定FileBeat采集哪些MQ日志,因为FileBeats中必须知道采集存放在哪儿的日志,才能进行采集。 其次,采集到这些数据后,还需要指定FileBeats将采集到的日志输出到Elasticsearch,那么Elasticsearch的地址也必须指定。
4.2、配置FileBeats FileBeats配置文件主要分为两个部分。 1. inputs 2. output 从名字就能看出来,一个是用来输入数据的,一个是用来输出数据的。
4.2.1、input配置 filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log #- c:\programdata\elasticsearch\logs\*
在FileBeats中,可以读取一个或多个数据源。
FileBeats配置文件 - input
4.2.2、output配置 FileBeat配置文件 - output
默认FileBeat会将日志数据放入到名称为:filebeat-%filebeat版本号%-yyyy.MM.dd 的索引中。
PS:
FileBeats中的filebeat.reference.yml包含了FileBeats所有支持的配置选项。
4.3、配置文件
1. 创建配置文件 cd /usr/local/es/filebeat-7.6.1-linux-x86_64 touch filebeat_mq_log.yml vim filebeat_mq_log.yml
2. 复制以下到配置文件中 filebeat.inputs: - type: log enabled: true paths: - /var/mq/log/server.log.* output.elasticsearch: hosts: ["192.168.21.130:9200", "192.168.21.131:9200", "192.168.21.132:9200"]
4.4、运行FileBeat 1. 启动Elasticsearch 在每个节点上执行以下命令,启动Elasticsearch集群: nohup /usr/local/es/elasticsearch-7.6.1/bin/elasticsearch 2>&1 & 2. 运行FileBeat ./filebeat -c filebeat_mq_log.yml -e
3. 将日志数据上传到/var/mq/log,并解压 mkdir -p /var/mq/log cd /var/mq/log tar -zxvf mq_server.log.tar.gz
4.5、查询数据
通过head插件,我们可以看到filebeat采集了日志消息,并写入到Elasticsearch集群中。
五、FileBeat是如何工作的
FileBeat主要由input和harvesters(收割机)组成。这两个组件协同工作,并将数据发送到指定的输出。 1、input和harvester 1.1、inputs(输入) input是负责管理Harvesters和查找所有要读取的文件的组件 如果输入类型是 log,input组件会查找磁盘上与路径描述的所有文件,并为每个文件启动一个Harvester,每个输入都独立地运行 1.2、Harvesters(收割机) Harvesters负责读取单个文件的内容,它负责打开/关闭文件,并逐行读取每个文件的内容,将读取到的内容发送给输出 每个文件都会启动一个Harvester Harvester运行时,文件将处于打开状态。如果文件在读取时,被移除或者重命名,FileBeat将继续读取该文件 2、FileBeats如何保持文件状态 FileBeat保存每个文件的状态,并定时将状态信息保存在磁盘的「注册表」文件中 该状态记录Harvester读取的最后一次偏移量,并确保发送所有的日志数据 如果输出(Elasticsearch或者Logstash)无法访问,FileBeat会记录成功发送的最后一行,并在输出(Elasticsearch或者Logstash)可用时,继续读取文件发送数据 在运行FileBeat时,每个input的状态信息也会保存在内存中,重新启动FileBeat时,会从「注册表」文件中读取数据来重新构建状态。 ' 在/usr/local/es/filebeat-7.6.1-linux-x86_64/data目录中有一个Registry文件夹,里面有一个data.json,该文件中记录了Harvester读取日志的offset。