Class: Pgbus::Web::MetricsSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/pgbus/web/metrics_serializer.rb

Overview

Converts DataSource output into Prometheus text exposition format (Content-Type: text/plain; version=0.0.4; charset=utf-8).

Each metric family gets a HELP line, a TYPE line, and one or more sample lines. Labels are double-quoted per the Prometheus spec. All timing values are converted from milliseconds to seconds.

Resilient by design: each section rescues StandardError independently so a failure in one data source method doesn’t blank the entire scrape response.

Instance Method Summary collapse

Constructor Details

#initialize(data_source) ⇒ MetricsSerializer

Returns a new instance of MetricsSerializer.



16
17
18
# File 'lib/pgbus/web/metrics_serializer.rb', line 16

def initialize(data_source)
  @data_source = data_source
end

Instance Method Details

#serializeObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/pgbus/web/metrics_serializer.rb', line 20

def serialize
  lines = []
  append_queue_metrics(lines)
  append_job_metrics(lines)
  append_process_metrics(lines)
  append_summary_metrics(lines)
  append_stream_metrics(lines)
  append_health_metrics(lines)
  "#{lines.join("\n")}\n"
end