全部產品
Search
文件中心

Managed Service for OpenTelemetry:OpenTelemetry接入說明

更新時間:Apr 09, 2025

Managed Service for OpenTelemetry支援接收應用的鏈路追蹤、指標和日誌資料,提供直接上報和通過 OpenTelemetry Collector 轉寄兩種上報方式。

前提條件

  • 如您需要上報 Logs 資料,請確保Log Service已開通ProjectLogstore 已建立完成,並建立用於日誌資料上報的 AK 和 SK

  • 擷取存取點和鑒權資訊。以下表格給出了本文涉及到的所有組態變數,請您根據使用情境(上報資料類型和上報方式),提前準備好所需的存取點和鑒權資訊。更多資訊,請參見準備工作

    使用情境

    變數名

    說明

    樣本

    上報 Traces 與 Metrics 資料

    gRPC 方式上報

    ${GRPC_ENDPOINT}

    Managed Service for 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 上報至Managed Service for OpenTelemetry時所需的鑒權 Token。擷取方式,請參見準備工作

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

    HTTP 方式上報

    ${HTTP_TRACES_ENDPOINT}

    Managed Service for 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}

    Managed Service for 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}

    Log ServiceProject的接入地址,僅上報 Logs 資料時需要填寫。擷取接入地址的操作步驟,請參見服務入口

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

    ${SLS_PROJECT}

    Log ServiceProject名稱。僅上報 Logs 資料時需要填寫。

    test-project

    ${SLS_LOGSTORE}

    Log Service Logstore 名稱。僅上報 Logs 資料時需要填寫。

    test-logstore

    ${ALIYUN_ACCESS_KEY_ID}

    阿里雲帳號AccessKey ID。僅上報 Logs 資料時需要填寫。

    建議您使用只具備Log ServiceProject寫入許可權的RAM使用者的AccessKey(包括AccessKey ID和AccessKey Secret)。授予RAM使用者向指定Project寫入資料許可權的具體操作,請參見RAM自訂授權樣本。如何擷取AccessKey的具體操作,請參見存取金鑰

    ${ALIYUN_ACCESS_KEY_SECRET}

    阿里雲帳號AccessKey Secret。僅上報 Logs 資料時需要填寫。

    建議您使用只具備Log ServiceProject寫入許可權的RAM使用者的AccessKey。

直接上報

通過配置 OpenTelemetry Agent 或 SDK 的上報存取點資訊和鑒權資訊,您可以將 OpenTelemetry 採集到的 Traces 與 Metrics 資料直接發送到Managed Service for OpenTelemetry服務端。

方案一:在代碼中配置上報資訊(以 Java 為例)

以下 Java 程式碼範例展示如何配置Managed Service for OpenTelemetry的存取點資訊,支援通過 HTTP 或 gRPC 協議上報。請訪問接入中心通過OpenTelemetry上報Java應用資料查看完整接入代碼和 Demo。

HTTP上報

...

// 上報 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();

...

gRPC上報

...

// 上報 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 還支援通過環境變數方式配置資料上報點。以下表格為上報至Managed Service for 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. 登入Container Service管理主控台,在左側導覽列選擇市場 > 應用市場

  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上報)

    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]

    opentelemetry-collector 配置項(HTTP上報)

    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

如要指定鏡像版本,請訪問 https://hub.docker.com/r/otel/opentelemetry-collector/tags

docker pull otel/opentelemetry-collector:latest

opentelemetry-collector-contrib

如要指定鏡像版本,請訪問 https://hub.docker.com/r/otel/opentelemetry-collector-contrib/tags

docker pull otel/opentelemetry-collector-contrib:latest
2、準備設定檔

建立 config.yaml 檔案並配置相關參數。

opentelemetry-collector 配置項(gRPC上報)

# 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]

opentelemetry-collector 配置項(HTTP上報)

# 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]

opentelemetry-collector-contrib 配置項(gRPC上報)

# 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]

opentelemetry-collector-contrib 配置項(HTTP上報)

# 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

docker run -v $(pwd)/config.yaml:/etc/otelcol/config.yaml otel/opentelemetry-collector:latest

opentelemetry-collector-contrib

docker run -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest

其他安裝部署方式

參考文檔