EKS集群CloudWatch Agent采集K8s与Prometheus指标报错咨询
解决CloudWatch Agent同时采集K8s与Prometheus指标的问题
一、调整配置支持双指标采集
报错feature kubernetes, ecs, prometheus are mutually exclusive的核心原因是:CloudWatch Agent不允许在同一个agent配置块中同时启用kubernetes和prometheus特性。解决方法是使用多实例配置,在同一个配置文件中定义两个独立的agent段,分别处理K8s指标采集和Prometheus指标采集:
# 实例1:采集Kubernetes原生指标 agent: region: <你的AWS区域> metrics_collection_interval: 60 feature: kubernetes kubernetes: cluster_name: <你的EKS集群名称> metrics_collection_interval: 60 api_server_url: <EKS API服务器地址> role_arn: <CW Agent的IAM角色ARN> # 实例2:采集Prometheus指标 agent: region: <你的AWS区域> metrics_collection_interval: 60 feature: prometheus prometheus: config_path: /etc/prometheus/scrape-config.yml scrape_interval: 60s emf_processor: metric_declaration: - source_labels: [__name__] label_matcher: "^你要导出的Prometheus指标前缀.*$" metric_name: "自定义CloudWatch指标名称" unit: "对应指标单位"
关键注意点:
- 两个
agent实例的AWS区域需保持一致 - 确保CW Agent Pod拥有访问EKS API和Prometheus端点的权限
- Prometheus配置段可根据实际需求调整指标过滤规则、抓取路径等参数
二、获取原K8s采集的指标列表
如果要改用Prometheus采集替代原有K8s指标导出,可通过以下3种方式快速获取原指标列表:
从Agent配置直接查看:在CW Agent Pod内执行命令,导出当前生效的K8s采集配置:
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/etc/amazon-cloudwatch-agent/config.json -s输出结果中
kubernetes.metrics字段会列出所有配置采集的K8s指标。从CloudWatch控制台导出:进入CloudWatch控制台 → 指标 → Container Insights → EKS Clusters,查看
kubernetes.io命名空间下的所有指标,可直接复制或导出这些指标名称。使用AWS CLI查询:执行以下命令批量获取K8s指标名称:
aws cloudwatch list-metrics --namespace kubernetes.io --query 'Metrics[].MetricName' --output text
内容的提问来源于stack exchange,提问作者Djoby
相关产品推荐
相关产品推荐

