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.



180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/fluent/plugin/monitoring.rb', line 180

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

#name ⇒ Object (readonly)

Returns the value of attribute name.



177
178
179
# File 'lib/fluent/plugin/monitoring.rb', line 177

def name
  @name
end

#view_labels ⇒ Object (readonly)

Returns the value of attribute view_labels.



178
179
180
# File 'lib/fluent/plugin/monitoring.rb', line 178

def view_labels
  @view_labels
end

Instance Method Details

#translate_labels(labels) ⇒ Object



199
200
201
202
203
# File 'lib/fluent/plugin/monitoring.rb', line 199

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