You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Fluent Bit采集K8s中应用的OpenTelemetry格式标准输出日志

解决方案

无需部署OpenTelemetry Collector的方案(推荐,适用于JSON格式OTel日志)

如果你的应用输出到STDOUT的是每行一个完整的JSON序列化OpenTelemetry日志对象,可以直接通过Fluent Bit的tail插件配合自定义解析器完成采集:

  1. 定义OTel JSON解析器
    在Fluent Bit的parsers.conf中添加自定义解析规则,匹配OTel日志的时间字段和结构:
[PARSER]
    Name        otel-json
    Format      json
    Time_Key    time
    Time_Format %Y-%m-%dT%H:%M:%S.%LZ
    Time_Keep   On

注:Time_Key需对应你应用输出的OTel日志中的时间字段名,若字段名不同请自行调整。

  1. 配置Tail输入插件
    修改Fluent Bit主配置文件,指定读取目标应用的容器日志文件,并启用上述解析器:
[INPUT]
    Name        tail
    Path        /var/log/containers/*your-app-*.log
    Parser      otel-json
    Tag         k8s.otel.logs
    Mem_Buf_Limit 5MB
    Skip_Long_Lines On

替换*your-app-*.log为你的应用容器日志的匹配规则,确保只读取目标应用的日志。

  1. 配置输出到数据库
    添加对应数据库的输出插件配置(以PostgreSQL为例),将解析后的结构化OTel日志发送至目标库:
[OUTPUT]
    Name        postgresql
    Match       k8s.otel.logs
    Host        your-db-host
    Port        5432
    Database    your-db-name
    User        your-db-user
    Password    your-db-pass
    Table       otel_logs
    Time_Key    log_time

需要部署OpenTelemetry Collector的场景

如果你的应用输出的是二进制OTLP格式日志,或需要统一管理日志、指标、链路等遥测数据,建议引入OpenTelemetry Collector作为中间层:

  1. 部署OTel Collector
    以Sidecar模式部署Collector与应用容器同Pod,或部署为DaemonSet覆盖所有节点。

  2. 配置Collector采集日志
    在Collector配置中使用filelog输入插件读取应用容器日志,并解析OTel格式:

receivers:
  filelog:
    include: ["/var/log/containers/*your-app-*.log"]
    operators:
      - type: json_parser
        parse_from: body
        output: attributes
      - type: timestamp
        from: attributes.time
        layout: '%Y-%m-%dT%H:%M:%S.%LZ'

exporters:
  otlp:
    endpoint: "fluent-bit-service:4317"
    tls:
      insecure: true

service:
  pipelines:
    logs:
      receivers: [filelog]
      exporters: [otlp]
  1. 配置Fluent Bit接收OTLP数据
    启用Fluent Bit的opentelemetry输入插件,接收来自Collector的OTLP日志:
[INPUT]
    Name        opentelemetry
    Listen      0.0.0.0
    Port        4317

[OUTPUT]
    Name        your-db-plugin
    Match       *
    # 数据库相关配置...

额外说明

  • 若你的应用支持直接配置OpenTelemetry导出器,建议直接将日志发送至OTel Collector或Fluent Bit的OTel输入插件,避免STDOUT中转的额外开销。
  • 确保Fluent Bit和OTel Collector在K8s中拥有足够权限读取容器日志文件(通常通过绑定view权限的ServiceAccount实现)。

内容的提问来源于stack exchange,提问作者hugehead

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:15:03