
prometheuscommunity/yet-another-cloudwatch-exporter![Quay容器][quay] ![Docker Hub容器][docker]
YACE(全称yet another cloudwatch exporter)是一款用于AWS CloudWatch指标的Prometheus导出器,采用Go语言编写,并使用官方AWS SDK。
自2024年11月起,YACE已加入prometheus-community。更多详情请参阅以下公告:
如果您倾向于Java实现,可考虑使用官方的CloudWatch Exporter。
由于YACE版本尚未达到1.0.0,任何新版本均可能引入不兼容变更。变更详情将记录在CHANGELOG.md中。
在可行情况下,功能将先标记为弃用而非立即修改或移除,这意味着YACE仍可正常运行但可能输出警告日志。弃用功能预计将在未来2-3个版本中永久变更或移除。
有关如何报告安全漏洞,请参阅SECURITY.md。
仅最新版本会接收安全更新,不支持旧版本。
/aws/sagemaker/Endpoints - SageMaker端点/aws/sagemaker/InferenceRecommendationsJobs - SageMaker推理推荐作业/aws/sagemaker/ProcessingJobs - SageMaker处理作业/aws/sagemaker/TrainingJobs - SageMaker训练作业/aws/sagemaker/TransformJobs - SageMaker批处理转换作业AmazonMWAA - 托管Apache AirflowAWS/ACMPrivateCA - ACM私有CAAWS/AmazonMQ - 托管消息代理服务AWS/AOSS - OpenSearch无服务器AWS/ApiGateway - ApiGateway(V1和V2)AWS/ApplicationELB - 应用程序负载均衡器AWS/AppRunner - 托管容器应用服务AWS/AppStream - AppStreamAWS/AppSync - AppSyncAWS/Athena - AthenaAWS/AutoScaling - 自动扩展组AWS/Backup - 备份AWS/Bedrock - 生成式AIAWS/Billing - 账单AWS/Cassandra - CassandraAWS/CertificateManager - 证书管理器AWS/Client*** - 基于客户端的***AWS/CloudFront - CloudFrontAWS/Cognito - CognitoAWS/DataSync - DataSyncAWS/DDoSProtection - 分布式拒绝服务(DDoS)保护服务AWS/DirectoryService - 目录服务(MicrosoftAD)AWS/DMS - 数据库迁移服务AWS/DocDB - DocumentDB(兼容MongoDB)AWS/DX - Direct ConnectAWS/DynamoDB - NoSQL键值数据库AWS/EBS - 弹性块存储服务AWS/EC2 - 弹性计算云AWS/EC2Spot - 弹性计算云Spot实例AWS/ECR - 弹性容器注册表AWS/ECS - 弹性容器服务(服务指标)AWS/EFS - 弹性文件系统AWS/ElastiCache - ElastiCacheAWS/ElasticBeanstalk - Elastic BeanstalkAWS/ElasticMapReduce - Elastic MapReduceAWS/ELB - 弹性负载均衡器AWS/EMRServerless - Amazon EMR无服务器AWS/ES - ElasticSearchAWS/Events - EventBridgeAWS/Firehose - 托管流服务AWS/FSx - FSx文件系统AWS/GameLift - GameLiftAWS/GatewayELB - 网关负载均衡器AWS/GlobalAccelerator - AWS全球加速器AWS/IoT - IoTAWS/IPAM - IP地址管理器AWS/Kafka - 托管Apache KafkaAWS/KafkaConnect - AWS MSK连接器AWS/Kinesis - Kinesis数据流AWS/KinesisAnalytics - Kinesis数据分析SQL应用AWS/KMS - 密钥管理服务AWS/Lambda - Lambda函数AWS/Logs - CloudWatch日志AWS/MediaConnect - AWS Elemental MediaConnectAWS/MediaConvert - AWS Elemental MediaConvertAWS/MediaLive - AWS Elemental MediaLiveAWS/MediaPackage - AWS Elemental MediaPackageAWS/MediaTailor - AWS Elemental MediaTailorAWS/MemoryDB - AWS MemoryDBAWS/MWAA - 托管Apache Airflow(容器、队列和数据库指标)AWS/NATGateway - NAT网关AWS/Neptune - NeptuneAWS/NetworkELB - 网络负载均衡器AWS/NetworkFirewall - 网络防火墙AWS/Network Manager - 网络管理器AWS/PrivateLinkEndpoints - VPC端点AWS/PrivateLinkServices - VPC端点服务AWS/Prometheus - 托管Prometheus服务AWS/QLDB - 量子账本数据库AWS/QuickSight - QuickSight(商业智能)AWS/RDS - 关系型数据库服务AWS/Redshift - Redshift数据库AWS/Redshift-Serverless - Redshift无服务器AWS/Route53 - Route53健康检查AWS/Route53Resolver - Route53解析器AWS/RUM - 真实用户监控AWS/S3 - 对象存储AWS/Sagemaker/ModelBuildingPipeline - SageMaker模型构建管道AWS/SageMaker - SageMaker调用AWS/Scheduler - EventBridge调度器AWS/SecretsManager - 密钥管理器AWS/SES - 简单电子邮件服务AWS/SNS - 简单通知服务AWS/SQS - 简单队列服务AWS/States - Step FunctionsAWS/StorageGateway - 本地访问云存储AWS/Timestream - 时序数据库服务AWS/TransitGateway - 中转网关AWS/TrustedAdvisor - Trusted AdvisorAWS/Usage - 部分AWS资源和API的使用情况AWS/VpcLattice - VPC LatticeAWS/*** - ***连接AWS/WAFV2 - Web应用防火墙v2AWS/WorkSpaces - WorkSpacesContainerInsights - EKS ContainerInsights(依赖CloudWatch代理)CWAgent - CloudWatch代理ECS/ContainerInsights - ECS/ContainerInsights(Fargate指标)Glue - AWS Glue作业为提供向后兼容性,YACE的部分新功能或破坏性变更可能受特性标志保护。详情请参阅docs/feature_flags.md。
请参考安装指南。
导出器需要在有权限访问AWS的环境中运行。导出器使用AWS SDK for Go,并支持通过AWS默认凭证链提供认证。无论使用何种方式获取凭证,导出器都需要某些权限才能正常工作。
作为快速入门,以下IAM策略可授予YACE所需的所有权限:
json{ "Version": "2012-10-17", "Statement": [ { "Action": [ "tag:GetResources", "cloudwatch:GetMetricData", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "apigateway:GET", "aps:ListWorkspaces", "autoscaling:DescribeAutoScalingGroups", "dms:DescribeReplicationInstances", "dms:DescribeReplicationTasks", "ec2:DescribeTransitGatewayAttachments", "ec2:DescribeSpotFleetRequests", "shield:ListProtections", "storagegateway:ListGateways", "storagegateway:ListTagsForResource", "iam:ListAccountAliases" ], "Effect": "Allow", "Resource": "*" } ] }
如果需要根据需求移除某些权限,可根据要刮取的CloudWatch命名空间调整策略:
运行静态和发现作业所需的最低权限:
json"tag:GetResources", "cloudwatch:GetMetricData", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics"
刮取AWS/ApiGateway命名空间资源发现所需权限:
json"apigateway:GET"
刮取AWS/AutoScaling命名空间资源发现所需权限:
json"autoscaling:DescribeAutoScalingGroups"
刮取AWS/DMS命名空间资源发现所需权限:
json"dms:DescribeReplicationInstances", "dms:DescribeReplicationTasks"
刮取AWS/EC2Spot命名空间资源发现所需权限:
json"ec2:DescribeSpotFleetRequests"
刮取AWS/Prometheus命名空间资源发现所需权限:
json"aps:ListWorkspaces"
刮取AWS/StorageGateway命名空间资源发现所需权限:
json"storagegateway:ListGateways", "storagegateway:ListTagsForResource"
刮取AWS/TransitGateway命名空间资源发现所需权限:
json"ec2:DescribeTransitGatewayAttachments"
刮取AWS/DDoSProtection命名空间受保护资源发现所需权限:
json"shield:ListProtections"
AWS IAM API支持创建账户别名,这是易于识别账户的友好名称。每个账户最多可有一个别名(文档)。以下权限用于获取账户别名(导出为aws_account_info指标的标签):
json"iam:ListAccountAliases"
如果在AWS EC2实例中运行YACE,导出器会自动尝试关联IAM角色。如需禁用此行为,可设置环境变量AWS_EC2_METADATA_DISABLED=true关闭元数据端点使用。
请参考配置文档。
text### 带有exportedTagsOnMetrics的指标 aws_ec2_cpuutilization_maximum{dimension_InstanceId="i-someid", name="arn:aws:ec2:eu-west-1:472724724:instance/i-someid", tag_Name="jenkins"} 57.2916666666667 ### 带有标签的信息辅助指标 aws_elb_info{name="arn:aws:elasticloadbalancing:eu-west-1:472724724:load***/a815b16g3417211e7738a02fcc13bbf9",tag_KubernetesCluster="production-19",tag_Name="",tag_kubernetes_io_cluster_production_19="owned",tag_kubernetes_io_service_name="nginx-ingress/private-ext",region="eu-west-1"} 0 aws_ec2_info{name="arn:aws:ec2:eu-west-1:472724724:instance/i-someid",tag_Name="jenkins"} 0 ### 跟踪CloudWatch请求以计算成本 yace_cloudwatch_requests_total 168
text# CPU利用率 + 实例ID的Name标签 - 监控无需实例ID aws_ec2_cpuutilization_average + on (name) group_left(tag_Name) aws_ec2_info # 弹性搜索集群的可用存储空间(MB)+ Type标签 (aws_es_free_storage_space_sum + on (name) group_left(tag_Type) aws_es_info) / 1024 # 为4xx ELB指标添加Kubernetes/kops标签 (aws_elb_httpcode_backend_4_xx_sum + on (name) group_left(tag_KubernetesCluster,tag_kubernetes_io_service_name) aws_elb_info) # ELB可用性指标(成功请求/总请求)+ k8s服务名称 # 所有指标需设置nilToZero,否则无法工作 ((aws_elb_request_count_sum - on (name) group_left() aws_elb_httpcode_backend_4_xx_sum) - on (name) group_left() aws_elb_httpcode_backend_5_xx_sum) + on (name) group_left(tag_kubernetes_io_service_name) aws_elb_info # 预测7天后弹性搜索磁盘大小并带有type和version标签 predict_linear(aws_es_free_storage_space_minimum[2d], 86400 * 7) + on (name) group_left(tag_type, tag_version) aws_es_info # 基于过去10分钟预测未来32天CloudWatch成本 # 前***次请求免费 # 每1000次GetMetricStatistics API请求0.01***([***] ((increase(yace_cloudwatch_requests_total[10m]) * 6 * 24 * 32) - ***) / 1000 * 0.01
为支持本地测试,可通过设置环境变量AWS_ENDPOINT_URL覆盖所有AWS URL:
shelldocker run -d --rm -v $PWD/credentials:/exporter/.aws/credentials -v $PWD/config.yml:/tmp/config.yml \ -e AWS_ENDPOINT_URL=http://localhost:4766 -p 5000:5000 --name yace quay.io/prometheuscommunity/yet-another-cloudwatch-exporter:latest
多RoleArns适用于监控多账户环境(所有账户使用相同AWS服务)。例如,在监控账户运行YACE,其他账户(如newspapers、radio、television)运行ECS集群,每个账户授予YACE假设本地IAM角色的权限。此类场景配置示例:
yamlapiVersion: v1alpha1 sts-region: eu-west-1 discovery: jobs: - type: AWS/ECS regions: - eu-north-1 roles: - roleArn: "arn:aws:iam::1111111111111:role/prometheus" # newspaper - roleArn: "arn:aws:iam::2222222222222:role/prometheus" # radio - roleArn: "arn:aws:iam::3333333333333:role/prometheus" # television metrics: - name: MemoryReservation statistics: - Average - Minimum - Maximum period: 6
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务