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

Quarkus Native结合OpenTelemetry对接Skywalking无数据显示求助

解决方案:Quarkus Native + OpenTelemetry + Skywalking 链路追踪适配

问题背景

当前在Kubernetes环境下开展POC,需实现Quarkus Native应用通过OpenTelemetry将链路追踪与指标数据上报至Skywalking。已验证Quarkus Native对接Jaeger正常,但Skywalking Java Agent不支持GraalVM,因此采用OTel Collector中转方案,目前Skywalking UI无任何数据展示。

关键问题排查与修复步骤

1. 完善Quarkus Native的OpenTelemetry配置

你的application.properties缺少服务名称和采样策略配置,这会导致Skywalking无法识别服务或无数据上报:

# 必须配置服务名称,Skywalking依赖该字段识别服务实例
quarkus.otel.service.name=your-quarkus-native-service
quarkus.otel.exporter.otlp.traces.endpoint=http://skywalking-otel-collector-service.default.svc.cluster.local:4317
quarkus.otel.traces.enabled=true
quarkus.otel.exporter.otlp.enabled=true
# 强制开启全采样,确保所有请求都生成追踪数据
quarkus.otel.traces.sampler=always_on
# 保留原有访问日志配置
quarkus.http.access-log.pattern="...traceId=%{X,traceId} spanId=%{X,spanId}"

2. 调整OpenTelemetry Collector配置

Skywalking OAP对标准OTel数据的兼容性有限,需改用Skywalking专属Exporter确保数据格式适配(你当前使用的otel/opentelemetry-collector-contrib镜像已支持该Exporter):

修改ConfigMap中的Exporter配置

替换原otlp exporter为skywalking exporter:

exporters:
  logging:
    loglevel: info
  # 使用Skywalking专属Exporter替代标准OTLP Exporter
  skywalking:
    endpoint: "skywalking-skywalking-helm-oap.skywalking.svc.cluster.local:11800"
    service_name: "otel-collector"

调整Pipeline配置

确保追踪、指标管道使用skywalking exporter:

service:
  extensions: [health_check]
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging, skywalking]
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging, skywalking]
    logs:
      receivers: [otlp]
      processors: [batch]
      exporters: [skywalking]

3. 启用Skywalking OAP的OTLP Receiver

通过Helm安装Skywalking时,默认未开启OTLP Receiver,需添加参数启用:

helm install "${SKYWALKING_RELEASE_NAME}" \
  skywalking-helm \
  --version "${SKYWALKING_RELEASE_VERSION}" \
  -n "${SKYWALKING_RELEASE_NAMESPACE}" \
  --set oap.image.tag=9.2.0 \
  --set oap.storageType=elasticsearch \
  --set ui.image.tag=9.2.0 \
  # 开启OTLP Receiver,接收Collector转发的数据
  --set oap.receiver.otlp.enabled=true

4. 连通性验证

  • Quarkus应用到OTel Collector:在Quarkus Pod内执行curl http://skywalking-otel-collector-service.default.svc.cluster.local:4318/v1/traces,确认网络连通
  • OTel Collector到Skywalking OAP:在Collector Pod内执行telnet skywalking-skywalking-helm-oap.skywalking.svc.cluster.local 11800,确认端口可达
  • 查看Collector日志:执行kubectl logs -l name=skywalking-otel-collector -n default,检查是否有数据上报日志或错误信息

5. 重新构建部署Quarkus Native应用

修改配置后重新构建原生镜像并部署:

./mvnw package -Dnative -Dquarkus.native.container-build=true

验证结果

完成上述步骤后,访问Skywalking UI的「服务」菜单即可看到配置的your-quarkus-native-service,调用应用接口后可查看完整链路追踪数据与指标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:05:06