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.



239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
# File 'lib/fluent/plugin/monitoring.rb', line 239

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.



237
238
239
# File 'lib/fluent/plugin/monitoring.rb', line 237

def name
  @name
end

#view_labelsObject (readonly)

Returns the value of attribute view_labels.



237
238
239
# File 'lib/fluent/plugin/monitoring.rb', line 237

def view_labels
  @view_labels
end

Instance Method Details

#translate_labels(labels) ⇒ Object



258
259
260
261
262
263
# File 'lib/fluent/plugin/monitoring.rb', line 258

def translate_labels(labels)
  return labels unless @legacy

  translation = { code: :response_code, grpc: :grpc }
  labels.transform_keys { |k| translation[k] }
end