class AWS::CloudWatch::Metric

Metric

Represents a single metric.

Attributes

dimensions[R]

@return [Array<Hash>]

metric_name[R]

@return [String]

name[R]

@return [String]

namespace[R]

@return [String]

Public Class Methods

new(namespace, metric_name, options = {}) click to toggle source

@param [String] namespace The metric namespace. @param [String] #metric_name The metric name. @param [Hash] options @option options [Array<Hash>] :dimensions An array of dimensions.

Each hash must have a +:name+ and a +value+ key (with string values).
# File lib/aws/cloud_watch/metric.rb, line 31
def initialize namespace, metric_name, options = {}
  @namespace = namespace
  @metric_name = metric_name
  @dimensions = options[:dimensions] || []
  super
end

Public Instance Methods

alarms() click to toggle source

@return [MetricAlarmCollection]

# File lib/aws/cloud_watch/metric.rb, line 50
def alarms
  MetricAlarmCollection.new(self, :config => config)
end
exists?() click to toggle source

@return [Boolean] Returns true if this metric exists.

# File lib/aws/cloud_watch/metric.rb, line 115
def exists?
  !get_resource.data[:metrics].empty?
end
put_data(*metric_data) click to toggle source

Publishes metric data points to Amazon CloudWatch. @param [Array<Hash>] metric_data An array of hashes. Each hash

must pass +:value+ (number) or +:statistic_values+ (hash).

@return [nil]

# File lib/aws/cloud_watch/metric.rb, line 58
def put_data *metric_data
  
  metric_opts = {}
  metric_opts[:metric_name] = metric_name
  metric_opts[:dimensions] = dimensions unless dimensions.empty?

  options = {}
  options[:namespace] = namespace
  options[:metric_data] = metric_data.flatten.map do |data|
    data.merge(metric_opts)
  end

  client.put_metric_data(options)
  nil

end
statistics(options = {}) click to toggle source

Gets statistics for this metric.

metric = CloudWatch::Metric.new('my/namepace', 'metric-name')

stats = metric.statistics(
  :start_time => Time.now - 3600,
  :end_time => Time.now,
  :statistics => ['Average'])

stats.label #=> 'some-label'
stats.each do |datapoint|
  # datapoint is a hash
end

@param [Hash] options @option options [Time,required] :start_time @option options [Time,required] :end_time @option options [Array<String>,required] :statistics @option options [String] :unit @option options [Integer] :period (60) @return [MetricStatistics]

# File lib/aws/cloud_watch/metric.rb, line 96
def statistics options = {}

  start = options.delete(:start_time)
  stop = options.delete(:end_time)

  options[:namespace] = namespace
  options[:metric_name] = metric_name
  options[:dimensions] = dimensions unless dimensions.empty?
  options[:start_time] = start.respond_to?(:iso8601) ? start.iso8601 : start
  options[:end_time] = stop.respond_to?(:iso8601) ? stop.iso8601 : stop
  options[:period] ||= 60

  resp = client.get_metric_statistics(options)

  MetricStatistics.new(self, resp[:label], resp[:datapoints])

end

Protected Instance Methods

get_resource(attr_name = nil) click to toggle source
# File lib/aws/cloud_watch/metric.rb, line 129
def get_resource attr_name = nil
  client.list_metrics(resource_options)
end
resource_identifiers() click to toggle source
# File lib/aws/cloud_watch/metric.rb, line 121
def resource_identifiers
  [
    [:namespace, namespace],
    [:metric_name, metric_name],
    [:dimensions, dimensions],
  ]
end