如何创建Cloudwatch图表统计Aurora Postgres只读副本实例数量?
统计Aurora Postgres只读副本数量的CloudWatch图表方案
CloudWatch没有原生指标直接统计Aurora只读副本数量,但可以通过以下几种方法实现需求:
方法一:用CloudWatch Metrics Insights直接查询
这是最简单的方式,无需额外代码,直接在CloudWatch控制台编写查询语句:
SELECT COUNT(*) FROM SCHEMA("AWS/RDS", "DBClusterIdentifier", "Role") WHERE Role = 'READ_REPLICA' AND DBClusterIdentifier = '你的Aurora集群ID'
替换你的Aurora集群ID为实际集群名称,执行查询后即可看到当前只读副本数量,还能将查询结果保存为图表并设置时间范围。
方法二:Lambda推送自定义CloudWatch指标
如果需要更灵活的统计逻辑,或要与其他监控数据联动,可以用Lambda定期拉取副本数量并推送到CloudWatch:
- 创建Python Lambda函数,示例代码如下:
import boto3 def lambda_handler(event, context): rds = boto3.client('rds') cluster_id = '你的Aurora集群ID' # 筛选集群下的只读副本实例 resp = rds.describe_db_instances( Filters=[ {'Name': 'db-cluster-id', 'Values': [cluster_id]}, {'Name': 'role', 'Values': ['READ_REPLICA']} ] ) replica_count = len(resp['DBInstances']) # 推送自定义指标到CloudWatch cw = boto3.client('cloudwatch') cw.put_metric_data( Namespace='AuroraCustom', MetricData=[ { 'MetricName': 'ReadOnlyReplicaCount', 'Dimensions': [{'Name': 'DBCluster', 'Value': cluster_id}], 'Value': replica_count, 'Unit': 'Count' } ] ) return {'count': replica_count}
- 给Lambda配置IAM权限,允许调用
rds:DescribeDBInstances和cloudwatch:PutMetricData操作。 - 添加定时触发器(例如每分钟执行一次),CloudWatch会持续收到副本数量指标,之后就能基于该指标创建图表。
方法三:RDS事件触发更新(可选)
如果仅关注副本数量的变化,可配置RDS事件通知,当只读副本创建/删除时触发Lambda更新指标,但这种方式实时性不如定时推送稳定,适合仅需记录变更的场景。
内容的提问来源于stack exchange,提问作者user2943799
相关产品推荐
相关产品推荐

