class ElasticMetricsParser

Public Class Methods

new(metric_prefix, router, tag) click to toggle source
# File lib/fluent/plugin/elastic_metrics_parser.rb, line 6
def initialize(metric_prefix, router, tag)
  @metric_prefix = metric_prefix
  @router = router
  @tag = tag
end

Public Instance Methods

format_data(cleaned_data = [], prefix = '', separator = '') click to toggle source
# File lib/fluent/plugin/elastic_metrics_parser.rb, line 12
def format_data(cleaned_data = [], prefix = '', separator = '')
  hash_data_array = []
  hash_data = {}
  hash_data_with_labels = []
  cleaned_data.each do |interim_data|
    if interim_data =~ /{/ && interim_data =~ /}/
      hash_data_with_dim_fields = {}
      metric_name, additional_dims, metric_val_and_time = interim_data.match(/(.*){(.*)}(.*)/i).captures
      additional_dims.split(/,/).map do |interim_dim_data|
        hash_data_with_dim_fields[prefix + separator + "label" + separator + interim_dim_data.split(/=/)[0]] = interim_dim_data.split(/=/)[1].gsub(/"/, '') if interim_dim_data =~ /=/
      end
      hash_data_with_dim_fields[prefix + separator + metric_name] = metric_val_and_time.strip.split[0].to_f
      hash_data_with_labels << hash_data_with_dim_fields
    else
      metric_name, value, = interim_data.split
      hash_data[prefix + separator + metric_name] = value.to_f
    end
  end
  hash_data_array << hash_data
  (hash_data_array << hash_data_with_labels).flatten!
end