class Meteorlog::Exporter

Public Class Methods

export(cloud_watch_logs, opts = {}) click to toggle source
# File lib/meteorlog/exporter.rb, line 3
def export(cloud_watch_logs, opts = {})
  self.new(cloud_watch_logs, opts).export
end
new(cloud_watch_logs, options = {}) click to toggle source
# File lib/meteorlog/exporter.rb, line 8
def initialize(cloud_watch_logs, options = {})
  @cloud_watch_logs = cloud_watch_logs
  @options = options
end

Public Instance Methods

export() click to toggle source
# File lib/meteorlog/exporter.rb, line 13
def export
  result = {}

  log_groups = @cloud_watch_logs.describe_log_groups.each.inject([]) {|r, i| r + i.log_groups }

  log_groups.each do |log_group|
    export_log_graoup(log_group, result)
  end

  return result
end

Private Instance Methods

export_log_graoup(log_group, result) click to toggle source
# File lib/meteorlog/exporter.rb, line 27
def export_log_graoup(log_group, result)
  log_group_name = log_group.log_group_name

  return unless Meteorlog::Utils.matched?(log_group_name, @options[:include], @options[:exclude])

  log_streams = @cloud_watch_logs.describe_log_streams(
    :log_group_name => log_group_name).log_streams
  metric_filters = @cloud_watch_logs.describe_metric_filters(
    :log_group_name => log_group_name).metric_filters

  result[log_group_name] = {
    :log_streams => export_log_streams(log_streams),
    :metric_filters => export_metric_filters(metric_filters)
  }
end
export_log_streams(log_streams) click to toggle source
# File lib/meteorlog/exporter.rb, line 43
def export_log_streams(log_streams)
  log_streams.map {|log_stream| log_stream.log_stream_name }
end
export_metric_filters(metric_filters) click to toggle source
# File lib/meteorlog/exporter.rb, line 47
def export_metric_filters(metric_filters)
  result = {}

  metric_filters.each do |metric_filter|
    filter_name = metric_filter.filter_name
    metric_transformations = metric_filter.metric_transformations.map do |metric_transformation|
      {
        :metric_namespace => metric_transformation.metric_namespace,
        :metric_name => metric_transformation.metric_name,
        :metric_value => metric_transformation.metric_value,
      }
    end

    result[filter_name] = {
      :metric_transformations => metric_transformations
    }

    if metric_filter.filter_pattern
      result[filter_name][:filter_pattern] = metric_filter.filter_pattern
    end
  end

  return result
end