module Prometheus::Client::Formats::Text

Text format is human readable mainly used for manual inspection.

Constants

CONTENT_TYPE
MEDIA_TYPE
VERSION

Public Class Methods

marshal(registry) click to toggle source
# File lib/prometheus/client/formats/text.rb, line 17
def marshal(registry)
  metrics = registry.metrics.map do |metric|
    samples = metric.values.flat_map do |label_set, value|
      representation(metric, label_set, value)
    end

    [metric.name, { type: metric.type, help: metric.docstring, samples: samples }]
  end

  Helper::MetricsRepresentation.to_text(metrics)
end
marshal_multiprocess(path = Prometheus::Client.configuration.multiprocess_files_dir) click to toggle source
# File lib/prometheus/client/formats/text.rb, line 29
def marshal_multiprocess(path = Prometheus::Client.configuration.multiprocess_files_dir)
  file_list = Dir.glob(File.join(path, '*.db')).sort
    .map {|f| Helper::PlainFile.new(f) }
    .map {|f| [f.filepath, f.multiprocess_mode.to_sym, f.type.to_sym, f.pid] }

  FastMmapedFile.to_metrics(file_list.to_a)
end

Private Class Methods

histogram(name, set, value) click to toggle source
# File lib/prometheus/client/formats/text.rb, line 70
def histogram(name, set, value)
  # |metric_name, labels, value|
  rv = value.get.map do |q, v|
    [name, set.merge(le: q), v]
  end

  rv << [name, set.merge(le: '+Inf'), value.get.total]
  rv << ["#{name}_sum", set, value.get.sum]
  rv << ["#{name}_count", set, value.get.total]
  rv
end
load_metrics(path) click to toggle source
# File lib/prometheus/client/formats/text.rb, line 39
def load_metrics(path)
  metrics = {}
  Dir.glob(File.join(path, '*.db')).sort.each do |f|
    Helper::PlainFile.new(f).to_metrics(metrics)
  end

  metrics
end
representation(metric, label_set, value) click to toggle source
# File lib/prometheus/client/formats/text.rb, line 48
def representation(metric, label_set, value)
  labels = metric.base_labels.merge(label_set)

  if metric.type == :summary
    summary(metric.name, labels, value)
  elsif metric.type == :histogram
    histogram(metric.name, labels, value)
  else
    [[metric.name, labels, value.get]]
  end
end
summary(name, set, value) click to toggle source
# File lib/prometheus/client/formats/text.rb, line 60
def summary(name, set, value)
  rv = value.get.map do |q, v|
    [name, set.merge(quantile: q), v]
  end

  rv << ["#{name}_sum", set, value.get.sum]
  rv << ["#{name}_count", set, value.get.total]
  rv
end