Python 如何在CloudWatch中获取MetricDataResults中的所有维度值
我有一个如下所示的搜索表达式:Python 如何在CloudWatch中获取MetricDataResults中的所有维度值,python,amazon-web-services,boto3,amazon-cloudwatch,Python,Amazon Web Services,Boto3,Amazon Cloudwatch,我有一个如下所示的搜索表达式: stats = cloudwatch.get_metric_data( MetricDataQueries=[ { "Id":'m1', 'Expression': "SEARCH('{ABC/HEARTBEAT,Client_Email, Clinic_Id, NodeName} MetricName=\"PING_PONG\" Clinic_Id = 7667', 'Av
stats = cloudwatch.get_metric_data(
MetricDataQueries=[
{
"Id":'m1',
'Expression': "SEARCH('{ABC/HEARTBEAT,Client_Email, Clinic_Id, NodeName} MetricName=\"PING_PONG\" Clinic_Id = 7667', 'Average', 864000)",
'ReturnData': True,
},
],
StartTime=Util.utcnow() - timedelta(hours=2),
EndTime=Util.utcnow(),
)
它返回:
{
"Messages": [],
"ResponseMetadata": {
"RetryAttempts": 0,
"HTTPStatusCode": 200,
"RequestId": "2f33cc09-61ff-40b0-9d28-72c4d949b2f0",
"HTTPHeaders": {
"x-amzn-requestid": "2f33cc09-61ff-40b0-9d28-72c4d949b2f0",
"date": "Fri, 06 Dec 2019 22:47:25 GMT",
"content-length": "928",
"content-type": "text/xml"
}
},
"MetricDataResults": [
{
"Timestamps": [
"2019-12-06 20:47:00+00:00"
],
"StatusCode": "Complete",
"Values": [
1
],
"Id": "m1",
"Label": "simran+test2@abc.com"
},
{
"Timestamps": [
"2019-12-06 20:47:00+00:00"
],
"StatusCode": "Complete",
"Values": [
1
],
"Id": "m1",
"Label": "simran+test4@abc.com"
}
]
}
我需要获取Client_Email的值,NodeName,用于Clinic_Id=7667的度量
目前,我得到客户电子邮件作为标签不知道为什么,但我需要客户电子邮件和节点名
更新:
u'MetricDataResults在我看来是这样的:
u'MetricDataResults': [{u'Timestamps': [], u'StatusCode': 'Complete', u'Values': [], u'Id': 'm1', u'Label': 'abc'}, {u'Timestamps': [], u'StatusCode': 'Complete', u'Values': [], u'Id': 'm1', u'Label': 'abc2'}]
为什么时间戳和值中有空数组?标签是响应中唯一可以显示此值的位置。 我怀疑NodeName只有一个不同的值,这就是为什么标签只包含Client_电子邮件。如果您有更多的电子邮件和节点组合,它们将显示在标签中,以空格分隔 如果您对度量的值不感兴趣,而只对维度的值感兴趣,则可以使用list metrics API,例如:
response = cloudwatch.list_metrics(
Namespace='ABC/HEARTBEAT',
MetricName='PING_PONG',
Dimensions=[
{
'Name': 'Clinic_Id',
'Value': '7667'
},
],
)
你说获取每个记录的所有维度的值是什么意思?@JohnRotenstein请检查update@JohnRotenstein请检查一下最新版本。I lookedup list_metrics.list_metrics似乎没有开始时间和结束时间。我需要开始时间和结束时间,以便在最后几个小时内检查它。我们这里有更好的吗?还有,有没有一种方法可以确定标签的顺序-比如尺寸值在标签下显示的顺序/也许对您来说最好的方法是两者都使用。首先列出指标,这将为您提供过去两周内发布数据的所有指标。然后对每个指标执行GetMetricData,查看哪些指标在过去几个小时内有数据。这些指标是如何公布的?ContributorInsights是最适合您的功能,这可能需要您更改发布度量的方式:我首先向SQS写信,它会触发一个lambda函数。当lambda被触发时,它会使用put_metric_数据写入cloudwatch。您需要使用嵌入式Metrics格式而不是PutMetricData才能使用Contributor Insights。客户端支持Python和NodeJ: