class AWS::CloudWatch::MetricCollection

Public Class Methods

new(options = {}) click to toggle source

@private

Calls superclass method
# File lib/aws/cloud_watch/metric_collection.rb, line 21
def initialize options = {}
  @filters = options[:filters] || {}
  super
end

Public Instance Methods

filter(name, value) click to toggle source

Returns a new collection that will filter results when enumerated.

@example Filtering by a namespace

traffic_metrics = metrics.filter('namespace', 'traffic')

@example Filtering by a metric name

my_metric = metrics.filter('metric_name', 'my-metric').first

@example Filtering by one or more dimensions

metrics = metrics.filter('dimensions', [
  { :name => 'n1', :value => 'v1' },
  { :name => 'n2', :value => 'v2' },
  { :name => 'n3', :value => 'v3' },
])

@param [String,Symbol] name @param [String,Array<String>] value @return [MetricCollection]

# File lib/aws/cloud_watch/metric_collection.rb, line 47
def filter name, value
  filters = @filters.merge(name.to_s.to_sym => value)
  MetricCollection.new(:filters => filters, :config => config)
end
with_dimension(name, value) click to toggle source

Returns a collection filtered by the given dimension:

metric = metrics.with_dimension('name', 'value').first

You can chain calls to with_dimension. Additional dimensions are added.

metrics = metrics.
  with_dimension('d1', 'v1').
  with_dimension('d2', 'v2').
  with_dimension('d3', 'v3')

metrics.each{|metric|} # filtered by all three dimensions

@param [String] name @param [String] value @return [MetricCollection]

# File lib/aws/cloud_watch/metric_collection.rb, line 81
def with_dimension name, value
  with_dimensions([{ :name => name, :value => value }])
end
with_dimensions(*dimensions) click to toggle source

Returns a collection filtered by the given dimensions.

metrics.with_dimensions([
  { :name => 'd1', :value => 'v1' },
  { :name => 'd2', :value => 'v2' },
  { :name => 'd3', :value => 'v3' },
]).each do |metric|
  # ...
end

Multiple calls to with_dimensions will add to previous dimensions. @param [Array<Hash>] dimensions An array of dimensions. Each dimension

should be a Hash with a +:name+ and +:value+.

@return [MetricCollection]

# File lib/aws/cloud_watch/metric_collection.rb, line 99
def with_dimensions *dimensions
  dimensions = @filters[:dimensions] || []
  dimensions += dimensions.flatten
  filter(:dimensions, dimensions)
end
with_metric_name(name) click to toggle source

@param [String] name @return [MetricCollection]

# File lib/aws/cloud_watch/metric_collection.rb, line 60
def with_metric_name name
  filter(:metric_name, name)
end
with_namespace(namespace) click to toggle source

@param [String] namespace @return [MetricCollection]

# File lib/aws/cloud_watch/metric_collection.rb, line 54
def with_namespace namespace
  filter(:namespace, namespace)
end

Protected Instance Methods

_each_item(next_token, options = {}) { |metric| ... } click to toggle source
# File lib/aws/cloud_watch/metric_collection.rb, line 107
def _each_item next_token, options = {}, &block

  options = @filters.merge(options)
  options[:next_token] = next_token if next_token

  resp = client.list_metrics(options)
  resp.data[:metrics].each do |details|

    metric = Metric.new_from(
      :list_metrics, details, 
      details[:namespace],
      details[:metric_name],
      details.merge(:config => config))

    yield(metric)

  end

  resp.data[:next_token]

end