class Riemann::Tools::AWS

Public Class Methods

new() click to toggle source
# File bin/riemann-aws-rds-status, line 18
def initialize
  abort "FATAL: specify a DB instance name, see --help for usage" unless opts[:dbinstance_identifier]
  if opts[:access_key] and opts[:secret_key]
    creds = {
      :aws_access_key_id => opts[:access_key],
      :aws_secret_access_key => opts[:secret_key]
    }
  else
    creds = { :use_iam_profile => true }
  end
  creds['region'] = opts[:region]
  @cloudwatch = Fog::AWS::CloudWatch.new(creds)
end

Public Instance Methods

tick() click to toggle source
# File bin/riemann-aws-rds-status, line 32
def tick
  time = Time.new
  ['DatabaseConnections', 'FreeableMemory', 'FreeStorageSpace', 'NetworkReceiveThroughput', 'NetworkTransmitThroughput', 'ReadThroughput', 'CPUUtilization'].each do |metric|
    result = @cloudwatch.get_metric_statistics({"Namespace" => 'AWS/RDS', "MetricName" => "#{metric}", "Statistics" => 'Average', "Dimensions" => [{"Name" => "DBInstanceIdentifier", "Value" => "#{opts[:dbinstance_identifier]}"}], "StartTime" => (time-120).to_time.iso8601, "EndTime" => time.to_time.iso8601, "Period" => 60})
    metricsResult = result.data[:body]['GetMetricStatisticsResult']
    if (metricsResult['Datapoints'].length>0)
      datapoint = metricsResult['Datapoints'][0]
      ev = {:metric => datapoint['Average'],
            :service => "#{opts[:dbinstance_identifier]}.#{metric} (#{datapoint['Unit']})",
            :description => JSON.dump(metricsResult),
            :state => "ok",
            :ttl => 300}


      report ev
    end

  end
end