OpenTelemetry Collector Contrib - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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。有关更多信息,请参阅 Install the Collector

在 Amazon EC2 或本地主机上设置 Amazon 凭证

您可以在 Amazon EC2 或本地主机上设置 Amazon 凭证。

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 用户的名称。这是 Amazon 的登录名,将用于对您的主机进行身份验证。

  4. 选择下一步

  5. 设置权限页面的权限选项下,选择直接附加策略

  6. 权限策略列表中,选择要添加到您的用户的 CloudWatchAgentServerPolicy 策略。

  7. 选择下一步

  8. 审核并创建页面上,确保您对用户名满意,并且 CloudWatchAgentServerPolicy 策略位于权限摘要下。

  9. 选择创建用户

  10. 创建并检索您的 Amazon 访问密钥和秘密密钥 – 在 IAM 控制台的导航窗格中,选择用户,然后选择您在上一步中所创建用户的用户名。

  11. 在用户的页面上,选择安全凭证选项卡。

  12. 访问密钥部分,选择创建访问密钥

  13. 对于创建访问密钥步骤 1,选择命令行界面 (CLI)

  14. 对于创建访问密钥步骤 2,(可选)输入标记,然后选择下一步

  15. 对于创建访问密钥步骤 3,选择下载.csv 文件以保存包含您的 IAM 用户访问密钥和秘密访问密钥的 .csv 文件。您在后续步骤中需要此信息。

  16. 选择完成

  17. 通过输入以下命令,在本地主机中配置 Amazon 凭证。将 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 集群设置 Amazon 凭证

要为您的 Amazon EKS 或 Kubernetes 集群设置 Amazon 凭证以向 CloudWatch 发送遥测数据,请按照以下步骤操作。

Setup IAM permissions for Amazon EKS
  1. 使用以下命令为您的集群创建 IAM OIDC 身份提供商。

    eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} --region ${REGION} --approve
  2. 使用以下命令为 OTel Collector 的 Kubernetes 服务账户分配 IAM 角色。

    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. 通过输入以下命令,在本地主机中配置 Amazon 凭证。将 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 资源以添加新创建的 Amazon 凭证密钥:kubectl edit OpenTelemetryCollector otel_collector

  3. 使用文件编辑器,通过将以下配置添加到部署顶部,将 Amazon 凭证添加到 OpenTelemetryCollector 容器中。将路径 /home/user/.aws/credentials 替换为本地 Amazon 凭证文件的位置。

    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 的示例,请参阅应用程序信号演示存储库。