AWS の EC2 インスタンスがストリーミング サービスからトラフィックを受信しているかどうかを確認しようとしています (トラフィックが受信されない場合は、インスタンスを閉じる予定です)。
これを行うには、CloudWatchClient (phpSDK を使用) を使用して NetworkIn を測定します。問題は、「期間」を 60 秒に設定すると、データ ポイントが受信されないことです。期間を 300 に設定すると (および開始時刻と終了時刻を 300 秒間隔に調整すると)、同じコードが正常に機能します。
$time_const = 60;// in sec
$end_time = time();
$start_time = $end_time-$time_const;
$result = $cloudwatch_client->getMetricStatistics([
'Dimensions' => [
[
'Name' => 'InstanceId', // REQUIRED
'Value' => $InstanceId, // REQUIRED
],
],
'EndTime' => $end_time, // REQUIRED
'StartTime' => $start_time, // REQUIRED
'MetricName' => 'NetworkIn', // REQUIRED
'Namespace' => 'AWS/EC2', // REQUIRED
'Period' => $time_const, // REQUIRED
'Unit' => 'Bytes',
'Statistics' => array('Sum'),
]);
ありがとう
デフォルトでは、EC2 CloudWatch メトリクスは 5 分 (300 秒) 間隔でのみ使用できます。これを 60 秒間隔で監視するには、特定のインスタンスのEC2 詳細監視を有効にする必要があります。ドキュメントから:
追加料金で 1 分間のデータを利用できます。このレベルのデータを取得するには、インスタンスに対して具体的に有効にする必要があります。詳細モニタリングを有効にしたインスタンスの場合、同様のインスタンスのグループ全体で集計データを取得することもできます。
この AWS コンソールから、または CLI/SDK を介してこれを有効にすることができます。上記のリンクされたドキュメントからの CLI の例:
aws ec2 monitor-instances --instance-ids i-1234567890abcdef0
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加