通过 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的域发出发布请求

使用nodejs中的AWS Lambda函数上传音频文件

无法从 lambda 中的 python 连接到 aws redshift

如何将 Python Lambda 函数集成到 AWS Amplify 的管道中