- 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 做贡献
数据去重
编辑数据去重
编辑Beats 框架保证至少一次交付,以确保在事件发送到支持确认的输出(例如 Elasticsearch、Logstash、Kafka 和 Redis)时不会丢失数据。如果一切按计划进行,这很好。但是,如果 Filebeat 在处理过程中关闭,或者在事件被确认之前连接丢失,则可能会得到重复数据。
什么导致 Elasticsearch 中出现重复数据?
编辑当输出被阻塞时,Filebeat 中的重试机制会尝试重新发送事件,直到输出确认它们。如果输出接收到事件,但无法确认它们,则数据可能会多次发送到输出。因为文档 ID 通常由 Elasticsearch 在从 Beats 接收到数据之后设置,所以重复的事件会被索引为新文档。
如何避免重复?
编辑与其允许 Elasticsearch 设置文档 ID,不如在 Beats 中设置 ID。ID 存储在 Beats 的 @metadata._id
字段中,用于在索引期间设置文档 ID。这样,如果 Beats 多次向 Elasticsearch 发送相同的事件,Elasticsearch 将覆盖现有文档,而不是创建新文档。
@metadata._id
字段与事件一起传递,以便您可以在 Filebeat 发布事件之后但在 Elasticsearch 接收到事件之前使用它来设置文档 ID。例如,请参阅 Logstash 管道示例。
有几种方法可以在 Beats 中设置文档 ID
-
add_id
处理器当您的数据没有自然键字段,并且您无法从现有字段派生唯一键时,请使用
add_id
处理器。此示例为每个事件生成唯一 ID 并将其添加到
@metadata._id
字段processors: - add_id: ~
-
fingerprint
处理器使用
fingerprint
处理器从一个或多个现有字段派生唯一键。此示例使用
field1
和field2
的值来派生唯一键,并将其添加到@metadata._id
字段processors: - fingerprint: fields: ["field1", "field2"] target_field: "@metadata._id"
-
decode_json_fields
处理器当您正在解码包含自然键字段的 JSON 字符串时,请使用
decode_json_fields
处理器中的document_id
设置。对于此示例,假设
message
字段包含 JSON 字符串{"myid": "100", "text": "Some text"}
。此示例从 JSON 字符串中获取myid
的值,并将其存储在@metadata._id
字段中processors: - decode_json_fields: document_id: "myid" fields: ["message"] max_depth: 1 target: ""
生成的文档 ID 是
100
。 -
JSON 输入设置
如果您正在摄取 JSON 格式的数据,并且数据具有自然键字段,请使用
json.document_id
输入设置。此示例从 JSON 文档中获取
key1
的值,并将其存储在@metadata._id
字段中filebeat.inputs: - type: log paths: - /path/to/json.log json.document_id: "key1"
Logstash 管道示例
编辑对于此示例,假设您已使用前面描述的方法之一将文档 ID 存储在 Beats @metadata._id
字段中。当您通过 Logstash 发送 Beats 数据到 Elasticsearch 时,为了保留 ID,请在 Logstash 管道中设置 document_id
字段
input { beats { port => 5044 } } output { if [@metadata][_id] { elasticsearch { hosts => ["https://127.0.0.1:9200"] document_id => "%{[@metadata][_id]}" index => "%{[@metadata][beat]}-%{[@metadata][version]}" } } else { elasticsearch { hosts => ["https://127.0.0.1:9200"] index => "%{[@metadata][beat]}-%{[@metadata][version]}" } } }
将 Elasticsearch 输出中的 |
当 Elasticsearch 索引文档时,它会将文档 ID 设置为指定的值,从而保留从 Beats 传递的 ID。
On this page