OpenTelemetry Collector Contrib - Amazon CloudWatch

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

OpenTelemetry Collector Contrib

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

先決條件

確定已在 CloudWatch 中啟用交易搜尋。如需詳細資訊,請參閱交易搜尋

下載 OpenTelemetry Collector Contrib

下載最新版本的 OpenTelemetry Collector Contrib 分佈

安裝 OpenTelemetry Collector Contrib

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

在 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_ID SECRET_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 收集器

複製並貼上以下內容,以設定收集器將日誌和追蹤傳送至 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 SDKs設定為 always_on 取樣組態,以可靠地記錄 100% 的範圍,並使用 CloudWatch Application Signals 取得關鍵應用程式的完整可見性。如需詳細資訊,請參閱 OpenTelemetry Java SDK 採樣器組態範例。如需使用 X-Ray OTLP 端點設定 OpenTelemetry Collector 的範例,請參閱應用程式訊號示範儲存庫。