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 27 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
convert_symbol_keys_from_dash_to_underscore!(hash)
click to toggle source
# File lib/cloud_watch_metrics/util.rb, line 13 def convert_symbol_keys_from_dash_to_underscore!(hash) hash.keys.each do |key| if key.match?('-') hash[key.to_s.tr('-', '_').to_sym] = hash.delete(key) end end end
delete_keys!(hash, keys)
click to toggle source
# File lib/cloud_watch_metrics/util.rb, line 21 def delete_keys!(hash, keys) hash .select { |key,| keys.include?(key) } .each_key { |key| hash.delete(key) } end
put_metric_data(namespace, metric_data, dry_run: false)
click to toggle source
@return [void]
# File lib/cloud_watch_metrics/util.rb, line 38 def put_metric_data(namespace, metric_data, dry_run: false) return dump_metric_data(namespace, metric_data) if dry_run 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 53 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 57 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