zabbix-cloudwatch

An external script for getting cloudwatch metrics into Zabbix

Usage: zabbix-cloudwatch

  -h, --help              This Message
  -n, --namespace         Namespace (AWS/Autoscaling, AWS/EC2, etc...)
  -m, --metricname        Metric Name (GroupInServiceInstances,EstimatedCharges, etc...)
  -d, --dimension-name    Dimension Name (AutoScalingGroupName, etc...)
  -v, --dimension-value   Dimension Value
  -t, --monitoring-type   detailed|basic                            Default: basic
  -s, --statistic         Minimum|Maximum|Average|Sum|SampleCount   Default: Average
  --aws-access-key        AWS Access Key
  --aws-secret-key        AWS Secret Key
  --aws-region            AWS Region (us-east-1)                    Default: us-east-1

Getting it running

  • It is only guaranteed to work on ruby 1.8.7 at this time and will throw an Exception on other rubies.
  • for some of the gem dependencies, you will need the ruby development packages, gcc, libxml2, and libxslt

Modify these steps to taste (examples given running on the Amazon AMI 2013.03):

# yum install ruby ruby-devel rubygems gcc libxml2-devel libxslt-devel
# gem install bundler zabbix-cloudwatch
# ln -s $(which zabbix-cloudwatch) /var/lib/zabbixsrv/externalscripts/zabbix-cloudwatch

Examples

zabbix-cloudwatch -n AWS/EC2 \
                  -m CPUUtilization \
                  -d AutoScalingGroupName \
                  -v your-auto-scaling-group \
                  -t detailed \
                  -s Sum

Creating the IAM User

The following actions need to be allowed in IAM for this script to work with the keys you provide:

"cloudwatch:DescribeAlarms"
"cloudwatch:GetMetricStatistics"

AWS Credentials

There are (3) ways to get your AWS Credentials into zabbix-cloudwatch.

Note that none of these options are "safe", so make sure you are using a set of IAM Keys with extremely restricted permissions.

1. Environment Variables (which is difficult with Zabbix):

export AWS_ACCESS_KEY_ID="YOUR ACCESS KEY" 
export AWS_SECRET_ACCESS_KEY="YOUR SECRET ACCESS KEY"
export AWS_REGION="YOUR AWS REGION"

2. Within the binary in the gem.

Find it with which zabbix-cloudwatch. If you intend to do it this way, I suggest you make a copy of the binary and place it in your zabbix externalscript path (instead of the suggested symlink in the installation example).

The class variables for this are at the very top of the file for your convenience.

3. Passing in your AWS Keys when you run zabbix-cloudwatch using the command line flags.

The order of preference that this gem uses for the region and keys (individually) are:

  • Commandline flag
  • Within the binary
  • Environment Variable