Ruby v2以降が必要です。
zabbixユーザからみて、Ruby v2が利用できないと監視に失敗します。
rbenvで切り替えていて見事にはまりました。
Gemfileに記述するか、下記コマンドでsdkをインストールします。
gem install aws-sdk-core
下記をcloud_watchとして保存します。
zabbixから外部スクリプトとして呼び出すため、/usr/lib/zabbix/externalscripts/配下に保存します。
このパスはインストール方法によってパスが変わっている場合があります。
#!/usr/local/bin/ruby require 'rubygems' require 'aws-sdk-core' require 'optparse' params = ARGV.getopts( "", "region:", "namespace:", "metric:", "dimension_name:", "dimension_value:", "statistics:", "unit:" ) cw = Aws::CloudWatch::Client.new( :region => params['region'], :access_key_id => '<KEY>', :secret_access_key => '<KEY>' ) resp = cw.get_metric_statistics( namespace: params['namespace'], metric_name: params['metric'], dimensions: [ { name: params['dimension_name'], value: params['dimension_value'], }, ], start_time: Time.now - 300, end_time: Time.now, period: 300, statistics: [params['statistics']], unit: params['unit'], ) data = resp[:datapoints] last_stats = data.sort_by{ | stat | stat[:timestamp]}.last if last_stats.nil? then exit else p last_stats[params['statistics'].downcase.to_sym].to_i end
使い方はコマンドラインからだと下記のようになります。
./cloud_watch --region ap-northeast-1 --namespace AWS/ELB --metric RequestCount --dimension_name LoadBalancerName --dimension_value ELBNAME --statistics Sum --unit Count
namespaceや、dimension_nameはAWSのドキュメントを参照してください。
zabbixで利用する場合には、下記のような形で設定します。
キーには、
cloud_watch[“–region”,”ap-northeast-1″,”–namespace”,”AWS/ELB”,”–metric”,”RequestCount”,”–dimension_name”,”LoadBalancerName”,”–dimension_value”,”{HOST.NAME}”,”–statistics”,”Sum”,”–unit”,”Count”]
等として指定します。