OpenTelemetry Collector Contrib - Amazon CloudWatch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

OpenTelemetry Collector Contrib

可以使用 OpenTelemetry Collector Contrib,在 CloudWatch 中開始使用 OpenTelemetry。

先決條件

確定已在 CloudWatch 中啟用 Transaction Search。如需詳細資訊,請參閱 Transaction Search

下載 OpenTelemetry Collector Contrib

下載最新版本的 OpenTelemetry Collector Contrib 套件發行版

安裝 OpenTelemetry Collector Contrib

在任何作業系統和平台上安裝 OpenTelemetry Collector Contrib。如需詳細資訊,請參閱安裝 Collector

在 Amazon EC2 或內部部署主機上設定 AWS 登入資料

您可以在 Amazon EC2 或內部部署主機上設定 AWS 登入資料。

Setup IAM permissions for Amazon EC2
請依循下列程序,將 CloudWatchAgentServerPolicy IAM 政策附加至 Amazon EC2 執行個體的 IAM 角色。
  1. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  2. 選擇角色,然後尋找並選取 Amazon EC2 執行個體使用的角色。

  3. 許可索引標籤中,依序選擇新增許可連結政策

  4. 透過搜尋方塊搜尋 CloudWatchAgentServerPolicy 政策。

  5. 選取 CloudWatchAgentServerPolicy 政策,然後選擇新增許可

Setup IAM permissions for on-premise hosts
可以建立 IAM 使用者,用來提供許可給內部部署主機。
  1. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  2. 選擇使用者建立使用者

  3. 使用者詳細資訊下的使用者名稱中,輸入新 IAM 使用者的名稱。這是 的登入名稱 AWS ,將用於驗證您的主機。

  4. 選擇下一步

  5. 設定許可頁面,為許可選項選取直接連結政策

  6. 許可政策清單中,選取要新增至使用者的 CloudWatchAgentServerPolicy 政策。

  7. 選擇下一步

  8. 檢閱和建立頁面上,確定您對使用者名稱感到滿意,並且 CloudWatchAgentServerPolicy 政策位於許可摘要中。

  9. 選擇 Create user (建立使用者)。

  10. 建立和擷取您的 AWS 存取金鑰和私密金鑰 – 在 IAM 主控台的導覽窗格中,選擇使用者,然後選取您在上一個步驟中建立的使用者名稱。

  11. 在使用者頁面上,選擇安全憑證索引標籤。

  12. 存取金鑰區段中,選擇建立存取金鑰

  13. 針對建立存取金鑰步驟 1,請選擇命令列界面 (CLI)

  14. 建立存取金鑰步驟 2 中,輸入選用標籤,然後選擇下一步

  15. 建立存取金鑰步驟 3 中,選取下載 .csv 檔案,以儲存包含 IAM 使用者存取金鑰和私密存取金鑰的 .csv 檔案。您需要這些資訊才能進行後續步驟。

  16. 選擇完成

  17. 輸入下列命令,在現場部署主機中設定您的 AWS 登入資料。將 ACCESS_KEY_IDSECRET_ACCESS_ID 替換為您在上一個步驟中下載的 .csv 檔案中新產生的存取金鑰和私密存取金鑰。

    $ aws configure AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json

為您的 Amazon EKS 或 Kubernetes 叢集設定 AWS 登入資料

若要設定 Amazon EKS 或 Kubernetes 叢集的 AWS 登入資料,以將遙測傳送至 CloudWatch,請遵循下列程序。

Setup IAM permissions for Amazon EKS
  1. 使用下列命令為您的叢集建立 IAM OIDC 身分提供者。

    eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} --region ${REGION} --approve
  2. 透過下列命令,將 IAM 角色指派給 OTel Collector 的 Kubernetes 服務帳戶。

    eksctl create iamserviceaccount \ --name ${COLLECTOR_SERVICE_ACCOUNT}\ --namespace ${NAMESPACE} \ --cluster ${CLUSTER_NAME} \ --region ${REGION} \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --approve \ --override-existing-serviceaccounts
Setup IAM permissions for Kubernetes
  1. 輸入下列命令,在現場部署主機中設定您的 AWS 登入資料。將 ACCESS_KEY_IDSECRET_ACCESS_ID 替換為您在上一個步驟中下載的 .csv 檔案中新產生的存取金鑰和私密存取金鑰。依預設,憑證檔案儲存在 /home/user/.aws/credentials 下。

    aws configure AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json
  2. 編輯 OpenTelemetry Collector 資源,使用如下命令新增新建立的 AWS 憑證機密:kubectl edit OpenTelemetryCollector otel_collector

  3. 使用檔案編輯器,將下列組態新增至部署頂端,將 AWS 登入資料新增至 OpenTelemetryCollector 容器。將路徑 /home/user/.aws/credentials 取代為本機 AWS 登入資料檔案的位置。

    spec: volumeMounts: - mountPath: /rootfs volumeMounts: - name: aws-credentials mountPath: /root/.aws readOnly: true volumes: - hostPath: path: /home/user/.aws/credentials name: aws-credentials

設定 OpenTelemetry Collector

複製並貼上以下內容,以設定收集器,將日誌和追蹤傳送至 OTLP 端點。

receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: logs_otlp_endpoint headers: x-aws-log-group: ency_log_group x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: traces_otlp_endpoint auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "region" service: "logs" sigv4auth/traces: region: "region" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]

以下為使用 sigv4 將日誌和追蹤傳送至 us-east-1 的範例。

receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: https://logs.us-east-1.amazonaws.com/v1/logs headers: x-aws-log-group: MyApplicationLogs x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: https://xray.us-east-1.amazonaws.com/v1/traces auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "us-east-1" service: "logs" sigv4auth/traces: region: "us-east-1" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]
注意

將 OpenTelemetry SDK 設定為 always_on 取樣組態,以可靠記錄 100% 的範圍,並透過 CloudWatch Application Signals 全面了解關鍵應用程式的運作狀況。如需詳細資訊,請參閱 OpenTelemetry Java SDK 取樣器組態範例。如需使用 X-Ray OTLP 端點設定 OpenTelemetry Collector 的範例,請參閱 Application Signals 示範儲存庫。