- Filebeat 参考其他版本
- Filebeat 概述
- 快速入门:安装和配置
- 设置和运行
- 升级
- Filebeat 的工作原理
- 配置
- 输入
- 模块
- 通用设置
- 项目路径
- 配置文件加载
- 输出
- Kerberos
- SSL
- 索引生命周期管理 (ILM)
- Elasticsearch 索引模板
- Kibana 端点
- Kibana 仪表板
- 处理器
- 定义处理器
- add_cloud_metadata
- add_cloudfoundry_metadata
- add_docker_metadata
- add_fields
- add_host_metadata
- add_id
- add_kubernetes_metadata
- add_labels
- add_locale
- add_network_direction
- add_nomad_metadata
- add_observer_metadata
- add_process_metadata
- add_tags
- append
- cache
- community_id
- convert
- copy_fields
- decode_base64_field
- decode_cef
- decode_csv_fields
- decode_duration
- decode_json_fields
- decode_xml
- decode_xml_wineventlog
- decompress_gzip_field
- detect_mime_type
- dissect
- dns
- drop_event
- drop_fields
- extract_array
- fingerprint
- include_fields
- move_fields
- parse_aws_vpc_flow_log
- rate_limit
- registered_domain
- rename
- replace
- script
- syslog
- timestamp
- translate_ldap_attribute
- translate_sid
- truncate_fields
- urldecode
- 自动发现
- 内部队列
- 日志记录
- HTTP 端点
- 正则表达式支持
- 检测
- 功能标志
- filebeat.reference.yml
- 操作指南
- 模块
- 模块概述
- ActiveMQ 模块
- Apache 模块
- Auditd 模块
- AWS 模块
- AWS Fargate 模块
- Azure 模块
- CEF 模块
- Check Point 模块
- Cisco 模块
- CoreDNS 模块
- CrowdStrike 模块
- Cyberark PAS 模块
- Elasticsearch 模块
- Envoyproxy 模块
- Fortinet 模块
- Google Cloud 模块
- Google Workspace 模块
- HAproxy 模块
- IBM MQ 模块
- Icinga 模块
- IIS 模块
- Iptables 模块
- Juniper 模块
- Kafka 模块
- Kibana 模块
- Logstash 模块
- Microsoft 模块
- MISP 模块
- MongoDB 模块
- MSSQL 模块
- MySQL 模块
- MySQL Enterprise 模块
- NATS 模块
- NetFlow 模块
- Nginx 模块
- Office 365 模块
- Okta 模块
- Oracle 模块
- Osquery 模块
- Palo Alto Networks 模块
- pensando 模块
- PostgreSQL 模块
- RabbitMQ 模块
- Redis 模块
- Salesforce 模块
- Santa 模块
- Snyk 模块
- Sophos 模块
- Suricata 模块
- System 模块
- Threat Intel 模块
- Traefik 模块
- Zeek (Bro) 模块
- ZooKeeper 模块
- Zoom 模块
- 导出的字段
- ActiveMQ 字段
- Apache 字段
- Auditd 字段
- AWS 字段
- AWS CloudWatch 字段
- AWS Fargate 字段
- Azure 字段
- Beat 字段
- 解码 CEF 处理器字段
- CEF 字段
- Checkpoint 字段
- Cisco 字段
- 云提供商元数据字段
- Coredns 字段
- Crowdstrike 字段
- CyberArk PAS 字段
- Docker 字段
- ECS 字段
- Elasticsearch 字段
- Envoyproxy 字段
- Fortinet 字段
- Google Cloud Platform (GCP) 字段
- google_workspace 字段
- HAProxy 字段
- 主机字段
- ibmmq 字段
- Icinga 字段
- IIS 字段
- iptables 字段
- Jolokia Discovery 自动发现提供程序字段
- Juniper JUNOS 字段
- Kafka 字段
- kibana 字段
- Kubernetes 字段
- 日志文件内容字段
- logstash 字段
- Lumberjack 字段
- Microsoft 字段
- MISP 字段
- mongodb 字段
- mssql 字段
- MySQL 字段
- MySQL Enterprise 字段
- NATS 字段
- NetFlow 字段
- Nginx 字段
- Office 365 字段
- Okta 字段
- Oracle 字段
- Osquery 字段
- panw 字段
- Pensando 字段
- PostgreSQL 字段
- 进程字段
- RabbitMQ 字段
- Redis 字段
- s3 字段
- Salesforce 字段
- Google Santa 字段
- Snyk 字段
- sophos 字段
- Suricata 字段
- System 字段
- threatintel 字段
- Traefik 字段
- Windows ETW 字段
- Zeek 字段
- ZooKeeper 字段
- Zoom 字段
- 监控
- 安全
- 故障排除
- 获取帮助
- 调试
- 了解记录的指标
- 常见问题
- 在使用 Kubernetes 元数据时提取容器 ID 时出错
- 无法从网络卷读取日志文件
- Filebeat 未从文件中收集行
- 打开的文件句柄过多
- 注册表文件太大
- Inode 重用导致 Filebeat 跳过行
- 日志轮换导致事件丢失或重复
- 打开的文件句柄导致 Windows 文件轮换出现问题
- Filebeat 占用过多 CPU
- Kibana 中的仪表板错误地分解数据字段
- 字段未在 Kibana 可视化中编制索引或可用
- Filebeat 未传输文件的最后一行
- Filebeat 长时间保持已删除文件的打开文件句柄
- Filebeat 使用过多带宽
- 加载配置文件时出错
- 发现意外或未知字符
- Logstash 连接不起作用
- 发布到 Logstash 失败,并显示“connection reset by peer”消息
- @metadata 在 Logstash 中丢失
- 不确定是使用 Logstash 还是 Beats
- SSL 客户端无法连接到 Logstash
- 监控 UI 显示的 Beats 比预期的少
- 仪表板无法定位索引模式
- 由于 MADV 设置导致高 RSS 内存使用率
- 为 Beats 做贡献
Filebeat 的工作原理
编辑Filebeat 的工作原理
编辑本主题将介绍 Filebeat 的关键组成部分及其协同工作方式。理解这些概念将有助于您针对特定用例做出明智的 Filebeat 配置决策。
Filebeat 由两个主要组件组成:输入 和 收割机。这些组件协同工作以跟踪文件并将事件数据发送到您指定的输出。
什么是收割机?
编辑收割机负责读取单个文件的内容。收割机逐行读取每个文件,并将内容发送到输出。每个文件启动一个收割机。收割机负责打开和关闭文件,这意味着在收割机运行时文件描述符保持打开状态。如果在收割文件时删除或重命名文件,Filebeat 会继续读取该文件。这会产生一个副作用,即磁盘上的空间会被保留,直到收割机关闭。默认情况下,Filebeat 会保持文件打开状态,直到达到 close_inactive
设置的值。
关闭收割机会产生以下后果
- 文件句柄会关闭,如果文件在收割机仍在读取时被删除,则会释放底层资源。
- 只有在
scan_frequency
指定的时间过去后,才会再次开始收割文件。 - 如果在收割机关闭时文件被移动或删除,则不会继续收割该文件。
要控制何时关闭收割机,请使用 close_*
配置选项。
什么是输入?
编辑输入负责管理收割机并查找要读取的所有源。
如果输入类型为 log
,则输入会在驱动器上查找与定义的 glob 路径匹配的所有文件,并为每个文件启动一个收割机。每个输入都在自己的 Go 例程中运行。
以下示例配置 Filebeat 从与指定 glob 模式匹配的所有日志文件中收割行
filebeat.inputs: - type: log paths: - /var/log/*.log - /var/path2/*.log
Filebeat 当前支持多种 input
类型。每种输入类型可以定义多次。log
输入会检查每个文件,以查看是否需要启动收割机,是否已有一个收割机正在运行,或者是否可以忽略该文件(请参阅 ignore_older
)。仅当文件大小自收割机关闭以来发生变化时,才会拾取新行。
Filebeat 如何保持文件状态?
编辑Filebeat 会保留每个文件的状态,并经常将状态刷新到注册表文件中的磁盘。该状态用于记住收割机上次读取的偏移量,并确保发送所有日志行。如果输出(例如 Elasticsearch 或 Logstash)不可访问,Filebeat 会跟踪上次发送的行,并在输出再次可用时立即继续读取文件。在 Filebeat 运行时,每个输入的状态信息也保留在内存中。当 Filebeat 重新启动时,会使用注册表文件中的数据重建状态,并且 Filebeat 会在上次已知位置继续每个收割机。
对于每个输入,Filebeat 都会保留它找到的每个文件的状态。由于文件可以重命名或移动,因此文件名和路径不足以标识文件。对于每个文件,Filebeat 都会存储唯一的标识符,以检测该文件是否先前被收割过。
如果您的用例涉及每天创建大量新文件,您可能会发现注册表文件增长过大。有关可以设置以解决此问题的配置选项的详细信息,请参阅注册表文件过大。
Filebeat 如何确保至少一次送达?
编辑Filebeat 保证事件将至少一次交付到配置的输出,且不会丢失数据。Filebeat 能够实现此行为,因为它会将每个事件的交付状态存储在注册表文件中。
在定义的输出被阻止并且尚未确认所有事件的情况下,Filebeat 将继续尝试发送事件,直到输出确认已收到事件。
如果 Filebeat 在发送事件的过程中关闭,它不会等待输出确认所有事件后再关闭。任何发送到输出但未在 Filebeat 关闭前确认的事件,会在 Filebeat 重新启动时再次发送。这确保每个事件至少发送一次,但您最终可能会将重复事件发送到输出。您可以通过设置 shutdown_timeout
选项来配置 Filebeat 在关闭前等待特定的时间。
Filebeat 的至少一次交付保证存在一个限制,涉及日志轮换和旧文件的删除。如果日志文件写入磁盘和轮换的速度快于 Filebeat 处理它们的速度,或者如果文件在输出不可用时被删除,则可能会丢失数据。在 Linux 上,Filebeat 还可能由于 inode 重用而跳过行。有关 inode 重用问题的更多详细信息,请参阅常见问题。