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

OpenTelemetry接收器无法采集Quarkus Java应用日志求助

OpenShift中Quarkus应用OTel自动插桩日志采集失败排查

在OpenShift部署Quarkus应用,添加OpenTelemetry(OTel)自动插桩注解后,Metrics和Traces可正常采集,但Logs无法获取。以下是已使用的配置及排查解决步骤:

已执行操作与配置

应用插桩注解命令

oc patch deployment.apps/quarkus-app -p '{"spec": {"template": {"metadata": {"annotations": {"instrumentation.opentelemetry.io/inject-java": "true"}}}}}'

OTel自动插桩(Instrumentation)配置

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: demo-autoinst
  namespace: opentele
spec:
  propagators:
    - tracecontext
    - baggage
    - b3
  sampler:
    type: parentbased_traceidratio
    argument: "1"
  java:
    image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:latest
    env:
      - name: OTEL_EXPORTER_OTLP_ENDPOINT
        value: "http://url:4317"

OTel Collector配置

apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: demo
  namespace: opentele # 修正原配置中的namepsace拼写错误
spec:
  image: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0.78.0
  config: |
    receivers:
      otlp:
        protocols:
          grpc:
          http:

    processors:
      batch:
    
    exporters:
      logging:
        loglevel: info

      kafka/logs:
        brokers: 
          - url:9092
        topic: all-logs-1
        encoding: otlp_json
        protocol_version: 3.4.0 

    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: [batch]
          exporters: [...]

        metrics:
          receivers: [otlp]
          processors: [batch]
          exporters: [...]

        logs:
          receivers: [otlp]
          processors: [batch]
          exporters: [logging,kafka/logs]
          
  mode: deployment
  resources: {}
  targetAllocator: {}

排查与解决步骤

1. 启用自动插桩的日志采集功能

Java自动插桩默认不开启日志采集,需在Instrumentation配置中添加日志相关环境变量,适配Quarkus默认的logback日志框架:

java:
  image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:latest
  env:
    - name: OTEL_EXPORTER_OTLP_ENDPOINT
      value: "http://url:4317"
    - name: OTEL_INSTRUMENTATION_LOGGING_ENABLED
      value: "true"
    - name: OTEL_INSTRUMENTATION_LOGBACK_ENABLED
      value: "true"
    - name: OTEL_LOGS_EXPORTER
      value: "otlp"

2. 修正Collector配置错误

  • 修复metadata中的namepsace拼写错误为namespace,避免Collector部署到错误命名空间;
  • 修正Kafka exporter的缩进格式,确保brokers等字段属于kafka/logs节点(原配置缩进错误会导致Collector启动失败)。

3. 验证命名空间匹配

确保Instrumentation能覆盖应用所在命名空间,若应用与Instrumentation不在同一命名空间,需在Instrumentation的spec中添加:

spec:
  targetNamespaces:
    - <你的应用命名空间>

4. 检查网络连通性

在Quarkus应用Pod内测试Collector的OTLP端点可达性:

curl -v http://demo.opentele.svc.cluster.local:4317

确认GRPC(4317)或HTTP(4318)端口可正常访问。

5. 查看Pod日志排查问题

  • 查看Collector日志,确认是否有日志接收记录:
    oc logs -n opentele deployment/demo
    
  • 查看Quarkus应用日志,检查OTel日志采集相关报错:
    oc logs -n <你的应用命名空间> deployment/quarkus-app
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:05:03