Получить использование полосы пропускания EC2 по идентификатору экземпляра

Как получить использование полосы пропускания экземпляра для NetworkIn и NetworkOut для экземпляра EC2 на основе идентификатора экземпляра с использованием PHP SDK.

Пока что у меня есть …

<?php
require_once("../aws/Sdk.php");

use Aws\CloudWatch\CloudWatchClient;

$client = CloudWatchClient::factory(array(
'profile' => 'default',
'region'  => 'ap-southeast-2'
));

$dimensions = array(
array('Name' => 'Prefix', 'Value' => ""),
);

$result = $client->getMetricStatistics(array(
'Namespace'  => 'AWSSDKPHP',
'MetricName' => 'NetworkIn',
'Dimensions' => $dimensions,
'StartTime'  => strtotime('-1 hour'),
'EndTime'    => strtotime('now'),
'Period'     => 3000,
'Statistics' => array('Maximum', 'Minimum'),
));

У меня есть работа cron PHP, выполняемая каждый час, и мне нужно иметь возможность получать и пропускать пропускную способность для конкретного экземпляра EC2 для записи во внутреннюю базу данных.

То, что я имею выше, я смог собрать из документации SDK, но отсюда я немного озадачен.

Я верю, что мне нужен CloudWatch, так что лучше бы это можно было сделать через это. Я знаю, что могу установить небольшую программу на каждом сервере, чтобы сообщать об использовании полосы пропускания файлу на сервере, который я затем использую по протоколу SFTP для загрузки в нашу базу данных, но лучше сделать это вне каких-либо настроек внутри самого экземпляра, чтобы Администратор экземпляра не может вызвать проблемы с отчетами о пропускной способности.

0

Решение

Удалось заставить его работать с …

<?php
require '../../aws.phar';
use Aws\CloudWatch\CloudWatchClient;

$cw = CloudWatchClient::factory(array(
'key' => 'your-key-here',
'secret' => 'your-secret-here',
'region' => 'your-region-here',
'version' => 'latest'
));

$metrics = $cw->listMetrics(array('Namespace' => 'AWS/EC2'));

//print_r($metrics);

$statsyo = $cw->getMetricStatistics(array(
'Namespace'     => 'AWS/EC2',
'MetricName'    => 'NetworkIn',
'Dimensions'    => array(array('Name' => 'InstanceId', 'Value' => 'your-instance-id-here')),
'StartTime'     => strtotime("2017-01-23 00:00:00"),
'EndTime'       => strtotime("2017-01-23 23:59:59"),
'Period'        => 86400,
'Statistics'    => array('Average'),
'Unit'          => 'Bytes'
));

echo($statsyo);
0

Другие решения

Если вы пытаетесь рассчитать плату за пропускную способность таким же образом, как это делает AWS, лучшим и более убедительным способом будет использование журналов потока VPC. Вы можете подписать свой ENI на журналы потоков VPC (должно быть довольно дешево, они взимают только расходы на журналы CloudWatch, журналы потоков бесплатны), а затем использовать AWS SDK для извлечения из CloudWatch с GetLogEvents, а затем суммировать общее количество байтов.

0