An external script for getting cloudwatch metrics into Zabbix
Switch branches/tags
Nothing to show
Clone or download
Latest commit 6e5502a Apr 7, 2016


Gem Version Code Climate Dependency Status Build Status Coverage Status

An external script for getting cloudwatch metrics into Zabbix

Now seeking maintainers

I haven't used Zabbix for our infrastructure for a couple years now; as such, I can no longer properly maintain/update this project. If someone is interested in taking over, I would be happy to hand over the keys.


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                                Default: us-east-1

Getting it running

  • Currently tested against ruby 1.8.7, 1.9.3, and 2.0.0
  • 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


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:


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):


2. Within the binary in the gem.

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).

Find the binary like this:

ls $(gem env gemdir)/gems/zabbix-cloudwatch-$(zabbix-cloudwatch --version)/bin/zabbix-cloudwatch

And place it in your externalscripts path like this (your zabbix path/user/group may be different):

cp $(gem env gemdir)/gems/zabbix-cloudwatch-$(zabbix-cloudwatch --version)/bin/zabbix-cloudwatch \
chown zabbix:zabbix /var/lib/zabbixsrv/externalscripts/zabbix-cloudwatch

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.

zabbix-cloudwatch -n AWS/AutoScaling \
                  -m GroupInServiceInstances \
                  -d AutoScalingGroupName \
                  -v your-auto-scaling-group \
                  --aws-access-key 'YOUR ACCESS KEY' \
                  --aws-secret-key 'YOUR SECRET KEY' \
                  --aws-region 'YOUR AWS REGION'

Order of preference

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

  • Commandline flag
  • Within the binary
  • Environment Variable