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.



211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
# File 'lib/fluent/plugin/monitoring.rb', line 211

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.



208
209
210
# File 'lib/fluent/plugin/monitoring.rb', line 208

def name
  @name
end

#view_labelsObject (readonly)

Returns the value of attribute view_labels.



209
210
211
# File 'lib/fluent/plugin/monitoring.rb', line 209

def view_labels
  @view_labels
end

Instance Method Details

#translate_labels(labels) ⇒ Object



230
231
232
233
234
# File 'lib/fluent/plugin/monitoring.rb', line 230

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