Python 最近2周EBS容量的最大IOPS

Python 最近2周EBS容量的最大IOPS,python,amazon-web-services,boto3,Python,Amazon Web Services,Boto3,我想检索EBS卷在过去两周内使用的最大IOPS。我正在使用cloudwatch get_metric_data函数来获取有关度量卷应用程序和卷写入程序的数据。我正在使用以下代码获取VolumeReadOps和VolumeWriteOps,然后尝试计算MaxIOPS: 这是获取度量值的函数: def cloudwatch_metric_值(CWsession、命名空间、ResourceIdentifier、vStat、vUnit、vMetricName、vPeriod): """ 函数,该函数返回

我想检索EBS卷在过去两周内使用的最大IOPS。我正在使用cloudwatch get_metric_data函数来获取有关度量卷应用程序和卷写入程序的数据。我正在使用以下代码获取VolumeReadOps和VolumeWriteOps,然后尝试计算MaxIOPS:

这是获取度量值的函数:

def cloudwatch_metric_值(CWsession、命名空间、ResourceIdentifier、vStat、vUnit、vMetricName、vPeriod):
"""
函数,该函数返回给定资源的cloudwatch度量值和度量名称
"""
如果名称空间==“EBS”:
responseCW=CWsession.get\u metric\u数据(
MetricDataQueries=[
{
'Id':'string',
“MetricStat”:{
“公制”:{
“名称空间”:“AWS/EBS”,
“MetricName”:vMetricName,
“维度”:[
{
“名称”:“卷ID”,
“值”:ResourceIdentifier
},
]
},
“期间”:vPeriod,
“Stat”:vStat,
“单位”:vUnit
},
“ReturnData”:True
},
],
StartTime=vStartTime,
EndTime=vEndTime,
)
vValue=responseCW['MetricDataResults'][0]['Values']
vTimeStamps=responseCW['MetricDataResults'][0]['Timestamps']
索引,value=max(枚举(vValue),key=operator.itemgetter(1))
度量值=值
公制时间=vTimeStamps[索引]
返回度量值时间,度量值
在main中,它的名称如下所示:

metric\u time,metric\u value=cloudwatch\u metric\u value(cloudwatch,'EBS',v['VolumeId','Sum','Count','volumeradops',300)
vReadIOPS=度量值
度量单位时间,度量单位值=cloudwatch度量单位值(cloudwatch,'EBS',v['VolumeId','Sum','Count','VolumeWriteOps',300)
vWriteIOPS=度量值
vTotalIOPS=圆形((vReadIOPS+vWriteIOPS)/300)
我知道IOPS是通过将读操作/写操作与持续时间分开来计算的。我从给定卷的MaxIOPS代码中获得的值与我在cloudwatch控制台中看到的相同值不匹配。请告知我这样做是否正确


谢谢。

好的,我可以修复,下面是工作功能:

def cloudwatch_metric_value(CWsession,NameSpace,ResourceIdentifier,vStat,vUnit,vPeriod):
    """
    Function that returns metric value of cloudwatch for a given resource and metric Name

    """

    if NameSpace=='EBS':
        responseCW = CWsession.get_metric_data(
            MetricDataQueries=[
                {
                    'Id': 'string1',
                    'MetricStat': {
                        'Metric': {
                            'Namespace': 'AWS/EBS',
                            'MetricName': 'VolumeReadOps',
                            'Dimensions': [
                                {
                                    'Name': 'VolumeId',
                                    'Value': ResourceIdentifier
                                },
                            ]
                        },
                        'Period': vPeriod,
                        'Stat': vStat,
                        'Unit': vUnit
                    },
                    'ReturnData': True
                },
                {
                    'Id': 'string2',
                    'MetricStat': {
                        'Metric': {
                            'Namespace': 'AWS/EBS',
                            'MetricName': 'VolumeWriteOps',
                            'Dimensions': [
                                {
                                    'Name': 'VolumeId',
                                    'Value': ResourceIdentifier
                                },
                            ]
                        },
                        'Period': vPeriod,
                        'Stat': vStat,
                        'Unit': vUnit
                    },
                    'ReturnData': True
                },                
            ],
            StartTime=vStartTime,
            EndTime=vEndTime,
        )

    vReadValue=responseCW['MetricDataResults'][0]['Values']
    vReadTimeStamps=responseCW['MetricDataResults'][0]['Timestamps']
    vWriteValue=responseCW['MetricDataResults'][1]['Values']
    vWriteTimeStamps=responseCW['MetricDataResults'][1]['Timestamps']
    vReadWriteValue = [vReadValue[i]+vWriteValue[i] for i in range(len(vWriteValue))]
    if vReadWriteValue:
        metric_value = max(vReadWriteValue)
        metric_time = vReadTimeStamps[vReadWriteValue.index(metric_value)]
        metric_value = metric_value / 300
    else:
        metric_value=1
        metric_time=date_t        
    return metric_time,metric_value

您的代码似乎正在请求度量的
。最好使用
Max