查看AWS CloudWatch中的实例数量/正确配置实例扩展

问题描述 投票:1回答:3

我目前正在开发一个高流量网站,该网站正在使用AWS(除其他外)负载平衡。我们正在配置负载均衡器,因此我们有足够的实例来运行以保持站点运行,但不会太多导致我们赔钱。

我们现在接近这个的方法是密切关注CloudWatch中的CPU利用率并相应地更改我们的配置。

我们遇到的一个问题是,我们似乎无法弄清楚如何让CloudWatch绘制运行实例的数量,以便我们可以将其与CPU利用率相抵消。我们只能看到当前活动的实例数量,因此我们最终需要检查很多次,而不是回顾过去几小时/几天/周的统计数据。

理想情况下,我希望看到每个Elastic Beanstalk应用程序的实例数量的图表。

我对AWS及其所有组件都很陌生,所以我可能会以完全错误的方式看待这个,所以如果有人对如何正确配置实例扩展有任何其他建议和/或资源我会爱听到它。

amazon-web-services elastic-beanstalk amazon-cloudwatch
3个回答
2
投票

为此,请在Auto Scaling组上启用Group Metrics Collection。要执行此操作,请转到EC2 Dashboard - > Auto Scaling Groups。找到要收集指标的组,然后使用监控选项卡下的启用组指标集合。完成后,您可以在Scaling Group存储桶下的CloudWatch中查看该组。

希望这可以帮助。


0
投票

阅读这篇文章

http://www.techrepublic.com/blog/the-enterprise-cloud/how-to-add-cloudwatch-monitors-to-auto-scale-your-amazon-web-service/#

基本上,您在自动缩放组上设置了cloudwatch警报或图形而不是ec2实例。将其设置为cpu average并根据警报进行缩放。


0
投票

我无法弄清楚如何在CloudWatch中查看正在运行的实例数量。所以我决定通过AWS PHP SDK自己测量它们,这实际上比我想象的要容易得多。

以下是我的cron命令中的代码,适用于任何想要了解的人:

public function fire(){
    $client = AWS::get('CloudWatch');

    $containers = [
       'production',
       'staging'
    ];

    foreach($containers as $container){
        $client->putMetricData([
            'Namespace'  => 'Company',
            'MetricData' => [
                [
                    'MetricName' => 'NumberOfInstances',
                    'Timestamp'  => time(),
                    'Value'      => $this->_getInstanceCount($container),
                    'Dimensions' => [
                        [
                            'Name'  => 'Environment',
                            'Value' => AwsHelper::getEnvironment($container)
                        ],
                        [
                            'Name'  => 'Container',
                            'Value' => $container   
                        ]
                    ]
                ]
            ]
        ]);
    }
}

protected function _getInstanceCount($container){
    $beanstalk = AWS::get('ElasticBeanstalk');
    $resources = $beanstalk->describeEnvironmentResources([
        'EnvironmentName' => AwsHelper::getEnvironment($container)
    ])->get('EnvironmentResources');

    return count($resources['Instances']);
}

AwsHelper是一个自定义类,仅用于检索容器的环境。 AWS是适用于PHP的官方AWS SDK:http://aws.amazon.com/sdkforphp/

我用过这些文档:

http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.CloudWatch.CloudWatchClient.html#_putMetricData

© www.soinside.com 2019 - 2024. All rights reserved.