1分钟系列-Filebeat简介与安装

Posted by Yezhiwei on May 12, 2020

Beats 轻量型数据采集器

Beats 平台集合了多种单一用途数据采集器。它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据。

Beats 系列

全品类采集器,搞定所有数据类型。

Beats 可以直接将数据发送到 Elasticsearch 或通过 Logstash,在Kibana 中可视化之前,可以进一步处理和增强数据。

Filebeat

平时我们在查看日志时,使用 tail -f xxx.log 命令来实时查看日志,而当我们要面对成百上千、甚至成千上万的服务器、虚拟机和容器生成的日志时,再使用上面的命令来操作几乎是完全不可能的。Filebeat 为我们提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情不再繁杂。

Filebeat 内置有多种模块(Apache、Cisco ASA、Microsoft Azure、Nginx、MySQL 等等),可针对常见格式的日志大大简化收集、解析和可视化过程,只需一条命令即可。之所以能实现这一点,是因为它将自动默认路径(因操作系统而异)与 Elasticsearch 采集节点管道的定义和 Kibana 仪表板组合在一起。

Filebeat 工作原理

无论在任何环境中,随时都潜伏着应用程序中断的风险。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 文件中。

Filebeat 采集日志到架构

安装并配置

下载安装

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.2-linux-x86_64.tar.gz

# 将下载包解压到 /usr/local 目录下
tar xzvf filebeat-7.6.2-linux-x86_64.tar.gz -C /usr/local

新创建配置文件

监听 stdin 输入,并输出到控制台上

filebeat.inputs:
- type: stdin
  enabled: true
output.console:
  pretty: true
  enable: true

启动执行

cd /usr/local/filebeat-7.6.2-linux-x86_64

./filebeat -e -c filebeat-std.yml

# 参数说明
-e: 输出到标准输出,默认输出到syslog和logs下 
-c: 指定配置文件

测试

服务启动完成后,在终端上输入 hello,等待一会儿会在控制台上输出如下图所示信息,message 字段就是我们刚才输入内容

下一步计划

Filebeat 采集日志数据发送到 Elasticsearch