Esempio n. 1
0
$charts = array(array('M' => 'NetworkIn', 'U' => 'Bytes', 'L' => 'Network In (Bytes)'), array('M' => 'NetworkOut', 'U' => 'Bytes', 'L' => 'Network Out (Bytes)'), array('M' => 'CPUUtilization', 'U' => 'Percent', 'L' => 'CPU Utilization (Percent)'), array('M' => 'DiskReadBytes', 'U' => 'Bytes', 'L' => 'Disk Read Bytes'), array('M' => 'DiskReadOps', 'U' => 'Count', 'L' => 'Disk Read Operations/Second'), array('M' => 'DiskWriteBytes', 'U' => 'Bytes', 'L' => 'Disk Write Bytes'), array('M' => 'DiskWriteOps', 'U' => 'Count', 'L' => 'Disk Write Operations/Second'));
// Create the CloudWatch access object
// $cw = new AmazonCloudWatch(null, null, 'ap-southeast-1.monitoring.amazonaws.com');
$cw = new AmazonCloudWatch();
// $cw->set_region(REGION_US_E1);
// Prepare to get metrics
$opt = array('Namespace' => 'AWS/EC2', 'Period' => $period);
$statistics = array('Average', 'Minimum', 'Maximum', 'Sum');
$chartImages = array();
// Generate one chart for each member of $charts
foreach ($charts as &$chart) {
    $measure = $chart['M'];
    $unit = $chart['U'];
    $label = $chart['L'];
    // Get the metrics
    $res = $cw->get_metric_statistics($opt['Namespace'], $measure, $start, $end, $opt['Period'], $statistics, $unit);
    if ($debug < 2) {
        print_r($res);
        exit(0);
    }
    if ($res->isOK()) {
        $datapoints = $res->body->GetMetricStatisticsResult->Datapoints->member;
        // Populate an array with the metrics for sorting
        $dataRows = array();
        foreach ($datapoints as $datapoint) {
            $timestamp = (string) $datapoint->Timestamp;
            $dataRows[$timestamp] = array('Timestamp' => (string) $datapoint->Timestamp, 'Units' => (string) $datapoint->Unit, 'Samples' => (string) $datapoint->Samples, 'Average' => (double) $datapoint->Average, 'Minimum' => (double) $datapoint->Minimum, 'Maximum' => (double) $datapoint->Maximum, 'Sum' => (double) $datapoint->Sum);
        }
        // Sort the metrics
        ksort($dataRows);
        // Form arrays for each of the statistics
Esempio n. 2
0
<?php

require_once '/usr/share/php/AWSSDKforPHP/sdk.class.php';
define('AWS_KEY', 'AKIAJKI7FFIP2BHMXF7A');
define('AWS_SECRET_KEY', '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');
define('AWS_ACCOUNT_ID', '382146031153');
$cw = new AmazonCloudWatch();
$cw->set_region($cw::REGION_EU_W1);
$measure = $_GET['measure'];
$statistics = $_GET['statistics'];
$unit = $_GET['unit'];
$dimensions = explode('=', urldecode($_GET['dimensions']));
$namespace = $_GET['namespace'];
$period = $_GET['period'];
$threshold = (int) $_GET['threshold'];
if (!isset($measure) || !isset($statistics) || !isset($unit) || !isset($dimensions) || !isset($namespace) || !isset($period) || !isset($threshold)) {
    exit("Usage: http://localhost/cloudwatch/breach.php?measure=CPUUtilization&statistics=Average&unit=Percent&dimensions=ImageId%3dami-30360344&namespace=EC2&period=900&threshold=20");
}
$now = time();
$before = $now - (int) $period;
$opt = array('Namespace' => 'AWS/' . $namespace, 'Period' => (int) $period);
$opt = array_merge($opt, CFComplexType::map(array('Dimensions' => array('member' => array('Name' => $dimensions[0], 'Value' => $dimensions[1])))));
$response = $cw->get_metric_statistics($measure, $statistics, $unit, date("c", $before), date("c", $now), $opt);
$measurement = $response->body->member(0)->{$statistics}(0);
$breach = $measurement >= $threshold;
echo $breach ? 1 : 0;
$period *= 60;
// Create array of chart parameters, one interior array per chart
$charts = array(array('M' => 'NetworkIn', 'U' => 'Bytes', 'L' => 'Network In (Bytes)'), array('M' => 'NetworkOut', 'U' => 'Bytes', 'L' => 'Network Out (Bytes)'), array('M' => 'CPUUtilization', 'U' => 'Percent', 'L' => 'CPU Utilization (Percent)'), array('M' => 'DiskReadBytes', 'U' => 'Bytes', 'L' => 'Disk Read Bytes'), array('M' => 'DiskReadOps', 'U' => 'Count', 'L' => 'Disk Read Operations/Second'), array('M' => 'DiskWriteBytes', 'U' => 'Bytes', 'L' => 'Disk Write Bytes'), array('M' => 'DiskWriteOps', 'U' => 'Count', 'L' => 'Disk Write Operations/Second'));
// Create the CloudWatch access object
$cw = new AmazonCloudWatch(null, null, 'ap-southeast-1.monitoring.amazonaws.com');
// Prepare to get metrics
$opt = array('Namespace' => 'AWS/EC2', 'Period' => $period);
$statistics = array('Average', 'Minimum', 'Maximum', 'Sum');
$chartImages = array();
// Generate one chart for each member of $charts
foreach ($charts as &$chart) {
    $measure = $chart['M'];
    $unit = $chart['U'];
    $label = $chart['L'];
    // Get the metrics
    $res = $cw->get_metric_statistics($measure, $statistics, $unit, $start, $end, $opt);
    if ($res->isOK()) {
        $datapoints = $res->body->GetMetricStatisticsResult->Datapoints->member;
        // Populate an array with the metrics for sorting
        $dataRows = array();
        foreach ($datapoints as $datapoint) {
            $timestamp = (string) $datapoint->Timestamp;
            $dataRows[$timestamp] = array('Timestamp' => (string) $datapoint->Timestamp, 'Units' => (string) $datapoint->Unit, 'Samples' => (string) $datapoint->Samples, 'Average' => (double) $datapoint->Average, 'Minimum' => (double) $datapoint->Minimum, 'Maximum' => (double) $datapoint->Maximum, 'Sum' => (double) $datapoint->Sum);
        }
        // Sort the metrics
        ksort($dataRows);
        // Form arrays for each of the statistics
        $averages = array();
        $minimums = array();
        $maximums = array();
        $sums = array();
Esempio n. 4
0
#!/usr/bin/php
# This is pulled right out of the on-line documentation
#   http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonCloudWatch/get_metric_statistics
#
<?php 
error_reporting(E_ALL);
require_once 'AWSSDKforPHP/sdk.class.php';
// Get metrics
$cw = new AmazonCloudWatch();
$opt = array();
$response = $cw->get_metric_statistics('AWS/EC2', 'CPUUtilization', '17 December 2010', '20 December 2010', 1800, 'Average', 'Percent');
// Success?
var_dump($response->isOK());
print_r($response);