zabbix-cloudwatch

An external script for getting cloudwatch metrics into Zabbix

Usage: get_aws_cloudwatch_metric.rb

  -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

Getting it running

  • It is only guaranteed to work on ruby 1.8.7 at this time.
  • 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):

# git clone [email protected]:randywallace/zabbix-cloudwatch.git /usr/local/zabbix-cloudwatch
# cd /usr/local/zabbix-cloudwatch
# chown zabbix:zabbix get_aws_cloudwatch_metric.rb
# yum install ruby ruby-devel rubygems gcc libxml2-devel libxslt-devel
# gem install bundler
# bundle install
# ln -s /usr/local/zabbix-cloudwatch/get_aws_cloudwatch_metric.rb /var/lib/zabbixsrv/externalscripts/get_aws_cloudwatch_metric.rb

Examples

/usr/local/zabbix-cloudwatch/get_aws_cloudwatch_metric.rb -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"

Notes

The class variables within get_aws_cloudwatch_metric.rb should be set if you do not (or don't want to) set environment variables for your AWS Credentials.

The default behavior is to use the Environment variables only if the variables in the script are not set.

Setting the Environment variables

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

Class variables at the top of get_aws_cloudwatch_metric.rb

@@aws_access_key=''
@@aws_secret_key=''
@@aws_region=''