A node.js module to draw charts for AWS CloudWatch metrics
Installation:
npm install aws-cloudwatch-chart
Usage:
var AwsCloudWatchChart = require('aws-cloudwatch-chart');
var config = require('./config.json');
var acs = new AwsCloudWatchChart(config);
acs.getChart().then(function(chart){
chart.save('image.png').then(function(filename){
//// filename should be == 'image.png' this is your chart.
});
});
or
acs.getChart().then(function(chart){
chart.get().then(function(image){
//// image is png image.
}
});
config.json example:
{
"metrics": [ /// array of metrics settings
{
/// Title of metrics. Will be displayed on chart's legend. Should be unique
"title": "Server1 Max CPU",
/// AWS namespace
/// http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html
"namespace": "AWS/EC2",
/// Metric name
/// http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html
"metricName": "CPUUtilization",
/// Statistics values. 'Maximum' and "Average" supported
"statisticValues": "Maximum",
/// Unit. http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html
/// 'Percent' and 'Count' currently supported
"unit": "Percent",
/// Chart line color for this metric
"color": "af9cf4",
/// Line thickness in px
"thickness": 2,
/// Dashed or solid
"dashed": false,
/// Any property other that listed above will be added to Dimensions array. It's different for different metrics namespaces
/// InstanceId. This parameter is for Dimensions array. Different for different metrics namespaces
/// http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Dimension.html
"InstanceId": "i-2d55aad0",
}
],
"aws": {
/// AWS IAM accessKeyId
/// Dpn't forget to allow IAM to access CloudWatch. Not other policies are required. Safe.
"accessKeyId": "XXXXXXXXXXXXXXXXXX",
/// AWS IAM secretAccessKey
"secretAccessKey": "XXXXXX/XXXXXXXXX/XXXXXXXXXXX/XXXXXXXXX",
/// AWS region
"region": "us-east-1"
},
"timeOffset": 1440, //// Get statistic for last 1440 minutes
"timePeriod": 60, //// Get statistic for each 60 seconds
"chartSamples": 20, //// Data points extrapolated on chart
"width": 1000, //// Result image width. Maximum value for width or height is 1,000. Width x height cannot exceed 300,000.
"height":250 //// Result image height. Maximum value for width or height is 1,000. Width x height cannot exceed 300,000.
}
Sample AWS Lambda function. Posts CloudWatch Alerts via SNS topic via Lambda function to Slack channel. And draws charts for CPUUtilization and CPUCreditBalance (for T2 instances) metrics.
MIT