こんにちは! JQです。
前回は『CloudWatch編~Custom Metrics パート①~』ということで、Custom Metricsを利用してサービスのステータスを登録してみました。
今回は『CloudWatch編~Custom Metrics パート②~』と題して、ELBの配下インスタンスのNetworkInをまとめてCustom Metricsに登録してみたいと思います。
Custom Metricsの作成
6.スクリプトの作成
今回はRubyで作成してみます。
指定したELBの配下インスタンスを取得してそれぞれのNetworkInを取得します。
その合計をCloudWatchに登録します。
1 2 3 4 5 6 |
#!/usr/bin/env ruby # coding: utf-8 # module rrequire require 'rubygems' require 'aws-sdk' require 'yaml' |
1 2 3 4 |
config_file = File.join(File.dirname(__FILE__), "test.yml") config = YAML.load(File.read(config_file)) AWS.config(config) |
1 2 3 |
ec2=AWS::EC2.new elb=AWS::ELB.new cw =AWS::CloudWatch.new |
1 |
lb_name="" |
1 2 3 4 5 6 7 8 9 10 |
alldata=0 elb.load_balancers[lb_name].instances.each do |i| cw.metrics.filter('metric_name', 'NetworkIn').filter('dimensions', [{ :name => 'InstanceId', :value => "#{i.id}"}]).each do |s| data = s.statistics( :start_time => Time.now - 180, :end_time => Time.now, :statistics => ['Average']) allstats=allstats+stats.first[:average] end end |
1 2 3 4 5 6 7 8 9 10 |
cw.client.put_metric_data({ :namespace => "AWS/ELB", :metric_data => [ :metric_name => "NetworkIn", :dimensions => [ :name => "LoadBalancerName",:value => "#{lb_name}"], :timestamp => Time.now.iso8601, :value => alldata, :unit => "Bytes" ] }) |
7.Cronへの登録
上記で作成したスクリプトをCronに登録して一定間隔で走らせます。
1 2 |
# crontab -e * * * * * ruby ^/ elb_networkin.rb |
8.確認
コンソールで確認してみましょう!
成功していれば以下のようなCustom Metricsが確認出来ます。
いかがでしたでしょうか?
次回もお楽しみに!!!