An external script for getting cloudwatch metrics into Zabbix
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
lib
spec
.gitignore
.travis.yml
Gemfile
Gemfile.lock Update deploy Gemfile.lock Jan 29, 2016
LICENSE
README.md Update README.md Apr 7, 2016
Rakefile
zabbix-cloudwatch.gemspec

README.md

zabbix-cloudwatch

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

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

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.

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 \
      /var/lib/zabbixsrv/externalscripts/
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