- 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 支持基于提供程序提示的自动发现。提示系统会在 Kubernetes Pod 注释或 Docker 标签中查找带有前缀 co.elastic.logs
的提示。一旦容器启动,Filebeat 将检查它是否包含任何提示,并为其启动相应的配置。提示告诉 Filebeat 如何获取给定容器的日志。默认情况下,将使用 filestream
输入从容器检索日志。您可以使用提示来修改此行为。以下是支持的提示的完整列表
co.elastic.logs/enabled
编辑默认情况下,Filebeat 从所有容器获取日志,您可以将此提示设置为 false
以忽略容器的输出。Filebeat 不会读取或发送来自它的日志。如果禁用默认配置,则可以使用此注释仅对设置为 true
的容器启用日志检索。如果您打算将其与 Kubernetes 一起使用,请记住,注释值只能是字符串类型,因此您需要将其明确定义为 "true"
或 "false"
。
co.elastic.logs/multiline.*
编辑多行设置。有关所有受支持选项的完整列表,请参阅多行消息。
co.elastic.logs/json.*
编辑JSON 设置。对于 filestream
输入(默认),有关所有受支持选项的完整列表,请参阅ndjson
。对于 container
或 log
输入,有关所有受支持选项的完整列表,请参阅json
。
例如,以下带有 JSON 选项的提示
co.elastic.logs/json.message_key: "log" co.elastic.logs/json.add_error_key: "true"
将导致以下输入配置
-
filestream
parsers: - ndjson: message_key: "log" add_error_key: "true"
-
log
json.message_key: "log" json.add_error_key: "true"
log
输入的 keys_under_root
JSON 选项在 filestream 输入中被 target
选项替换。阅读文档(ndjson
)了解如何正确使用它。
co.elastic.logs/include_lines
编辑您希望 Filebeat 包含的行匹配的正则表达式列表。有关更多信息,请参阅输入。
co.elastic.logs/exclude_lines
编辑您希望 Filebeat 排除的行匹配的正则表达式列表。有关更多信息,请参阅输入。
co.elastic.logs/module
编辑指定要用于解析来自容器的日志的模块,而不是使用原始 docker
输入。有关支持的模块列表,请参阅模块。
co.elastic.logs/fileset
编辑配置模块后,将容器日志映射到模块文件集。您可以像这样配置单个文件集
co.elastic.logs/fileset: access
或者配置容器中每个流(stdout 和 stderr)的文件集
co.elastic.logs/fileset.stdout: access co.elastic.logs/fileset.stderr: error
co.elastic.logs/raw
编辑当需要完全设置整个输入/模块配置时,可以使用 raw
提示。您可以提供输入配置的字符串化 JSON。raw
会覆盖所有其他提示,并且可以用于创建单个或多个配置。
co.elastic.logs/raw: "[{\"containers\":{\"ids\":[\"${data.container.id}\"]},\"multiline\":{\"negate\":\"true\",\"pattern\":\"^test\"},\"type\":\"docker\"}]"
co.elastic.logs/processors
编辑定义要添加到 Filebeat 输入/模块配置的处理器。有关支持的处理器列表,请参阅处理器。
如果处理器配置使用列表数据结构,则必须枚举对象字段。例如,以下 rename
处理器配置的提示
processors: - rename: fields: - from: "a.g" to: "e.d" fail_on_error: true
将如下所示
co.elastic.logs/processors.rename.fields.0.from: "a.g" co.elastic.logs/processors.rename.fields.1.to: "e.d" co.elastic.logs/processors.rename.fail_on_error: 'true'
如果处理器配置使用映射数据结构,则不需要枚举。例如,与以下 add_fields
配置等效的配置
processors: - add_fields: target: project fields: name: myproject
是
co.elastic.logs/processors.1.add_fields.target: "project" co.elastic.logs/processors.1.add_fields.fields.name: "myproject"
为了提供处理器定义的顺序,可以提供数字。如果不是,提示构建器将进行任意排序
co.elastic.logs/processors.1.dissect.tokenizer: "%{key1} %{key2}" co.elastic.logs/processors.dissect.tokenizer: "%{key2} %{key1}"
在上面的示例中,标记为 1
的处理器定义将首先执行。
co.elastic.logs/pipeline
编辑定义要添加到 Filebeat 输入/模块配置的摄取管道 ID。
co.elastic.logs/pipeline: custom-pipeline
当提示与模板一起使用时,仅当没有解析为 true 的模板条件时,才会评估提示。例如
filebeat.autodiscover.providers: - type: docker hints.enabled: true hints.default_config: type: container paths: - /var/lib/docker/containers/${data.container.id}/*.log templates: - condition: equals: docker.container.labels.type: "pipeline" config: - type: container paths: - "/var/lib/docker/containers/${data.docker.container.id}/*.log" pipeline: my-pipeline
在此示例中,首先评估条件 docker.container.labels.type: "pipeline"
,如果未匹配,则会处理提示,如果仍然没有有效的配置,则将使用 hints.default_config
。
Kubernetes
编辑Kubernetes 自动发现提供程序支持 Pod 注释中的提示。要启用它,只需设置 hints.enabled
filebeat.autodiscover: providers: - type: kubernetes hints.enabled: true
您可以配置在看到新容器时将启动的默认配置,如下所示
filebeat.autodiscover: providers: - type: kubernetes hints.enabled: true hints.default_config: type: container paths: - /var/log/containers/*-${data.container.id}.log # CRI path
您还可以完全禁用默认设置,因此只会检索注释为 co.elastic.logs/enabled: true
的 Pod
filebeat.autodiscover: providers: - type: kubernetes hints.enabled: true hints.default_config.enabled: false
您可以使用有用的信息注释 Kubernetes Pod,以启动 Filebeat 输入或模块
annotations: co.elastic.logs/multiline.pattern: '^\[' co.elastic.logs/multiline.negate: true co.elastic.logs/multiline.match: after
多个容器
编辑当一个 Pod 有多个容器时,除非您在提示中放置容器名称,否则设置是共享的。例如,这些提示配置了 Pod 中所有容器的多行设置,但为名为 sidecar
的容器设置了特定的 exclude_lines
提示。
annotations: co.elastic.logs/multiline.pattern: '^\[' co.elastic.logs/multiline.negate: true co.elastic.logs/multiline.match: after co.elastic.logs.sidecar/exclude_lines: '^DBG'
多组提示
编辑当一个容器需要在其上定义多个输入时,可以提供带有数字前缀的注释集。如果没有数字前缀的提示,则将它们组合到一个配置中。
annotations: co.elastic.logs/exclude_lines: '^DBG' co.elastic.logs/1.include_lines: '^DBG' co.elastic.logs/1.processors.dissect.tokenizer: "%{key2} %{key1}"
以上配置将生成两个输入配置。第一个输入仅处理调试日志,并通过 dissect 分词器传递。第二个输入处理除调试日志之外的所有内容。
命名空间默认值
编辑可以在命名空间的注释中配置提示作为在缺少 Pod 级别注释时使用的默认值。生成的提示是 Pod 注释和命名空间注释的组合,其中 Pod 的优先级更高。要启用命名空间默认值,请按如下方式为命名空间对象配置 add_resource_metadata
filebeat.autodiscover: providers: - type: kubernetes hints.enabled: true add_resource_metadata: namespace: include_annotations: ["nsannotation1"]
Docker
编辑Docker 自动发现提供程序支持标签中的提示。要启用它,只需设置 hints.enabled
filebeat.autodiscover: providers: - type: docker hints.enabled: true
您可以配置在看到新容器时将启动的默认配置,如下所示
filebeat.autodiscover: providers: - type: docker hints.enabled: true hints.default_config: type: container paths: - /var/log/containers/*-${data.container.id}.log # CRI path
您还可以完全禁用默认设置,因此只会检索带有标签 co.elastic.logs/enabled: true
的容器
filebeat.autodiscover: providers: - type: docker hints.enabled: true hints.default_config.enabled: false
您可以使用有用的信息标记 Docker 容器,以启动 Filebeat 输入,例如
co.elastic.logs/module: nginx co.elastic.logs/fileset.stdout: access co.elastic.logs/fileset.stderr: error
上面的标签配置 Filebeat 使用 Nginx 模块来收集此容器的日志。访问日志将从 stdout 流中检索,错误日志将从 stderr 中检索。
您可以使用有用的信息标记 Docker 容器,以解码结构化为 JSON 消息的日志,例如
co.elastic.logs/json.keys_under_root: true co.elastic.logs/json.add_error_key: true co.elastic.logs/json.message_key: log
Nomad
编辑Nomad 自动发现提供程序支持使用 meta
节的提示。要启用它,只需设置 hints.enabled
filebeat.autodiscover: providers: - type: nomad hints.enabled: true
您可以配置在看到新作业时将启动的默认配置,如下所示
filebeat.autodiscover: providers: - type: nomad hints.enabled: true hints.default_config: type: log paths: - /opt/nomad/alloc/${data.nomad.allocation.id}/alloc/logs/${data.nomad.task.name}.*
您还可以禁用默认配置,以便仅收集显式注释为 "co.elastic.logs/enabled" = "true"
的作业的日志
filebeat.autodiscover: providers: - type: nomad hints.enabled: true hints.default_config: enabled: false type: log paths: - /opt/nomad/alloc/${data.nomad.allocation.id}/alloc/logs/${data.nomad.task.name}.*
您可以使用 meta
节中的有用信息注释 Nomad 作业,以启动 Filebeat 输入或模块
meta { "co.elastic.logs/enabled" = "true" "co.elastic.logs/multiline.pattern" = "^\\[" "co.elastic.logs/multiline.negate" = "true" "co.elastic.logs/multiline.match" = "after" }
如果您正在使用自动发现,那么在大多数情况下,您将希望使用 add_nomad_metadata
处理器来使用 Nomad 元数据丰富事件。此示例配置 {Filebeat} 通过 HTTPS 连接到本地 Nomad 代理,并将 Nomad 分配 ID 添加到来自输入的所有事件。稍后,管道中的 add_nomad_metadata
处理器将使用该 ID 来丰富事件。
filebeat.autodiscover: providers: - type: nomad address: https://127.0.0.1:4646 hints.enabled: true hints.default_config: enabled: false type: log paths: - /opt/nomad/alloc/${data.nomad.allocation.id}/alloc/logs/${data.nomad.task.name}.* processors: - add_fields: target: nomad fields: allocation.id: ${data.nomad.allocation.id} processors: - add_nomad_metadata: when.has_fields.fields: [nomad.allocation.id] address: https://127.0.0.1:4646 default_indexers.enabled: false default_matchers.enabled: false indexers: - allocation_uuid: matchers: - fields: lookup_fields: - 'nomad.allocation.id'
On this page