Class: Monitoring::MetricTranslator

Inherits:
Object
  • Object
show all
Defined in:
lib/fluent/plugin/monitoring.rb

Overview

Translate the internal metrics to the curated metrics in Stackdriver. The Prometheus metrics are collected by Google Kubernetes Engine’s monitoring, so we can’t redefine them. Avoid this mechanism for new metrics by defining them in their final form, so they don’t need translation.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, metric_labels) ⇒ MetricTranslator

Returns a new instance of MetricTranslator.



168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# File 'lib/fluent/plugin/monitoring.rb', line 168

def initialize(name, metric_labels)
  @legacy = true
  case name
  when :stackdriver_successful_requests_count,
       :stackdriver_failed_requests_count
    @name = :request_count
  when :stackdriver_ingested_entries_count,
       :stackdriver_dropped_entries_count
    @name = :log_entry_count
  when :stackdriver_retried_entries_count
    @name = :log_entry_retry_count
  else
    @name = name
    @legacy = false
  end
  # Collapsed from [:response_code, :grpc]
  @view_labels = @legacy ? [:response_code] : metric_labels
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



165
166
167
# File 'lib/fluent/plugin/monitoring.rb', line 165

def name
  @name
end

#view_labelsObject (readonly)

Returns the value of attribute view_labels.



166
167
168
# File 'lib/fluent/plugin/monitoring.rb', line 166

def view_labels
  @view_labels
end

Instance Method Details

#translate_labels(labels) ⇒ Object



187
188
189
190
191
# File 'lib/fluent/plugin/monitoring.rb', line 187

def translate_labels(labels)
  return labels unless @legacy
  translation = { code: :response_code, grpc: :grpc }
  labels.map { |k, v| [translation[k], v] }.to_h
end