aws-sdk-coreを利用して、ELBやRDSをzabbixで監視する

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で利用する場合には、下記のような形で設定します。

elb-zabbix

 

キーには、
cloud_watch[“–region”,”ap-northeast-1″,”–namespace”,”AWS/ELB”,”–metric”,”RequestCount”,”–dimension_name”,”LoadBalancerName”,”–dimension_value”,”{HOST.NAME}”,”–statistics”,”Sum”,”–unit”,”Count”]
等として指定します。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次