class Monitoring::MetricTranslator

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.

Attributes

name[R]
view_labels[R]

Public Class Methods

new(name, metric_labels) click to toggle source
# 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

Public Instance Methods

translate_labels(labels) click to toggle source
# 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