AWS CloudWatch는 기본적으로 2주 간의 데이터만 제공합니다.
따라서 보안 심사 혹은 내부적으로 2주 이상의 데이터가 필요한 경우 AWS API를 통해 DB 혹은 S3에 저장해야 합니다.
AWS SDK를 사용하다보면 Request 파라미터 값이 조금? 복잡해서 PHP 및 Javascript 샘플 코드 공유합니다.
getMetricStatistics Function의 경우 Result가 시간 순으로 정렬되어 있지 않아, 시간 순으로 정렬이 필요합니다.
PHP 5.3.3++ Sample (AWS PHP v2)
(http://docs.aws.amazon.com/aws-sdk-php/v2/guide/index.html)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php require 'vendor/autoload.php'; // include autoloader of composer. use Aws\CloudWatch\CloudWatchClient; $client = CloudWatchClient::factory(array( 'profile' => 'default', 'region' => 'ap-northeast-2' )); $dimensions = array( array('Name' => 'InstanceId', 'Value' => 'i-8xxxxx'), ); $result = $client->getMetricStatistics(array( 'Namespace' => 'AWS/EC2', 'MetricName' => 'CPUCreditBalance', 'Dimensions' => $dimensions, 'StartTime' => strtotime('-10 days'), 'EndTime' => strtotime('now'), 'Period' => 3000, 'Statistics' => array('Maximum','Minimum','Average') )); $data=$result['Datapoints']; //Data sorting, Magic function error usort($data, function($a, $b) { if($a['Timestamp'] == $b['Timestamp']) { return 0; } return ($a['Timestamp'] < $b['Timestamp']) ? -1 : 1; }); print_r($data); |
Javascript Sample
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | var AWS = require('aws-sdk'); AWS.config.update({region:'ap-northeast-2'}); var cloudwatch = new AWS.CloudWatch(); //var dateFormat = require('dateformat'); var now = new Date(); var startTime = new Date(Date.parse(now) - 1 * 1000 * 60 * 60 * 24); console.log(now); console.log(startTime); var params = { EndTime: now, MetricName: 'CPUUtilization', /* required */ Namespace: 'AWS/EC2', /* required */ Period: 300, /* required */ StartTime: startTime, /* required */ Statistics: [ /* required */ 'Average', ], Dimensions: [ { Name: 'InstanceId', /* required */ Value: 'i-xxxx' }, ] }; cloudwatch.getMetricStatistics(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else //console.log(data); // successful response var result = data.Datapoints; console.log(result); result.sort(function(a,b){ var a = new Date(a.Timestamp); var b = new Date(b.Timestamp); return a-b; }); console.log(result); }); |
감사합니다.
'Management > CloudWatch' 카테고리의 다른 글
AWS CloudWatch 알람 생성 스크립트 (0) | 2017.03.10 |
---|---|
AWS CloudWatch Custom Metric 생성 (0) | 2016.10.27 |
AWS CloudWatch (0) | 2016.01.08 |