class CloudWatchMetrics::Linux::Builder

Public Class Methods

new(dimensions, metrics) click to toggle source
# File lib/cloud_watch_metrics/linux/builder.rb, line 6
def initialize(dimensions, metrics)
  @dimensions_array = [Dimensions.new(InstanceId: MetaData.instance_id)]
  @dimensions_array << Dimensions.new(dimensions) unless dimensions.empty?

  @metric_names = metrics.select { |_, v| v }.keys
end

Public Instance Methods

build(meminfo, loadavg) click to toggle source
# File lib/cloud_watch_metrics/linux/builder.rb, line 13
def build(meminfo, loadavg)
  @meminfo = meminfo
  @loadavg = loadavg

  build_without_dimensions.flat_map do |metric_datum|
    @dimensions_array.map do |dimensions|
      metric_datum.merge(dimensions: dimensions.to_cloudwatch)
    end
  end
end

Private Instance Methods

build_without_dimensions() click to toggle source
# File lib/cloud_watch_metrics/linux/builder.rb, line 26
def build_without_dimensions
  @metric_names.map { |key| __send__(key) }.compact
end
load_average_15min() click to toggle source
# File lib/cloud_watch_metrics/linux/builder.rb, line 86
def load_average_15min
  {
    metric_name: 'LoadAverage15Min',
    timestamp:   @loadavg.time,
    value:       @loadavg.loadavg15,
    unit:        'Count',
  }
end
load_average_1min() click to toggle source
# File lib/cloud_watch_metrics/linux/builder.rb, line 68
def load_average_1min
  {
    metric_name: 'LoadAverage1Min',
    timestamp:   @loadavg.time,
    value:       @loadavg.loadavg1,
    unit:        'Count',
  }
end
load_average_5min() click to toggle source
# File lib/cloud_watch_metrics/linux/builder.rb, line 77
def load_average_5min
  {
    metric_name: 'LoadAverage5Min',
    timestamp:   @loadavg.time,
    value:       @loadavg.loadavg5,
    unit:        'Count',
  }
end
memory_used() click to toggle source
# File lib/cloud_watch_metrics/linux/builder.rb, line 30
def memory_used
  {
    metric_name: 'MemoryUsed',
    timestamp:   @meminfo.time,
    value:       @meminfo.mem_used / 1024,
    unit:        'Megabytes',
  }
end
memory_utilization() click to toggle source
# File lib/cloud_watch_metrics/linux/builder.rb, line 39
def memory_utilization
  {
    metric_name: 'MemoryUtilization',
    timestamp:   @meminfo.time,
    value:       (@meminfo.mem_util * 100).round(3),
    unit:        'Percent',
  }
end
swap_used() click to toggle source
# File lib/cloud_watch_metrics/linux/builder.rb, line 48
def swap_used
  return unless @meminfo.swap?
  {
    metric_name: 'SwapUsed',
    timestamp:   @meminfo.time,
    value:       @meminfo.swap_used / 1024,
    unit:        'Megabytes',
  }
end
swap_utilization() click to toggle source
# File lib/cloud_watch_metrics/linux/builder.rb, line 58
def swap_utilization
  return unless @meminfo.swap?
  {
    metric_name: 'SwapUtilization',
    timestamp:   @meminfo.time,
    value:       (@meminfo.swap_util * 100).round(3),
    unit:        'Percent',
  }
end