7.1 Beats简介
- Beats 平台是 Elastic.co 从 packetbeat 发展出来的数据收集器系统
- beat 收集器可以直接写入 Elasticsearch,也可以传输给 Logstash
- 其中抽象出来的 libbeat,提供了统一的数据发送方法,输入配置解析,日志记录框架等功能
- 也就是说,所有的 beat 工具,在配置上,除了 input 以外,在 output、filter、shipper、logging、run-options 上的配置规则都是完全一致的
7.2 Beats的家族
-
Beats是用于单用途数据托运人的平台。它们以轻量级代理的形式安装,并将来自成百上千台机器的数据发送到Logstash或Elasticsearch。
7.3 Beats功能
7.4 Filebeat简介
-
filebeat 是基于原先 logstash-forwarder 的源码改造出来的
7.4.1 Filebeat重要参数
- spool_size: 1024 # 最大可以攒够 1024 条数据一起发送出去
- idle_timeout: "5s" # 否则每5 秒钟也得发送一次
- document_type: "apache" # 定义写入 ES 时的 _type 值
- ignore_older: "24h" # 超过 24小时没更新内容的文件不再监听。在 windows 上另外有一个配置叫 force_close_files,只要文件名一变化立刻关闭文件句柄,保证文件可以被删除,缺陷是可能会有日志还没读完
- scan_frequency: "10s" # 每 10秒钟扫描一次目录,更新通配符匹配上的文件列表
- tail_files: false # 是否从文件末尾开始读取
- harvester_buffer_size: 16384 # 实际读取文件时,每次读取 16384 字节
- backoff: "1s" # 每 1 秒检测一次文件是否有新的一行内容需要读取
7.4.2 Filebeat是如何工作的
- Filebeat由两个主要组件组成:inputs 和 harvesters (直译:收割机,采集器)
- 这些组件一起工作以跟踪文件,并将事件数据发送到你指定的输出
7.5 harvester是什么
- 一个harvester负责读取一个单个文件的内容。
- harvester逐行读取每个文件(一行一行地读取每个文件),并把这些内容发送到输出。
- 每个文件启动一个harvester。
- harvester负责打开和关闭这个文件,这就意味着在harvester运行时文件描述符保持打开状态。
- 在harvester正在读取文件内容的时候,文件被删除或者重命名了,那么Filebeat会续读这个文件。这就有一个问题了,就是只要负责这个文件的harvester没用关闭,那么磁盘空间就不会释放。默认情况下,Filebeat保存文件打开直到close_inactive到达。
7.6 input是什么
- 一个input负责管理harvesters,并找到所有要读取的源。
- 如果input类型是log,则input查找驱动器上与已定义的glob路径匹配的所有文件,并为每个文件启动一个harvester。
- 每个input都在自己的Go例程中运行。
- 下面的例子配置Filebeat从所有匹配指定的glob模式的文件中读取行:
filebeat.inputs:
- type: log
paths:
- /var/log/*.log
- /var/path2/*.log
7.6 Filebeat如何保持文件状态
- Filebeat保存每个文件的状态,并经常刷新状态到磁盘上的注册文件(registry)。
- 状态用于记住harvester读取的最后一个偏移量,并确保所有日志行被发送(到输出)。
- 如果输出,比如Elasticsearch 或者 Logstash等,无法访问,那么Filebeat会跟踪已经发送的最后一行,并只要输出再次变得可用时继续读取文件。
- 当Filebeat运行时,会将每个文件的状态新保存在内存中。
- 当Filebeat重新启动时,将使用注册文件中的数据重新构建状态,Filebeat将在最后一个已知位置继续每个harvester。
- 对于每个输入,Filebeat保存它找到的每个文件的状态。
- 因为文件可以重命名或移动,所以文件名和路径不足以标识文件。
- 对于每个文件,Filebeat存储惟一标识符,以检测文件是否以前读取过。
- 如果你的情况涉及每天创建大量的新文件,你可能会发现注册表文件变得太大了。
7.7 模块
- Filebeat模块简化了公共日志格式的收集、解析和可视化。
- 一个典型的模块(例如,对于Nginx日志)是由一个或多个fileset组成的(以Nginx为例,access 和 error)。
- 一个fileset包含以下内容:
- Filebeat 输入配置,其中包含要默认的查找或者日志文件路径。这些默认路径取决于操作系统。Filebeat配置还负责在需要的时候拼接多行事件。
- Elasticsearch Ingest Node 管道定义,用于解析日志行。
- 字段定义,用于为每个字段在Elasticsearch中配置正确类型。它们还包含每个字段的简短描述。
- 简单的Kibana dashboards,用于可视化日志文件。
- Filebeat会根据你的环境自动调整这些配置,并将它们加载到相应的Elastic stack 组件中。
大数据视频推荐:
腾讯课堂
CSDN
ELK入门精讲
AIOps智能运维实战
ELK7 stack开发运维
大数据语音推荐:
ELK7 stack开发运维
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通
网友评论