OpenTelemetry接入说明

更新时间:2025-04-07 02:12:50

可观测链路 OpenTelemetry 版支持接收应用的链路追踪、指标和日志数据,提供直接上报和通过 OpenTelemetry Collector 转发两种上报方式。

前提条件

  • 如您需要上报 Logs 数据,请确保日志服务已开通ProjectLogstore 已创建完成,并创建用于日志数据上报的 AK 和 SK

  • 获取接入点和鉴权信息。以下表格给出了本文涉及到的所有配置变量,请您根据使用场景(上报数据类型和上报方式),提前准备好所需的接入点和鉴权信息。更多信息,请参见准备工作

    使用场景

    变量名

    说明

    示例

    使用场景

    变量名

    说明

    示例

    上报 Traces 与 Metrics 数据

    gRPC 方式上报

    ${GRPC_ENDPOINT}

    可观测链路 OpenTelemetry 版的 gRPC 上报地址,支持上报 Traces 与 Metrics 数据。

    若您的服务部署在阿里云上,且所属地域与选择的接入地域一致,推荐使用阿里云内网地址,否则选择公网地址。

    • 内网地址:http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090

    • 公网地址:http://tracing-analysis-dc-hz.aliyuncs.com:8090

    ${GRPC_AUTHENTICATION_TOKEN}

    使用 gRPC 上报至可观测链路 OpenTelemetry 版时所需的鉴权 Token。获取方式,请参见准备工作

    abcdef1234@abcdef****56789_abcdef1234@abcdef****56789

    HTTP 方式上报

    ${HTTP_TRACES_ENDPOINT}

    可观测链路 OpenTelemetry 版的 HTTP 上报地址,支持上报 Traces 数据。

    若您的服务部署在阿里云上,且所属地域与选择的接入地域一致,推荐使用阿里云内网地址,否则选择公网地址。

    • 内网地址:http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/traces

    • 公网地址: http://tracing-analysis-dc-hz.aliyuncs.com/adapt_***_***/api/otlp/traces

    ${HTTP_METRICS_ENDPOINT}

    可观测链路 OpenTelemetry 版的 HTTP 上报地址,支持上报 Metrics 数据。

    若您的服务部署在阿里云上,且所属地域与选择的接入地域一致,推荐使用阿里云内网地址,否则选择公网地址。

    • 内网地址:http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/metrics

    • 公网地址: http://tracing-analysis-dc-hz.aliyuncs.com/adapt_***_***/api/otlp/metrics

    上报 Logs 数据

    ${SLS_ENDPOINT}

    日志服务Project的接入地址,仅上报 Logs 数据时需要填写。获取接入地址的操作步骤,请参见服务入口

    test-project.cn-hangzhou.log.aliyuncs.com

    ${SLS_PROJECT}

    日志服务Project名称。仅上报 Logs 数据时需要填写。

    test-project

    ${SLS_LOGSTORE}

    日志服务 Logstore 名称。仅上报 Logs 数据时需要填写。

    test-logstore

    ${ALIYUN_ACCESS_KEY_ID}

    阿里云账号AccessKey ID。仅上报 Logs 数据时需要填写。

    建议您使用只具备日志服务Project写入权限的RAM用户的AccessKey(包括AccessKey IDAccessKey Secret)。授予RAM用户向指定Project写入数据权限的具体操作,请参见RAM自定义授权示例。如何获取AccessKey的具体操作,请参见访问密钥

    ${ALIYUN_ACCESS_KEY_SECRET}

    阿里云账号AccessKey Secret。仅上报 Logs 数据时需要填写。

    建议您使用只具备日志服务Project写入权限的RAM用户的AccessKey。

直接上报

通过配置 OpenTelemetry Agent 或 SDK 的上报接入点信息和鉴权信息,您可以将 OpenTelemetry 采集到的 Traces 与 Metrics 数据直接发送到可观测链路 OpenTelemetry 版服务端。

方案一:在代码中配置上报信息(以 Java 为例)

以下 Java 代码示例展示如何配置可观测链路 OpenTelemetry 版的接入点信息,支持通过 HTTP 或 gRPC 协议上报。请访问接入中心通过OpenTelemetry上报Java应用数据查看完整接入代码和 Demo。

HTTP上报
gRPC上报
...

// 上报 Traces 数据
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
        .addSpanProcessor(BatchSpanProcessor.builder(OtlpHttpSpanExporter.builder()
                .setEndpoint("${HTTP_TRACES_ENDPOINT}") // 设置HTTP Traces接入点,将Traces数据上报至可观测链路OpenTelemetry版
                .build()).build())
        .build();

// 上报 Metrics 数据
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
    .registerMetricReader(PeriodicMetricReader.builder(OtlpHttpMetricExporter.builder()
        .setEndpoint("${HTTP_METRICS_ENDPOINT}")  // 设置HTTP Metrics接入点,将Metrics数据上报至可观测链路OpenTelemetry版
        .build()).build())
    .build();

...
...

// 上报 Traces 数据
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
        .addSpanProcessor(BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder()
                .setEndpoint("${GRPC_AUTHENTICATION_TOKEN}") // 设置gRPC接入点,将Traces数据上报至可观测链路OpenTelemetry版
                .addHeader("Authentication","${GRPC_AUTHENTICATION_TOKEN}") // 设置可观测链路OpenTelemetry版的鉴权Token信息
                .build()).build())
        .setResource(resource)
        .build();

// 上报 Metrics 数据
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
    .registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder()
        .setEndpoint("${GRPC_METRICS_ENDPOINT}")  // 设置gRPC接入点,将Traces数据上报至可观测链路OpenTelemetry版
        .addHeader("Authentication", "${GRPC_AUTHENTICATION_TOKEN}")  // 设置可观测链路OpenTelemetry版的鉴权Token信息
        .build()).build())
    .setResource(resource)
    .build();

...

方案二:通过环境变量方式设置上报信息

OpenTelemetry 还支持通过环境变量方式配置数据上报点。以下表格为上报至可观测链路 OpenTelemetry 版时所需环境变量,更多 OpenTelemetry OTLP 环境变量,请参考 OTLP Exporter Configuration

环境变量名

说明

示例

环境变量名

说明

示例

OTEL_SERVICE_NAME

应用名

export OTEL_SERVICE_NAME=opentelemetry-demo-service

OTEL_EXPORTER_OTLP_PROTOCOL

上报协议。

Traces 支持 grpc、http/protobuf、http/json。

Metrics 支持 grpc、http/protobuf。

当您选择 gRPC 上报点时,请设置为 grpc,否则,请使用 http/protobuf 或 http/json。

export OTEL_EXPORTER_OTLP_PROTOCOL=grpc

OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

Traces 上报点。支持 HTTP 和 gRPC 上报点。

上报点为前提条件中获取到的 ${GRPC_ENDPOINT} 或 ${HTTP_TRACES_ENDPOINT}。

  • HTTP 上报:

export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/traces

  • gRPC 上报:

export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090

OTEL_EXPORTER_OTLP_METRICS_ENDPOINT

Metrics 上报点,支持 HTTP 和 gRPC 上报点。

上报点为前提条件中获取到的 ${GRPC_ENDPOINT} 或 ${HTTP_METRICS_ENDPOINT}。

  • HTTP 上报:

export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/metrics

  • gRPC 上报:

export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090

OTEL_EXPORTER_OTLP_HEADERS

gRPC 上报时的请求头信息,主要用于身份验证。

填写格式为Authentication=${GRPC_AUTHENTICATION_TOKEN},${GRPC_AUTHENTICATION_TOKEN}为前提条件中获取到的鉴权 Token。

export OTEL_EXPORTER_OTLP_HEADERS=Authentication=abcdef1234@abcdef****56789_abcdef1234@abcdef****56789

通过 OpenTelemetry Collector 转发

版本说明

  • OpenTelemetry Collector(核心版):支持上报 Traces 和 Metrics 数据

  • OpenTelemetry Collector Contrib(扩展版):支持上报 Traces、Metrics 和 Logs 数据。

部署方案一: ACK 应用市场一键部署至 ACK 集群

重要

ACK 应用市场当前仅支持 OpenTelemetry Collector 核心版,未提供 Contrib 版本。如果您有采集 Logs 的需求,请参考其他方式部署。

1、部署 Collector
  1. 登录容器服务管理控制台,在左侧导航栏选择市场 > 应用市场

  2. 在应用市场中搜索并单击opentelemetry-collector,单击页面右上角一键部署

  3. 创建页面选择需要部署opentelemetry-collector的集群和命名空间(默认为 otel-collector),然后单击下一步

  4. 参数配置页面,设置 mode 参数为 deploymentdaemonset,然后单击确定

2、配置 Collector 参数
  1. 集群列表页面单击目标集群。

  2. 在左侧导航栏选择配置管理 > 配置项

  3. 选择 opentelemetry-collector 所在的命名空间(默认为 otel-collector)。

  4. 配置项页面找到opentelemetry-collector,然后单击YAML 编辑

  5. 参考以下 YAML 中的内容,配置 exporters、processors、receivers 和 service 四部分内容,然后单击确定

    opentelemetry-collector 配置项(gRPC上报)
    opentelemetry-collector 配置项(HTTP上报)
    exporters:
      otlp:
        endpoint: "${GRPC_ENDPOINT}"
        headers:
          Authentication: "${GRPC_AUTHENTICATION_TOKEN}"
        tls:
          insecure: true
    
    processors:
      batch: {}
      memory_limiter:
        check_interval: 5s # 检查内存使用的时间间隔,请按需更改
        limit_percentage: 80 # 最大内存使用百分比,请按需更改
        spike_limit_percentage: 25 # 允许突发使用的额外内存百分比,请按需更改
    
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: ${env:MY_POD_IP}:4317
          http:
            endpoint: ${env:MY_POD_IP}:4318
    
    service:
      pipelines:
        traces:
          exporters: [otlp]
          processors: [memory_limiter, batch]
          receivers: [otlp]
        metrics:
          exporters: [otlp]
          processors: [memory_limiter, batch]
          receivers: [otlp]
    exporters:
      otlphttp:
        traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
        metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
        tls:
          insecure: true
        timeout: 5s # 超时时间,默认5s,请按需更改
    
    processors:
      batch: {}
      memory_limiter:
        check_interval: 5s # 检查内存使用的时间间隔,请按需更改
        limit_percentage: 80 # 最大内存使用百分比,请按需更改
        spike_limit_percentage: 25 # 允许突发使用的额外内存百分比,请按需更改
    
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: ${env:MY_POD_IP}:4317
          http:
            endpoint: ${env:MY_POD_IP}:4318
    
    service:
      pipelines:
        traces:
          exporters: [otlphttp]
          processors: [memory_limiter, batch]
          receivers: [otlp]
        metrics:
          exporters: [otlphttp]
          processors: [memory_limiter, batch]
          receivers: [otlp]
  6. 配置完成后,手动重启 opentelemetry-collector 。

部署方案二:Docker 部署

1、拉取镜像
opentelemetry-collector
opentelemetry-collector-contrib

如要指定镜像版本,请访问 https://hub.docker.com/r/otel/opentelemetry-collector/tags

docker pull otel/opentelemetry-collector:latest

如要指定镜像版本,请访问 https://hub.docker.com/r/otel/opentelemetry-collector-contrib/tags

docker pull otel/opentelemetry-collector-contrib:latest
2、准备配置文件

创建 config.yaml 文件并配置相关参数。

opentelemetry-collector 配置项(gRPC上报)
opentelemetry-collector 配置项(HTTP上报)
opentelemetry-collector-contrib 配置项(gRPC上报)
opentelemetry-collector-contrib 配置项(HTTP上报)
# config.yaml
exporters:
  otlp:
    endpoint: "${GRPC_ENDPOINT}"
    headers:
      Authentication: "${GRPC_AUTHENTICATION_TOKEN}"
    tls:
      insecure: true

processors:
  batch: {}
  memory_limiter:
    check_interval: 5s # 检查内存使用的时间间隔,请按需更改
    limit_percentage: 80 # 最大内存使用百分比,请按需更改
    spike_limit_percentage: 25 # 允许突发使用的额外内存百分比,请按需更改

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317 # 默认值为 localhost:4317,请按需修改
      http:
        endpoint: 0.0.0.0:4318 # 默认值为 localhost:4318,请按需修改

service:
  pipelines:
    traces:
      exporters: [otlp]
      processors: [memory_limiter, batch]
      receivers: [otlp]
    metrics:
      exporters: [otlp]
      processors: [memory_limiter, batch]
      receivers: [otlp]
# config.yaml
exporters:
  otlphttp:
    traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
    metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
    tls:
      insecure: true
    timeout: 5s # 超时时间,默认5s,请按需更改

processors:
  batch: {}
  memory_limiter:
    check_interval: 5s # 检查内存使用的时间间隔,请按需更改
    limit_percentage: 80 # 最大内存使用百分比,请按需更改
    spike_limit_percentage: 25 # 允许突发使用的额外内存百分比,请按需更改

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317 # 默认值为 localhost:4317,请按需修改
      http:
        endpoint: 0.0.0.0:4318 # 默认值为 localhost:4318,请按需修改

service:
  pipelines:
    traces:
      exporters: [otlphttp]
      processors: [memory_limiter, batch]
      receivers: [otlp]
    metrics:
      exporters: [otlphttp]
      processors: [memory_limiter, batch]
      receivers: [otlp]
# config.yaml
exporters:
  otlp:
    endpoint: "${GRPC_ENDPOINT}"
    headers:
      Authentication: "${GRPC_AUTHENTICATION_TOKEN}"
    tls:
      insecure: true
  # 日志导出器配置(可选)
  alibabacloud_logservice/logs:
    endpoint: "${SLS_ENDPOINT}"
    project: "${SLS_PROJECT}"
    logstore: "${SLS_LOGSTORE}"
    access_key_id: "${ALIYUN_ACCESS_KEY_ID}"
    access_key_secret: "${ALIYUN_ACCESS_KEY_SECRET}"

processors:
  batch: {}
  memory_limiter:
    check_interval: 5s # 检查内存使用的时间间隔,请按需更改
    limit_percentage: 80 # 最大内存使用百分比,请按需更改
    spike_limit_percentage: 25 # 允许突发使用的额外内存百分比,请按需更改

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317 # 默认值为 localhost:4317,请按需修改
      http:
        endpoint: 0.0.0.0:4318 # 默认值为 localhost:4318,请按需修改

service:
  pipelines:
    traces:
      exporters: [otlp]
      processors: [memory_limiter, batch]
      receivers: [otlp]
    metrics:
      exporters: [otlp]
      processors: [memory_limiter, batch]
      receivers: [otlp]
    # 日志数据处理流程(可选)
    logs:
      exporters: [alibabacloud_logservice/logs]
      processors: [memory_limiter, batch]
      receivers: [otlp]
# config.yaml
exporters:
  otlphttp:
    traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
    metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
    tls:
      insecure: true
    timeout: 5s # 超时时间,默认5s,请按需更改
    
  # 日志导出器配置(可选)
  alibabacloud_logservice/logs:
    endpoint: "${SLS_ENDPOINT}"
    project: "${SLS_PROJECT}"
    logstore: "${SLS_LOGSTORE}"
    access_key_id: "${ALIYUN_ACCESS_KEY_ID}"
    access_key_secret: "${ALIYUN_ACCESS_KEY_SECRET}"

processors:
  batch: {}
  memory_limiter:
    check_interval: 5s # 检查内存使用的时间间隔,请按需更改
    limit_percentage: 80 # 最大内存使用百分比,请按需更改
    spike_limit_percentage: 25 # 允许突发使用的额外内存百分比,请按需更改

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317 # 默认值为 localhost:4317,请按需修改
      http:
        endpoint: 0.0.0.0:4318 # 默认值为 localhost:4318,请按需修改

service:
  pipelines:
    traces:
      exporters: [otlphttp]
      processors: [memory_limiter, batch]
      receivers: [otlp]
    metrics:
      exporters: [otlphttp]
      processors: [memory_limiter, batch]
      receivers: [otlp]
    # 日志数据处理流程(可选)
    logs:
      exporters: [alibabacloud_logservice/logs]
      processors: [memory_limiter, batch]
      receivers: [otlp]
3、挂载自定义配置文件并运行
opentelemetry-collector
opentelemetry-collector-contrib
docker run -v $(pwd)/config.yaml:/etc/otelcol/config.yaml otel/opentelemetry-collector:latest
docker run -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest

其他安装部署方式

参考文档

  • 本页导读 (1)
  • 前提条件
  • 直接上报
  • 方案一:在代码中配置上报信息(以 Java 为例)
  • 方案二:通过环境变量方式设置上报信息
  • 通过 OpenTelemetry Collector 转发
  • 版本说明
  • 部署方案一: ACK 应用市场一键部署至 ACK 集群
  • 部署方案二:Docker 部署
  • 其他安装部署方式
  • 参考文档
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等