class Aws::Mon
This is the interface for Amazon CloudWatch.
Constants
- API_VERSION
Amazon EC2 API version being used
- DEFAULT_HOST
- DEFAULT_PATH
- DEFAULT_PORT
- DEFAULT_PROTOCOL
Public Class Methods
api()
click to toggle source
# File lib/ec2/mon_interface.rb, line 42 def self.api @@api end
bench()
click to toggle source
# File lib/ec2/mon_interface.rb, line 27 def self.bench @@bench end
bench_ec2()
click to toggle source
# File lib/ec2/mon_interface.rb, line 35 def self.bench_ec2 @@bench.service end
bench_xml()
click to toggle source
# File lib/ec2/mon_interface.rb, line 31 def self.bench_xml @@bench.xml end
connection_name()
click to toggle source
# File lib/ec2/mon_interface.rb, line 22 def self.connection_name :mon_connection end
new(aws_access_key_id=nil, aws_secret_access_key=nil, params={})
click to toggle source
# File lib/ec2/mon_interface.rb, line 47 def initialize(aws_access_key_id=nil, aws_secret_access_key=nil, params={}) init({:name => 'MON', :default_host => ENV['MON_URL'] ? URI.parse(ENV['MON_URL']).host : DEFAULT_HOST, :default_port => ENV['MON_URL'] ? URI.parse(ENV['MON_URL']).port : DEFAULT_PORT, :default_service => ENV['MON_URL'] ? URI.parse(ENV['MON_URL']).path : DEFAULT_PATH, :default_protocol => ENV['MON_URL'] ? URI.parse(ENV['MON_URL']).scheme : DEFAULT_PROTOCOL, :api_version => API_VERSION}, aws_access_key_id || ENV['AWS_ACCESS_KEY_ID'], aws_secret_access_key|| ENV['AWS_SECRET_ACCESS_KEY'], params) end
Public Instance Methods
generate_request(action, params={})
click to toggle source
# File lib/ec2/mon_interface.rb, line 60 def generate_request(action, params={}) service_hash = {"Action" => action, "AWSAccessKeyId" => @aws_access_key_id, "Version" => @@api} service_hash.update(params) service_params = signed_service_params(@aws_secret_access_key, service_hash, :get, @params[:server], @params[:service]) # use POST method if the length of the query string is too large if service_params.size > 2000 if signature_version == '2' # resign the request because HTTP verb is included into signature service_params = signed_service_params(@aws_secret_access_key, service_hash, :post, @params[:server], @params[:service]) end request = Net::HTTP::Post.new(service) request.body = service_params request['Content-Type'] = 'application/x-www-form-urlencoded' else request = Net::HTTP::Get.new("#{@params[:service]}?#{service_params}") end #puts "\n\n --------------- QUERY REQUEST TO AWS -------------- \n\n" #puts "#{@params[:service]}?#{service_params}\n\n" # prepare output hash {:request => request, :server => @params[:server], :port => @params[:port], :protocol => @params[:protocol]} end
get_metric_statistics(measure_name, stats, start_time, end_time, unit, options={})
click to toggle source
measureName: CPUUtilization (Units: Percent), NetworkIn (Units: Bytes), NetworkOut (Units: Bytes), DiskWriteOps (Units: Count)
DiskReadBytes (Units: Bytes), DiskReadOps (Units: Count), DiskWriteBytes (Units: Bytes)
stats: array containing one or more of Minimum, Maximum, Sum, Average, Samples start_time : Timestamp to start end_time: Timestamp to end unit: Either Seconds, Percent, Bytes, Bits, Count, Bytes, Bits/Second, Count/Second, and None
Optional parameters:
period: Integer 60 or multiple of 60 dimensions: Hash containing keys ImageId, AutoScalingGroupName, InstanceId, InstanceType customUnit: nil. not supported currently. namespace: AWS/EC2
# File lib/ec2/mon_interface.rb, line 133 def get_metric_statistics (measure_name, stats, start_time, end_time, unit, options={}) period = options[:period] || 60 dimensions = options[:dimensions] || nil custom_unit = options[:custom_unit] || nil namespace = options[:namespace] || "AWS/EC2" params = {} params['MeasureName'] = measure_name i =1 stats.each do |s| params['Statistics.member.'+i.to_s] = s i = i+1 end params['Period'] = period if (dimensions != nil) i = 1 dimensions.each do |k, v| params['Dimensions.member.'+i.to_s+".Name."+i.to_s] = k params['Dimensions.member.'+i.to_s+".Value."+i.to_s] = v i = i+1 end end params['StartTime'] = start_time params['EndTime'] = end_time params['Unit'] = unit #params['CustomUnit'] = customUnit always nil params['Namespace'] = namespace link = generate_request("GetMetricStatistics", params) resp = request_info(link, QMonGetMetricStatistics.new(:logger => @logger)) rescue Exception on_exception end
list_metrics(options={})
click to toggle source
# File lib/ec2/mon_interface.rb, line 103 def list_metrics(options={}) next_token = options[:next_token] || nil params = {} params['NextToken'] = next_token unless next_token.nil? @logger.info("list Metrics ") link = generate_request("ListMetrics", params) resp = request_info(link, QMonListMetrics.new(:logger => @logger)) rescue Exception on_exception end
request_info(request, parser, options={})
click to toggle source
Sends request to Amazon and parses the response Raises AwsError if any banana happened todo: remove this and switch to using request_info2
# File lib/ec2/mon_interface.rb, line 94 def request_info(request, parser, options={}) conn = get_conn(self.class.connection_name, @params, @logger) request_info_impl(conn, @@bench, request, parser, options) end