class Sidewatch::Cloudwatch

Constants

MAX_BATCH_SIZE

Attributes

client[RW]

Public Class Methods

new(config = {}) click to toggle source
# File lib/sidewatch/cloudwatch.rb, line 10
def initialize(config = {})
  client = config.delete(:client){ Aws::CloudWatch::Client }
  client = Object.const_get(client) if client.is_a?(String)
  client = client.new(config) if client.is_a?(Class)
  self.client = client
end

Public Instance Methods

send(metrics) click to toggle source
# File lib/sidewatch/cloudwatch.rb, line 17
def send(metrics)
  metrics.group_by(&:namespace).each do |ns, ns_metrics|
    ns_metrics.each_slice(max_batch_size) do |slice|
      data = metric_data(ns, slice)
      client.put_metric_data(data)
    end
  end
end

Private Instance Methods

max_batch_size() click to toggle source
# File lib/sidewatch/cloudwatch.rb, line 28
def max_batch_size
  MAX_BATCH_SIZE
end
metric_data(ns, metrics) click to toggle source
# File lib/sidewatch/cloudwatch.rb, line 32
def metric_data(ns, metrics)
  {
    namespace: ns,
    metric_data: metrics.map{|m|
      {
        metric_name: m.name,
        dimensions: Array(m.dimensions).map{|name, value| {name: name, value: value}},
        timestamp: m.timestamp,
        value: m.value,
        unit: m.unit
      }
    }
  }
end