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

从JSON的logRecords数组提取数据并通过OTel转发的技术问题

解决OTel Collector拆分JSON数组元素并转发的问题

核心思路

要实现拆分logRecords数组的每个元素,关键是在数据处理流程中加入数组拆分逻辑,同时避免重复处理导致的元素重复问题。

需求一:从JSON提取logRecords元素转发到OTel接收器

针对文件输入场景,调整filelog接收器配置,通过内置处理器拆分数组:

receivers:
  filelog:
    include: ["/path/to/your/logfile.json"]
    start_at: beginning
    operators:
      # 解析完整JSON为结构化数据
      - type: json_parser
        parse_from: body
        output: parsed_json
      # 拆分logRecords数组的每个元素,生成独立日志条目
      - type: split
        field: parsed_json.logRecords
        target: body
        # 丢弃原数组结构,仅保留单个元素
        preserve_keys: []
      # 可选:将拆分后的元素重新解析为JSON(按需启用)
      - type: json_parser
        parse_from: body

需求二:接收完整JSON后拆分并发送到REST API

在OTel Collector管道中加入transform处理器,确保发送到REST端点前完成拆分:

processors:
  transform:
    error_mode: ignore
    log_statements:
      # 遍历logRecords数组,为每个元素生成新日志条目
      - context: log
        statements:
          - foreach $elem in body.logRecords => {
              append(new_log({body: $elem}))
            }
          # 删除原日志条目,避免重复发送
          - delete()

exporters:
  http:
    endpoint: "https://your-rest-api-endpoint.com/logs"
    headers:
      Content-Type: "application/json"
    timeout: 5s

service:
  pipelines:
    logs:
      receivers: [filelog]
      processors: [transform]
      exporters: [http]

常见问题排查

  • 重复元素问题:检查是否同时在filelog的operators和transform处理器中做了拆分,重复操作会导致元素重复,只需保留一个拆分环节即可。
  • 数组未拆分:确认split处理器的field路径与解析后的字段结构匹配,比如parsed_json.logRecords要对应实际的字段层级。
  • 日志结构异常:用debug exporter查看处理后的日志结构,验证每个条目是否为logRecords的单个元素:
    exporters:
      debug:
        verbosity: detailed
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 15:32:33