繁体   English   中英

如何通过 CloudWatch 按 CPU 使用情况监控所有 ec2

[英]How to monitor all ec2 by CPU usage via CloudWatch

我正在尝试设置对大量 ec2 的监控,并且它们的数量在不断变化。 我希望此实例的所有者在 CPU 使用率长时间处于低位时收到通知。

我可以创建一个 function 来获取所有 ec2 的列表,然后获取它们的 CPU 利用率,然后向所有者发送消息。 这个选项不适合我,因为监控 state 需要一些时间,并且无法获得 function 启动的每秒 CPU 利用率值。 总的来说,这种方法看起来很糟糕。

我可以在 cloudwatch 中设置警报,但仅限于一个特定实例。 这个选项不合适,因为有很多 ec2 并且它们的数量各不相同。

我可以创建一个带有 ec2 名称及其 CPU 利用率的仪表板。 此仪表板将动态补充。 但我还没有弄清楚如何从中发送通知。

在没有第三方解决方案的情况下如何解决我的问题?

请参阅此 AWS 文档https://aws.amazon.com/blogs/mt/use-tags-to-create-and-maintain-amazon-cloudwatch-alarms-for-amazon-ec2-instances-part-1/

您会发现一些现有的 Lambda 函数将在自动创建 EC2 实例后创建 Cloudwatch 警报。

它看起来有点棘手,但如果你真的想让它自动化,值得一看。 但是是的,单个云监视警报无法监控多个 EC2 实例。

--

Another thing, same sample lambda function you will find from the existing template and it will directly create that lambda function and you can test it.

我已经解决了我的问题。 在我看来,这是最简单的选择之一。

使用来自AWS SDK 的方法get_metric_data为 Python Boto3 我写了一个 function:

import boto3
from statistics import mean
from datetime import timedelta, datetime

cloudwatch_client = boto3.client('cloudwatch')

response = cloudwatch_client.get_metric_data(
    MetricDataQueries=[
        {
            'Id': 'myrequest',
            'MetricStat': {
                'Metric': {
                    'Namespace': 'AWS/EC2',
                    'MetricName': 'CPUUtilization',
                    'Dimensions': [
                        {
                            'Name': 'InstanceId',
                            'Value': 'i-123abc456def'
                        }
                    ]
                },
                'Period': 3600,
                'Stat': 'Average',
                'Unit': 'Percent'
            }
        },
    ],
    StartTime=datetime.now() - timedelta(days=1),
    EndTime=datetime.now()
)
for MetricDataResults in response['MetricDataResults']:
    list_avg = mean(MetricDataResults['Values'])
    print("%.2f" % (list_avg * 100))

在 output 中,我得到平均 CPU 使用率百分比。 在指定的时间。

我仍在学习,但如果有任何问题,我会尽力回答您的问题。 谢谢你们!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM