# 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