配置用于 Prometheus 监控的 CloudWatch 代理 - Amazon CloudWatch
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

配置用于 Prometheus 监控的 CloudWatch 代理

CloudWatch 代理使用 YAML 文件配置如何收集 Prometheus 指标。对于 Amazon EKS 集群,此文件名为 prometheus-eks.yaml;对于 Amazon EC2 实例上的 Kubernetes 集群,此文件名为 prometheus-k8s.yaml

此 YAML 文件包含两个配置映射部分:

  • name: prometheus-config 部分包含 Prometheus 抓取的设置。它遵循 Prometheus 文档的 <scrape_config> 中记录的标准 Prometheus 抓取。您可使用此部分添加抓取目标。

  • name: prometheus-cwagentconfig 部分包含 CloudWatch 代理的配置。您可以使用此部分配置 CloudWatch 如何收集 Prometheus 指标。例如,您可以将要导入 CloudWatch 的指标列入白名单,并定义其维度。

从其他 Prometheus 导出程序收集指标

要将 CloudWatch 代理配置为从其他工作负载收集 Prometheus 指标,请使用文本编辑器打开 prometheus-eks.yamlprometheus-k8s.yaml,并修改此文件的两个部分:

本节的其余部分显示此流程的一个示例,首先是从 kube-dns 服务收集指标。要开始从任何其他工作负载或服务收集指标,请执行以下步骤并替换步骤 2 中的对应值。

开始从其他工作负载(例如 kube-dns 服务)收集 Prometheus 指标

  1. 通过输入以下命令之一,下载 prometheus-eks.yamlprometheus-k8s.yaml 文件的最新版本。对于 Amazon EKS 集群,请输入以下命令:

    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

    对于在 Amazon EC2 实例上运行的 Kubernetes 集群,请输入以下命令:

    curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/prometheus-beta/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml
  2. 使用文本编辑器打开文件,找到 cwagentconfig.json 部分,添加以下部分并保存更改:

    { "source_labels": ["Service"], "label_matcher": "(.*node-exporter.*|.*kube-dns.*)", "dimensions": [["Service","Namespace"]], "metric_selectors": ["^coredns_dns_request_type_count_total$"] }

    您添加的新部分包括以下行:

    • source_labels 指定由 label_matcher 行检查的标签的值。

    • label_matcher 是一种正则表达式,用于检查 source_labels 中列出的 Kubernetes 标签的值。匹配的指标将列入白名单,以包含在发送到 CloudWatch 的嵌入式指标格式中。

    • metric_selectors 是一个正则表达式,用于指定要收集并发送到 CloudWatch 的指标。

    • dimensions 是要用作每个选定指标的 CloudWatch 维度的标签列表。

  3. 如果您已在集群中部署了具有 Prometheus 支持的 CloudWatch 代理,则必须通过输入以下命令将其删除:

    kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
  4. 通过输入以下命令,使用更新的配置部署 CloudWatch 代理:

    kubectl apply -f prometheus-eks.yaml

其他配置选项

您也可以使用 prometheus-eks.yamlprometheus-k8s.yaml 文件进行其他配置设置。例如,此 YAML 文件包含以下部分:

global: scrape_interval: 1m scrape_timeout: 10s sample_limit: 10000
  • scrape_interval - 定义抓取目标的频率。

  • scrape_timeout - 定义抓取请求超时之前等待的时间。

  • sample_limit - 限制每次抓取接受的抓取示例数。如果在指标重新标记后存在的示例数量超过此数量,则整个抓取将视为失败。将此值设置为 0 表示无限制。

这些参数的工作方式与 Prometheus 配置文件中的参数类似。有关更多信息,请参阅 Prometheus 文档中的配置