こんにちは! 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.new1lb_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 end11end1cw.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.rb8.確認
コンソールで確認してみましょう!
成功していれば以下のようなCustom Metricsが確認出来ます。