module CloudWatchMetrics::Util

Constants

MAX_METRIC_DATA_PER_PUT

docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html

Public Class Methods

accept_hash(option_parser) click to toggle source
# File lib/cloud_watch_metrics/util.rb, line 13
def accept_hash(option_parser)
  option_parser.accept(Hash) do |s,|
    break s unless s
    s
      .split(',').reject(&:empty?)
      .map { |kv| kv.include?('=') ? kv.split('=', 2) : [kv, true] }
      .to_h
  end
end
put_metric_data(namespace, metric_data, dryrun: false) click to toggle source

@return [void]

# File lib/cloud_watch_metrics/util.rb, line 24
def put_metric_data(namespace, metric_data, dryrun: false)
  return dump_metric_data(namespace, metric_data) if dryrun

  metric_data.each_slice(MAX_METRIC_DATA_PER_PUT).map do |data|
    Thread.start(data, cloudwatch) do |data_, cloudwatch_|
      cloudwatch_.put_metric_data(
        namespace: namespace,
        metric_data: data_,
      )
    end
  end.each(&:join)
end

Private Class Methods

cloudwatch() click to toggle source
# File lib/cloud_watch_metrics/util.rb, line 39
def cloudwatch
  @_cloudwatch ||= Aws::CloudWatch::Client.new
end
dump_metric_data(namespace, metric_data) click to toggle source
# File lib/cloud_watch_metrics/util.rb, line 43
def dump_metric_data(namespace, metric_data)
  json = { namespace: namespace, metric_data: metric_data }.to_json(
    indent:    ' ' * 2,
    space:     ' ',
    object_nl: "\n",
    array_nl:  "\n",
  )
  puts json
end