【问题标题】:AWS Boto3 - Datapoint within client.get_metric_statistics displays on one file but not on the otherAWS Boto3 - client.get_metric_statistics 中的数据点显示在一个文件上,但不显示在另一个文件上
【发布时间】:2021-08-29 07:56:52
【问题描述】:

我有一个记录名为client.get_metric_statistics 的 Cloudwatch 指标的函数,当我执行它时,数据点不显示,但我将指标函数提取到另一个文件中,执行时它显示数据点没有问题。

唯一不同的是,我有一个 InstanceId 显示正常,我有一个 AMIID,正如您在我的主脚本上看到的那样,它必须是自动化的,所以我不确定是否允许使用 AMIID,但我不明白为什么它不应该或问题是什么,所以我正在寻找一些反馈。

import sys
import boto3
import time
ec2 = boto3.resource('ec2')
s3_resource = boto3.resource('s3', region_name='eu-west-1')
s3 = boto3.resource('s3')


instance = ec2.create_instances(
    ImageId='ami-02ifd1b532b22l6h3',
    MinCount=1,
    MaxCount=1,
    InstanceType='t2.nano',
    KeyName = 'key1.pem',
    SecurityGroupIds=[sg.group_id],
    UserData = user_data,
)
from datetime import datetime, timedelta

time.sleep(300)
client = boto3.client("cloudwatch")
response = client.get_metric_statistics(
    Namespace="AWS/EC2",
    MetricName="CPUUtilization",
    Dimensions=[{"Name": "AMIID", "Value": "ami-13add1h575a25e4d6"}],
    StartTime=datetime.utcnow() - timedelta(seconds=200),
    EndTime=datetime.utcnow(),
    Period=300,
    Statistics=["Average"],
    Unit="Percent",
)
print(response)

for cpu in response["Datapoints"]:
    print(cpu)
s3.Bucket(name='buket2')
ec2.SecurityGroup(id='sg-06b84927ae5rd3ad1')
{'Label': 'CPUUtilization', 'Datapoints': [], 'ResponseMetadata': {'RequestId': '', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '', 'content-type': 'text/xml', 'content-length': '357', 'date': 'Sun, 18 Jul 2021 00:26:57 GMT'}, 'RetryAttempts': 0}}
sg-06b84927ae5rd3ad1

【问题讨论】:

    标签: amazon-web-services amazon-ec2 boto3 amazon-cloudwatch


    【解决方案1】:

    来自Amazon EC2 metric dimensions

    ImageId: 此维度过滤您为运行此 Amazon EC2 Amazon 系统映像 (AMI) 的所有实例请求的数据。适用于启用详细监控的实例。

    您似乎使用的是AMIID 而不是ImageId

    您始终可以使用以下方法查看可用尺寸:

    aws cloudwatch list-metrics --namespace 'AWS/EC2'
    

    【讨论】:

    • 我还注意到,如果我启动超过 1 个实例,每个实例都不会显示,有什么办法可以做到这一点?
    • 您需要提供引用特定实例的维度。否则,将合并所有指标。例如,Auto Scaling 组具有对 Auto Scaling 组中所有实例的平均 CPU 利用率做出反应的 Scaling 策略。它通过将 Auto Scaling 组指定为维度来执行此操作,然后接收与该维度匹配的所有实例的组合平均值。这是 Amazon CloudWatch 的有意设计。如果您想要每个实例的单独指标,那么您需要查询维度,然后单独获取每个实例的统计信息。
    • 有趣...不知道。会调查的,谢谢约翰的详细解释!
    【解决方案2】:

    EC2 的可用维度在Amazon EC2 metric dimensions 中列出。 没有称为 AMIID 的维度

    我猜你想使用ImageId,这是有效维度。

    【讨论】:

    • @HmNoon 那么发生了什么?为什么你不接受答案?
    猜你喜欢
    • 1970-01-01
    • 2015-02-15
    • 2011-03-19
    • 2012-02-10
    • 2022-06-15
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    相关资源
    最近更新 更多