遷移至 OTLP 匯出工具

本文說明如何修改使用現有匯出器的 OpenTelemetry Collector 記錄設定 (在本例中為 googlecloud 記錄匯出器),改用 OTLP 匯出器和 Telemetry (OTLP) API telemetry.googleapis.com

啟用 Telemetry API

OTLP 匯出工具會寫入 Telemetry API,因此您必須在專案中啟用該 API。執行下列指令,啟用 Telemetry API:

gcloud services enable telemetry.googleapis.com

找出要更換的匯出者

在設定檔中,找出記錄的 exporters 項目。設定可能如下所示:

exporters:
  googlecloud/logging:

取代 googlecloud/logging 匯出工具,並新增 googleauthclient 擴充功能:

exporters:
  otlp_grpc/otlp_logs:
    auth:
      authenticator: googleclientauth
    balancer_name: pick_first
    endpoint: telemetry.googleapis.com:443

extensions:
  googleclientauth: {}

新增處理器

在設定檔中找出 processors 項目。您的設定可能如下所示:

processors:
  resourcedetection/_global_0: [...details omitted...]
  transform/mylog__source_0:  [...details omitted...]

將下列每個處理器的設定複製並貼到設定檔中:

  1. resource處理器:擷取專案相關資訊。 Google Cloud

      resource/gcp_project_id:
        attributes:
          - action: insert
            value: PROJECT_ID
            key: gcp.project_id
    
  2. transform 處理器,可保留有關插碼來源的資訊。

      transform/otlp_grpc/preserve_instrumentation_source_version:
        error_mode: ignore
        log_statements:
          - context: log
            statements:
              - set(attributes["instrumentation_source"], instrumentation_scope.name) where instrumentation_scope.name != ""
              - set(attributes["instrumentation_version"], instrumentation_scope.version) where instrumentation_scope.version != ""
    
  3. transform 處理器,可保留資源屬性的相關資訊。

      transform/otlp_grpc/preserve_service_resource_attributes:
        error_mode: ignore
        log_statements:
          - context: log
            statements:
              - set(attributes["service.name"], resource.attributes["service.name"]) where resource.attributes["service.name"] != nil
              - set(attributes["service.namespace"], resource.attributes["service.namespace"]) where resource.attributes["service.namespace"] != nil
              - set(attributes["service.instance.id"], resource.attributes["service.instance.id"]) where resource.attributes["service.instance.id"] != nil
    

修改後的設定如下所示:

processors:
  resourcedetection/_global_0: [...details omitted...]
  transform/mylog__source_0:  [...details omitted...]
  resource/gcp_project_id: [...details omitted...]
  transform/otlp_grpc/preserve_instrumentation_source_version: [...details omitted...]
  transform/otlp_grpc/preserve_service_resource_attributes: [...details omitted...]

修改記錄服務和管道

在設定中,找出用於記錄的 service,其中包含使用 googlecloud/logging 匯出工具的 pipeline。您的設定可能如下所示:

service:
  pipelines:
    logs/logs_my__pipeline_mylog__source:
      exporters:
        - googlecloud/logging
      processors:
        - transform/mylog__source_0
        - resourcedetection/_global_0
      receivers:
        - tcplog

對這項設定進行下列變更:

  1. googleclientauth 擴充功能新增至 service 項目。
  2. 將管道的匯出工具變更為 otlp_grpc/otlp_logs
  3. 將新處理器新增至管道的處理器清單:
    • resource/gcp_project_id
    • transform/otlp_grpc/preserve_instrumentation_source_version
    • transform/otlp_grpc/preserve_service_resource_attributes

修改後的設定如下所示:

service:
  extensions:
    - googleclientauth
  pipelines:
    logs/logs_my__pipeline_mylog__source:
      exporters:
        - otlp_grpc/otlp_logs
      processors:
        - transform/mylog__source_0
        - resourcedetection/_global_0
        - resource/gcp_project_id
        - transform/otlp_grpc/preserve_instrumentation_source_version
        - transform/otlp_grpc/preserve_service_resource_attributes
      receivers:
        - tcplog

視需要遷移資訊主頁和快訊政策

如果您有追蹤 Cloud Logging API 用量的圖表或快訊政策,請更新這些項目,改為監控 Telemetry API 用量。OTLP 匯出工具會使用 Telemetry API,而非 Cloud Logging API,將記錄傳送至 Google Cloud 專案。