通过 lambda python 函数获取 AWS RDS 的当前 CPU 利用率
Posted
技术标签:
【中文标题】通过 lambda python 函数获取 AWS RDS 的当前 CPU 利用率【英文标题】:Get current CPU utilization of AWS RDS through lambda python function 【发布时间】:2020-08-30 20:03:31 【问题描述】:我尝试使用以下代码通过 lambda python 获取 AWS RDS 的当前 cpu 利用率。但我得到的是空值:
代码:
import json
import boto3,datetime
def lambda_handler(event, context):
cloudwatch = boto3.client('cloudwatch')
response = cloudwatch.get_metric_data(
MetricDataQueries=[
'Id': 'cpu',
'MetricStat':
'Metric':
'Namespace': 'AWS/RDS',
'MetricName': 'CPUUtilization',
'Dimensions': [
"Name": "DBInstanceIdentifier",
"Value": "mydb"
]
,
'Period': 30,
'Stat': 'Average',
],
StartTime=(datetime.datetime.now() - datetime.timedelta(seconds=300)).timestamp(),
EndTime=datetime.datetime.now().timestamp()
)
print(response)
输出如下:
'MetricDataResults': ['Id': 'cpu', 'Label': 'CPUUtilization', 'Timestamps': [], 'Values': [], 'StatusCode': 'Complete']
获取时间戳和值的空值。感谢任何帮助。
【问题讨论】:
【参考方案1】:尝试删除 Period:30 或按照文档中的建议将其更改为 60 的倍数:
返回数据点的粒度,以秒为单位。对于指标 使用常规分辨率,时间可以短至一分钟(60 秒)并且必须是 60 的倍数。对于高分辨率指标 以少于一分钟的时间间隔收集的,期间 可以是 1、5、10、30、60 或 60 的任何倍数。高分辨率 指标是由 PutMetricData 操作存储的那些指标, 包括 1 秒的 StorageResolution。
字典中的值也区分大小写,因此请检查您传递的值是否正确。
【讨论】:
以上是关于通过 lambda python 函数获取 AWS RDS 的当前 CPU 利用率的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Python 检索 AWS Lambda 公共 IP 地址?
使用 AWS CDK 在 AWS Codepipeline 中部署 Python Lambda 函数
Python3 AWS Lambda-向需要VPN的域发出发布请求