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

如何用OpenTelemetry Collector提取日志context字段至Elasticsearch

解决方案:从OTLP日志中提取context字段并输出到Elasticsearch

针对你的需求,推荐使用regex_parser处理器(最直接)或transform处理器的正则提取功能,以下是适配opentelemetry-collector-contrib:0.117.0的完整配置示例:

核心配置思路

你的日志文本存储在Body字段(对应期望输出中的_source.Body),需通过正则匹配context=XXX格式的内容,将XXX提取为独立的context字段。

方案1:使用regex_parser处理器

该处理器专门用于从文本字段中通过正则提取内容,配置如下:

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317 # 监听Spring Boot发送的gRPC OTLP请求

processors:
  regex_parser:
    parse_from: Body # 指定要解析的日志内容字段
    regex: '.*context=([^,\]]+).*' # 匹配context=后直到逗号或方括号的内容
    extract_keys:
      - context # 将匹配到的分组提取为context字段
    preserve_to: original_body # 可选:保留原始日志内容到新字段,避免覆盖

  # 可选:添加batch处理器优化发送效率
  batch:

exporters:
  elasticsearch:
    endpoints: ["http://your-es-host:9200"] # 替换为你的Elasticsearch地址
    index: "dvlp-op-ci-bin-log-%{+yyyy.MM.dd}" # 按日期生成索引,匹配你的期望输出
    username: "your-es-username" # 若开启认证需配置
    password: "your-es-password"

service:
  pipelines:
    logs:
      receivers: [otlp]
      processors: [regex_parser, batch]
      exporters: [elasticsearch]

方案2:使用transform处理器(适配你之前的尝试)

若偏好使用transform,需利用parse_regex函数提取内容,配置如下:

processors:
  transform:
    log_statements:
      - context: log
        statements:
          # 从Body字段匹配context值,存入context字段
          - set(context, parse_regex(Body, '.*context=([^,\]]+).*')[0])
          # 可选:若Body字段不存在,尝试从body.string(OTLP标准字段)提取
          - set(context, parse_regex(body.string, '.*context=([^,\]]+).*')[0]) where Body == nil

关键注意事项

  1. 字段路径确认:若你的日志文本不在Body字段,需替换为实际路径(比如OTLP标准的body.string),可通过debug exporter先查看原始日志的字段结构:
    exporters:
      debug:
        verbosity: detailed
    
  2. 正则准确性:[^,\]]+确保匹配到context=后直到第一个逗号或方括号的内容,适配你日志中context=SAAI-egypt的格式;若你的日志格式有变化,可调整正则。
  3. 版本兼容性:0.117.0版本完全支持上述两种处理器的语法,无需担心版本适配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 02:37:38