This module provides a simplified wrapper for creating and publishing CloudWatch metrics.
$ npm install cloudwatch-metrics --save
By default, the library will log metrics to the us-east-1 region and read
AWS credentials from the AWS SDK's default environment variables.
If you want to change these values, you can call initialize:
var cloudwatchMetrics = require('cloudwatch-metrics');
cloudwatchMetrics.initialize({
region: 'us-east-1'
});For creating a metric, we simply need to provide the namespace and the type of metric:
var myMetric = new cloudwatchMetrics.Metric('namespace', 'Count');If we want to add our own default dimensions, such as environment information, we can add it in the following manner:
var myMetric = new cloudwatchMetrics.Metric('namespace', 'Count', [{
Name: 'environment',
Value: 'PROD'
}]);If we want to disable a metric in certain environments (such as local development), we can make the metric in the following manner:
// isLocal is a boolean
var isLocal = someWayOfDetermingIfLocal();
var myMetric = new cloudwatchMetrics.Metric('namespace', 'Count', [{
Name: 'environment',
Value: 'PROD'
}], {
enabled: isLocal
});The full list of configuration options is:
| Option | Purpose |
|---|---|
| enabled | Whether or not we should send the metric to CloudWatch (useful for dev vs prod environments). |
| sendInterval | The interval in milliseconds at which we send any buffered metrics, defaults to 5000 milliseconds. |
| sendCallback | A callback to be called when we send metric data to CloudWatch (useful for logging any errors in sending data). |
| maxCapacity | A maximum number of events to buffer before we send immediately (before the sendInterval is reached). |
Then, whenever we want to publish a metric, we simply do:
myMetric.put(value, metric, additionalDimensions);Be aware that the put call does not actually send the metric to CloudWatch
at that moment. Instead, it stores unsent metrics and sends them to
CloudWatch on a predetermined interval (to help get around sending too many
metrics at once - CloudWatch limits you by default to 150 put-metric data
calls per second). The default interval is 5 seconds, if you want metrics
sent at a different interval, then provide that option when constructing your
CloudWatch Metric:
var myMetric = new cloudwatchMetrics.Metric('namespace', 'Count', [{
Name: 'environment',
Value: 'PROD'
}], {
sendInterval: 3 * 1000 // It's specified in milliseconds.
});You can also register a callback to be called when we actually send metrics to CloudWatch - this can be useful for logging put-metric-data errors:
var myMetric = new cloudwatchMetrics.Metric('namespace', 'Count', [{
Name: 'environment',
Value: 'PROD'
}], {
sendCallback: (err) => {
if (!err) return;
// Do your error handling here.
}
});1.1.0 Add metric.sample()
1.0.0 Initial release.