Kok*_*kos 4 amazon-web-services amazon-cloudwatch amazon-elastic-beanstalk
我目前正在开发一个使用 AWS 进行(除其他外)负载平衡的高流量网站。我们正在配置负载平衡器,因此我们有足够的实例运行以保持站点正常运行,但不会太多导致我们亏损。
我们现在解决这个问题的方法是密切关注 CloudWatch 中的 CPU 利用率并相应地更改我们的配置。
但我们遇到的一个问题是,我们似乎无法弄清楚如何让 CloudWatch 绘制正在运行的实例数量的图表,以便我们可以将其抵消到 CPU 使用率。我们只能看到当前有多少实例处于活动状态,因此我们最终不得不多次检查,而不仅仅是回顾过去几小时/几天/几周的统计数据。
理想情况下,我希望查看每个 Elastic Beanstalk 应用程序的实例数量图表。
我对 AWS 及其所有组件还很陌生,所以我可能以完全错误的方式看待这个问题,所以如果有人对如何正确配置实例扩展有任何其他建议和/或资源,我会喜欢听说它。
小智 6
为此,请在 Auto Scaling 组上启用组指标收集。为此,请转到 EC2 仪表板 -> Auto Scaling 组。找到要收集指标的组,然后使用监控选项卡下的启用组指标收集。完成后,您可以在 CloudWatch 中的 Scaling Group 存储桶下看到该组。
希望这可以帮助。
我无法弄清楚如何查看 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']);
}
Run Code Online (Sandbox Code Playgroud)
AwsHelper 是一个自定义类,仅在此处用于检索容器的环境。AWS 是适用于 PHP 的官方 AWS 开发工具包:http://aws.amazon.com/sdkforphp/
我使用了这些文档: