商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Filebeat支持哪些日志格式

Filebeat支持哪些日志格式

  发布于2026-07-07 阅读(0)

扫一扫,手机访问

Filebeat支持的日志格式与解析能力

Filebeat支持哪些日志格式

日志采集场景千差万别,Filebeat 能应对的格式却相当全面。下面从内置解析器、模块生态、通用文本处理到具体配置,逐一拆解。

一 内置解析器与容器日志

JSON 与 NDJSON:Filebeat 内置了 JSON 解码器,可以把每行 JSON 直接展开到事件顶层。这对应用直接输出 JSON 的场景来说,简直是最省心的方式。NDJSON(逐行 JSON)同样适用。常见的配置选项包括 json.keys_under_rootjson.overwrite_keysjson.add_error_keyjson.message_key 等。如果是多行 JSON(比如堆栈信息),可以先按行解析成 JSON,再配合多行策略或后续处理器把事件重新组合起来。

Syslog:内置的 syslog 解析器支持 RFC 3164 和 RFC 5424 两种标准格式,并且能自动检测当前日志属于哪一种。使用时只需指定 format: auto,还可以单独设置时区、是否记录解析错误等参数。

容器与 Kubernetes 日志:通过 filestream 输入的 container 解析器可以读取容器的标准输出/错误流。支持 docker 和 cri 两种格式的自动检测(设置 format: auto/docker/cri),在 K8s 环境下直接解析容器日志非常方便。

多行事件处理:对于 Ja va 堆栈、异常跟踪这类跨越多行的日志,Filebeat 提供了多行配置(patternnegatematch)来将它们合并为一个事件。这个功能经常和上述解析器配合使用,能有效避免被拆散的异常信息。

二 模块生态覆盖的常见服务日志

Filebeat 提供了大量官方模块(modules),开箱即用地解析并可视化常见服务日志。典型代表包括 Nginx、Apache、MySQL、Kafka 等。每个模块通常都已经配好了默认日志路径、必要的多行合并策略、Elasticsearch Ingest Pipeline(用于字段类型转换和解析),以及现成的 Kibana 仪表板。以 Nginx 模块为例,它内置了对 access 日志和 error 日志的完整解析与展示能力——部署后几乎不需要额外配置。

三 通用文本与正则场景

对于未结构化的纯文本日志(比如自定义格式或简单的分隔日志),Filebeat 可以充当“逐行采集器”,直接把原始消息发送出去。后续在 Logstash 或通过 Ingest Pipeline 使用 Grok / Dissect 等处理器进行解析。当然,也可以在 Filebeat 端先用 include_message 之类的解析器进行消息过滤与分流,再进入下游的解析链路——灵活度很高。

四 快速配置示例

下面给出几个最常见的配置模板,覆盖 JSON、容器、syslog 和多行合并场景,可根据实际日志格式直接套用。

解析 JSON 日志(将 JSON 字段提升到顶层,遇到解析错误时添加 error.message):

filebeat.inputs:
- type: filestream
  id: app-json
  paths:
    - /var/log/app/*.log
  parsers:
    - json:
        keys_under_root: true
        overwrite_keys: true
        add_error_key: true

解析容器 stdout/stderr(自动识别 docker/cri 格式):

filebeat.inputs:
- type: filestream
  id: k8s-container
  paths:
    - /var/log/containers/*.log
  parsers:
    - container:
        stream: stdout

解析 syslog(指定 RFC 5424 格式并设置时区):

filebeat.inputs:
- type: filestream
  id: syslog
  paths:
    - /var/log/syslog
  parsers:
    - syslog:
        format: rfc5424
        timezone: America/Chicago
        log_errors: true

多行合并示例(以 [ 开头的行作为新事件的开始):

filebeat.inputs:
- type: filestream
  id: tomcat-error
  paths:
    - /opt/tomcat/logs/catalina.out
  multiline:
    pattern: '^\['
    negate: true
    match: after

以上示例覆盖了 JSON、容器、syslog 和多行合并等常见场景。实际使用时,只需根据自己的日志格式替换路径和参数即可。

本文转载于:https://www.yisu.com/ask/38389806.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注