CloudWatch編~Custom Metricsパート②~

こんにちは! JQです。

前回は『C loudWatch編~Custom Metrics パート①~ 』ということで、Custom Metricsを利用してサービスのステータスを登録してみました。

今回は『CloudWatch編~Custom Metrics パート②~』と題して、ELBの配下インスタンスのNetworkInをまとめてCustom Metricsに登録してみたいと思います。

Custom Metricsの作成

6.スクリプトの作成

今回はRubyで作成してみます。

指定したELBの配下インスタンスを取得してそれぞれのNetworkInを取得します。

その合計をCloudWatchに登録します。

1#!/usr/bin/env ruby23# coding: utf-845# module rrequire67require 'rubygems'8require 'aws-sdk'9require 'yaml'
1config_file = File.join(File.dirname(__FILE__),2                          "test.yml")3config = YAML.load(File.read(config_file))4AWS.config(config)
1ec2=AWS::EC2.new2elb=AWS::ELB.new3cw =AWS::CloudWatch.new
1lb_name=""
1alldata=02elb.load_balancers[lb_name].instances.each do |i|34    cw.metrics.filter('metric_name', 'NetworkIn').filter('dimensions', [{ :name => 'InstanceId', :value => "#{i.id}"}]).each do |s|5        data  = s.statistics(6                             :start_time => Time.now - 180,7                             :end_time => Time.now,8                             :statistics => ['Average'])9        allstats=allstats+stats.first[:average]10    end11end
1cw.client.put_metric_data({2    :namespace => "AWS/ELB",3    :metric_data => [4        :metric_name => "NetworkIn",5        :dimensions => [ :name => "LoadBalancerName",:value => "#{lb_name}"],6        :timestamp => Time.now.iso8601,7        :value => alldata,8        :unit => "Bytes"9    ]10})

7.Cronへの登録

上記で作成したスクリプトをCronに登録して一定間隔で走らせます。

1# crontab -e2* * * * * ruby ^/ elb_networkin.rb

8.確認

コンソールで確認してみましょう!

成功していれば以下のようなCustom Metricsが確認出来ます。

NetworkIn
いかがでしたでしょうか?次回もお楽しみに!!!

この記事を書いた人

aws-recipe-user