安装带有 Prometheus 指标收集功能的 CloudWatch 代理 - Amazon CloudWatch
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

安装带有 Prometheus 指标收集功能的 CloudWatch 代理

Support for Prometheus metrics is in beta. The beta is open to all AWS accounts and you do not need to request access. Features may be added or changed before announcing General Availability. Don’t hesitate to contact us with any feedback or let us know if you would like to be informed when updates are made by emailing us at containerinsightsfeedback@amazon.com

在按照下面这些步骤安装 CloudWatch 代理来收集 Prometheus 指标之前,您必须有在 Amazon EKS 上运行的集群或者在 Amazon EC2 实例上运行的 Kubernetes 集群。

设置 IAM 角色

第一步是在集群中设置必要的 IAM 策略。您可以通过将策略添加到用于集群的 IAM 角色来执行此操作。

在集群中为 Prometheus 支持设置 IAM 策略

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Instances (实例)

  3. 您需要查找集群的 IAM 角色名称的前缀。为此,请选中集群中实例名称旁边的复选框,然后选择操作实例设置附加/替换 IAM 角色。然后复制 IAM 角色的前缀,例如 eksctl-dev303-workshop-nodegroup

  4. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  5. 在导航窗格中,选择 Roles

  6. 使用搜索框查找您在此过程前面复制的前缀,然后选择该角色。

  7. 选择附加策略。​

  8. 使用搜索框查找 CloudWatchAgentServerPolicy。选中 CloudWatchAgentServerPolicy 旁边的复选框,然后选择附加策略

安装 CloudWatch 代理以收集 Prometheus 指标

您必须在集群中安装 CloudWatch 代理才能收集指标。对于 Amazon EKS 集群和 Kubernetes 集群,安装代理的方式有所不同。

删除具有 Prometheus 支持的 CloudWatch 代理的早期版本

如果您的集群中已安装了具有 Prometheus 支持的 CloudWatch 代理版本,则必须通过输入以下命令删除该版本。这仅对具有 Prometheus 支持的以前版本的代理是必要的。您无需删除启用了 Container Insights 但没有 Prometheus 支持的 CloudWatch 代理。

kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch

在 Amazon EKS 上安装 CloudWatch 代理

要在 Amazon EKS 集群上安装具有 Prometheus 支持的 CloudWatch 代理,请按照下列步骤操作。

在 Amazon EKS 集群上安装具有 Prometheus 支持的 CloudWatch 代理

  1. 输入以下命令,检查是否已创建 amazon-cloudwatch 命名空间:

    kubectl get namespace
  2. 如果结果中未显示 amazon-cloudwatch,请输入以下命令来创建它:

    kubectl create namespace amazon-cloudwatch
  3. 要使用默认配置部署代理并使其将数据发送到所在的 AWS 区域,请输入以下命令:

    kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/prometheus-beta/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml

    要让代理将数据发送到不同的区域,请按照下列步骤操作:

    1. 输入以下命令,下载代理的 YAML 文件:

      curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/prometheus-beta/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
    2. 使用文本编辑器打开文件,然后搜索文件的 cwagentconfig.json 块。

    3. 添加突出显示的行,并指定所需的区域:

      cwagentconfig.json: | { "agent": { "region": "us-east-2" }, "logs": { ...
    4. 保存文件并使用更新后的文件部署代理。

      kubectl apply -f prometheus-eks.yaml

在 Kubernetes 集群上安装 CloudWatch 代理

要在运行 Kubernetes 的集群上安装具有 Prometheus 支持的 CloudWatch 代理,请输入以下命令:

curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/prometheus-beta/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" | kubectl apply -f -

MyCluster 替换为集群的名称。此名称在存储代理收集的日志事件的日志组名称中使用,也用作代理收集的指标的维度。

region 替换为要将指标发送到的 AWS 区域的名称。例如:us-west-1

验证代理是否正在运行

在 Amazon EKS 和 Kubernetes 集群上,您可以输入以下命令以确认代理正在运行。

kubectl get pod -l "app=cwagent-prometheus" -n amazon-cloudwatch

如果结果包含处于 Running 状态的单个 CloudWatch 代理 pod,则代理会运行并收集 Prometheus 指标。默认情况下,CloudWatch 代理每分钟收集 App Mesh、NGINX、Memcached、Java/JMX 和 HAProxy 的指标。有关这些指标的更多信息,请参阅 CloudWatch 代理收集的 Prometheus 指标

您还可以将 CloudWatch 代理配置为从其他 Prometheus 导出程序收集指标。有关更多信息,请参阅配置用于 Prometheus 监控的 CloudWatch 代理