Class: ElasticMetricsParser

Inherits:
BaseMetricsParser show all
Defined in:
lib/fluent/plugin/elastic_metrics_parser.rb

Instance Method Summary collapse

Methods inherited from BaseMetricsParser

#clean_data, #emit_parsed_metrics, #normalise_data, #serialize_data

Constructor Details

#initialize(metric_prefix, router, tag) ⇒ ElasticMetricsParser

Returns a new instance of ElasticMetricsParser.



6
7
8
9
10
# 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

Instance Method Details

#format_data(cleaned_data = [], prefix = '', separator = '') ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/fluent/plugin/elastic_metrics_parser.rb', line 12

def format_data(cleaned_data = [], prefix = '', separator = '')
  hash_data_array = []
  hash_data = {}
  cleaned_data.each do |interim_data|
    if interim_data =~ /{/ && interim_data =~ /}/
      metric_name, additional_dims, metric_val_and_time = interim_data.match(/(.*){(.*)}(.*)/i).captures
      additional_dim_name = ''
      if additional_dims =~ /,/
        additional_dims.split(/,/).map do |interim_dim_data|
          additional_dim_name += '_' unless additional_dim_name.nil? || additional_dim_name.empty?
          additional_dim_name += interim_dim_data.gsub(/"/, '').gsub(/=/, '_').gsub(/-/, '_') if interim_data =~ /=/
        end
      else
        additional_dim_name = additional_dims.gsub(/"/, '').gsub(/=/, '_').gsub(/-/, '_') if interim_data =~ /=/
      end
      if metric_val_and_time =~ / /
        hash_data["#{prefix}#{separator}#{metric_name}_#{additional_dim_name}"] =
            metric_val_and_time.strip.split[0] =~ /^\S*\.\S*$/ ? metric_val_and_time.strip.split[0].to_f : metric_val_and_time.strip.split[0].to_i
      end
    else
      metric_name, value, = interim_data.split
      hash_data[prefix + separator + metric_name] =
          value =~ /^\S*\.\S*$/ ? value.to_f : value.to_i
    end
  end
  hash_data_array << hash_data
end