prom/cloudwatch-exporterCloudWatch Exporter是一款用于Amazon CloudWatch的Prometheus导出器,能够将CloudWatch指标转换为Prometheus可识别的格式,以便通过Prometheus进行监控和分析。适用于需要集中收集、存储和分析AWS资源(如EC2、ELB、DynamoDB等)监控指标的场景。
aws_dimension_select)和标签过滤(aws_tag_select)。role_arn)。GetMetricData API(替代默认的GetMetricStatistics),提升大规模指标获取性能。ListMetrics API结果缓存,减少重复请求。需以下IAM权限:
cloudwatch:ListMetrics:列出可用指标。cloudwatch:GetMetricStatistics/cloudwatch:GetMetricData:获取指标数据。tag:GetResources:使用aws_tag_select功能时需此权限。bashdocker run -p 9106:9106 -v /本地路径/config.yml:/config/config.yml prom/cloudwatch-exporter
-p 9106:9106:映射容器端口9106(默认导出端口)到主机。-v /本地路径/config.yml:/config/config.yml:挂载本地配置文件到容器内默认路径。bashdocker run -p 9106:9106 -v /本地路径/us-west-1.yml:/config/us-west-1.yml prom/cloudwatch-exporter /config/us-west-1.yml
创建Dockerfile:
DockerfileFROM prom/cloudwatch-exporter ADD config.yml /config/
构建并运行:
bashdocker build -t my-cloudwatch-exporter . docker run -p 9106:9106 my-cloudwatch-exporter
配置文件为YAML格式,用于定义需导出的CloudWatch指标及相关参数。
| 参数名 | 描述 |
|---|---|
| region | 可选,AWS区域。未指定时,通过默认区域提供链自动获取。 |
| role_arn | 可选,需扮演的AWS角色ARN,用于跨账号获取指标。 |
| metrics | 必选,需导出的CloudWatch指标列表。 |
| aws_namespace | 必选(metrics内),CloudWatch指标命名空间(如AWS/ELB)。 |
| aws_metric_name | 必选(metrics内),指标名称(如RequestCount)。 |
| aws_dimensions | 必选(metrics内),指标维度列表(需包含该指标所有可用维度)。 |
| aws_dimension_select | 可选(metrics内),维度值过滤,格式为{维度名: [值列表]}。 |
| aws_dimension_select_regex | 可选(metrics内),维度值正则过滤,格式为{维度名: [正则列表]}。 |
| aws_tag_select | 可选(metrics内),基于资源标签过滤,包含tag_selections等子参数。 |
| tag_selections | 可选(aws_tag_select内),标签过滤,格式为{标签键: [标签值列表]}。 |
| resource_type_selection | 必选(aws_tag_select内),资源类型(如elasticloadbalancing:load***)。 |
| resource_id_dimension | 必选(aws_tag_select内),映射资源ID的CloudWatch维度名。 |
| arn_resource_id_regexp | 可选(aws_tag_select内),从ARN提取资源ID的正则表达式。 |
| aws_statistics | 可选,需获取的统计数据列表(Sum、Average等),默认获取所有统计数据。 |
| aws_extended_statistics | 可选,扩展统计数据列表(如p95)。 |
| delay_seconds | 可选,请求最新数据的延迟时间(秒),默认600s,避免数据未收敛。 |
| range_seconds | 可选,数据请求时间范围(秒),默认600s。 |
| period_seconds | 可选,指标周期(秒),默认60s。 |
| set_timestamp | 可选,是否使用CloudWatch原始时间戳,默认true。 |
| use_get_metric_data | 可选,是否使用GetMetricData API,默认false(实验性功能)。 |
使用维度过滤(aws_dimension_select):
yaml--- region: eu-west-1 metrics: - aws_namespace: AWS/ELB aws_metric_name: RequestCount aws_dimensions: [AvailabilityZone, Load***Name] aws_dimension_select: Load***Name: [myLB] aws_statistics: [Sum]
使用标签过滤(aws_tag_select):
yaml--- region: eu-west-1 metrics: - aws_namespace: AWS/ELB aws_metric_name: RequestCount aws_dimensions: [AvailabilityZone, Load***Name] aws_tag_select: tag_selections: Monitoring: ["enabled"] resource_type_selection: "elasticloadbalancing:load***" resource_id_dimension: Load***Name aws_statistics: [Sum]
AWS_ACCESS_KEY_ID:AWS访问密钥ID(用于凭证认证)。AWS_SECRET_ACCESS_KEY:AWS密钥(用于凭证认证)。AWS_REGION)。delay_seconds=600s,确保数据收敛,Prometheus查询时需使用offset 10m访问历史数据。aws_dynamodb_<METRIC>_index_<STATISTIC>)。GetMetricStatistics按API请求计费,GetMetricData按指标数量计费,通过cloudwatch_requests_total监控请求量。manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务