如何使用 boto3 和 lambda python 获取 lambda 的 cloudwatch 指标?
How to get cloudwatch metrics of a lambda using boto3 and lambda python?
我有一个 Lambda,我在其中尝试从另一个 Lambda 的 Cloudwatch 获取指标(特别是调用次数)。我正在关注 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/cloudwatch.html#CloudWatch.Client.get_metric_data 中的文档以及我在互联网上找到的其他一些示例,但我无法使其正常工作。当我 运行 代码时,响应出现空值,所以我可能会遗漏一些东西。
例如,在下面的代码中,我试图从 11 月开始使用我希望分析的 Lambda(称为“lambda-function-to-analyze”)进行一些测试时获取指标。
def get_metric_data():
cloudwatch = boto3.client('cloudwatch')
date = datetime.now()
first = date.replace(day=1)
last = date.replace(day = calendar.monthrange(date.year, date.month)[1])
print('first: ', first)
print('last: ', last)
targetGroupARN='arn:aws:lambda:us-east-1:1234567890:function:lambda-function-to-analyze'
tgarray=targetGroupARN.split(':')
target=tgarray[-1]
print(target)
response = cloudwatch.get_metric_data(
MetricDataQueries=[
{
'Id': 'myrequest',
'MetricStat': {
'Metric': {
'Namespace': 'Invocations',
'MetricName': 'Number of invokes',
'Dimensions': [
{
'Name': 'lambda',
'Value': target
},
]
},
'Period': 300,
'Stat': 'Sum',
# 'Unit': 'Count'
}
},
],
# StartTime=datetime(first.year, first.month, first.day),
StartTime=datetime(2021, 11, 1),
# EndTime=datetime(last.year, last.month, last.day),
EndTime=datetime(2021, 11, 30),
)
print(response)
return response
我认为主要问题是您的 MetricName
字段。也许尝试像这样更改 Namespace
和 MetricName
:
{
"Namespace": "AWS/Lambda",
"MetricName": "Invocations",
...
}
我有一个 Lambda,我在其中尝试从另一个 Lambda 的 Cloudwatch 获取指标(特别是调用次数)。我正在关注 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/cloudwatch.html#CloudWatch.Client.get_metric_data 中的文档以及我在互联网上找到的其他一些示例,但我无法使其正常工作。当我 运行 代码时,响应出现空值,所以我可能会遗漏一些东西。
例如,在下面的代码中,我试图从 11 月开始使用我希望分析的 Lambda(称为“lambda-function-to-analyze”)进行一些测试时获取指标。
def get_metric_data():
cloudwatch = boto3.client('cloudwatch')
date = datetime.now()
first = date.replace(day=1)
last = date.replace(day = calendar.monthrange(date.year, date.month)[1])
print('first: ', first)
print('last: ', last)
targetGroupARN='arn:aws:lambda:us-east-1:1234567890:function:lambda-function-to-analyze'
tgarray=targetGroupARN.split(':')
target=tgarray[-1]
print(target)
response = cloudwatch.get_metric_data(
MetricDataQueries=[
{
'Id': 'myrequest',
'MetricStat': {
'Metric': {
'Namespace': 'Invocations',
'MetricName': 'Number of invokes',
'Dimensions': [
{
'Name': 'lambda',
'Value': target
},
]
},
'Period': 300,
'Stat': 'Sum',
# 'Unit': 'Count'
}
},
],
# StartTime=datetime(first.year, first.month, first.day),
StartTime=datetime(2021, 11, 1),
# EndTime=datetime(last.year, last.month, last.day),
EndTime=datetime(2021, 11, 30),
)
print(response)
return response
我认为主要问题是您的 MetricName
字段。也许尝试像这样更改 Namespace
和 MetricName
:
{
"Namespace": "AWS/Lambda",
"MetricName": "Invocations",
...
}