class Invoca::Metrics::Prometheus::DeclareMetrics::Histogram

Attributes

buckets[R]

Public Class Methods

new(name, type, source, metric, buckets:, labels:, graphite:) click to toggle source
# File lib/invoca/metrics/prometheus/declare_metrics/histogram.rb, line 16
def initialize(name, type, source, metric, buckets:, labels:, graphite:)
  @buckets = buckets
  super(name, type, source, metric, labels: labels, graphite: graphite)
end

Public Instance Methods

add(value = :'1', **labels) click to toggle source
# File lib/invoca/metrics/prometheus/declare_metrics/histogram.rb, line 21
def add(value = :'1', **labels)
  if value == :'1'
    value = 1
    ActiveSupport::Deprecation.warn("histogram default value of 1 is deprecated; please pass an explicit value")
  end

  if metric.present?
    metric.observe(value, default_labels.merge(labels)) if metric.present?
  else
    warn("Histogram being used without metric being present")
  end

  if graphite
    Invoca::Metrics::Client.metrics.timer(render_graphite_string(**default_labels.merge(labels)), value)
  end
end
time(return_timing: false, **labels) { || ... } click to toggle source
# File lib/invoca/metrics/prometheus/declare_metrics/histogram.rb, line 38
def time(return_timing: false, **labels)
  result = nil
  elapsed_time = Benchmark.realtime { result = yield }
  elapsed_time_ms = (elapsed_time * 1000).to_i
  add(elapsed_time_ms, **labels)

  return_timing ? [result, elapsed_time_ms] : result
end