class Alephant::Logger::CloudWatch
Attributes
cloudwatch[R]
defaults[R]
namespace[R]
Public Class Methods
new(opts)
click to toggle source
# File lib/alephant/logger/cloudwatch.rb, line 6 def initialize(opts) @cloudwatch = Aws::CloudWatch::Client.new @defaults = process_defaults opts end
Public Instance Methods
metric(name, opts={})
click to toggle source
# File lib/alephant/logger/cloudwatch.rb, line 11 def metric(name, opts={}) signature = [name] + opts.values_at(:value, :unit, :dimensions) send_metric(*signature) end
Private Instance Methods
parse(dimensions)
click to toggle source
# File lib/alephant/logger/cloudwatch.rb, line 30 def parse(dimensions) dimensions.map do |name, value| { "name" => name.to_s, "value" => value } end end
preset_defaults()
click to toggle source
# File lib/alephant/logger/cloudwatch.rb, line 26 def preset_defaults { :unit => "Count", :value => 1, :dimensions => {} } end
process_defaults(opts)
click to toggle source
# File lib/alephant/logger/cloudwatch.rb, line 20 def process_defaults(opts) preset_defaults.reduce({}) do |acc, (key, value)| acc.tap { |h| h[key] = opts.fetch(key, value) } end.merge :namespace => opts.fetch(:namespace) end
send_metric(name, value, unit, dimensions)
click to toggle source
# File lib/alephant/logger/cloudwatch.rb, line 39 def send_metric(name, value, unit, dimensions) Thread.new do cloudwatch.put_metric_data( :namespace => defaults[:namespace], :metric_data => [{ :metric_name => name, :value => value || defaults[:value], :unit => unit || defaults[:unit], :dimensions => parse(dimensions || defaults[:dimensions]) }] ) end end