我试图借助lambda函数从Cloudwatch中获取EC2实例的“已用磁盘空间”(百分比)。它不返回任何值。
当我尝试指定文件系统和Mountpath时,显示错误-
参数验证失败:\ n MetricDataQueries [0] .MetricStat.Metric.Dimensions [0]中的未知参数:\“ Filesystem \”,必须为以下之一:Name,Value, “ errorType”:“ ParamValidationError”
这是完整的代码。
import boto3
import datetime
def lambda_handler(event, context):
client = boto3.client('cloudwatch')
response = client.get_metric_data(
MetricDataQueries=[
{
'Id': 'd1',
'MetricStat': {
'Metric': {
'Namespace': 'cloudwatch',
'MetricName': 'DiskSpaceUtilization',
'Dimensions': [
{
'Name': 'InstanceId',
'Value': '*****************',
'Filesystem': '/****/****'
},
]
},
'Period': 300,
'Stat': 'Maximum',
'Unit': 'Percent'
},
'ReturnData': True
},
],
StartTime=datetime.datetime.utcnow() - datetime.timedelta(seconds=600),
EndTime=datetime.datetime.utcnow(),
ScanBy='TimestampDescending',
MaxDatapoints=60
)
return response
我希望输出为DiskSpaceUtilization-x%。
但是当前输出是
"MetricDataResults": [
{
"Id": "d1",
"Label": "DiskSpaceUtilization",
"Timestamps": [],
"Values": [],
"StatusCode": "Complete"
}
],
答案 0 :(得分:0)
文件系统是一个单独的维度,请对此进行更改:
'Dimensions': [
{
'Name': 'InstanceId',
'Value': '*****************',
'Filesystem': '/****/****'
},
]
对此:
'Dimensions': [
{
'Name': 'InstanceId',
'Value': '*****************'
},
{
'Name': 'Filesystem',
'Value': '/****/****'
}
]
然后看看您能得到什么(修复此问题后可能还会有其他问题)。