class PrometheusExporter::Metric::Base

Attributes

data[RW]
help[RW]
name[RW]

Public Class Methods

default_labels() click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 22
def self.default_labels
  @default_labels || {}
end
default_labels=(labels) click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 18
def self.default_labels=(labels)
  @default_labels = labels
end
default_prefix() click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 14
def self.default_prefix
  @default_prefix.to_s
end
default_prefix=(name) click to toggle source

prefix applied to all metrics

# File lib/prometheus_exporter/metric/base.rb, line 10
def self.default_prefix=(name)
  @default_prefix = name
end
new(name, help) click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 28
def initialize(name, help)
  @name = name
  @help = help
end

Public Instance Methods

from_json(json) click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 49
def from_json(json)
  json = JSON.parse(json) if String === json
  @name = json["name"]
  @help = json["help"]
  @data = json["data"]
  if Hash === json["data"]
    @data = {}
    json["data"].each do |k, v|
      k = JSON.parse(k)
      k = Hash[k.map { |k1, v1| [k1.to_sym, v1] }]
      @data[k] = v
    end
  end
end
labels_text(labels) click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 68
def labels_text(labels)
  labels = (labels || {}).merge(Base.default_labels)
  if labels && labels.length > 0
    s = labels.map do |key, value|
      value = value.to_s
      value = escape_value(value) if needs_escape?(value)
      "#{key}=\"#{value}\""
    end.join(",")
    "{#{s}}"
  end
end
metric_text() click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 37
def metric_text
  raise "Not implemented"
end
prefix(name) click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 64
def prefix(name)
  Base.default_prefix + name
end
reset!() click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 41
def reset!
  raise "Not implemented"
end
to_h() click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 45
def to_h
  raise "Not implemented"
end
to_prometheus_text() click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 80
    def to_prometheus_text
      <<~TEXT
        # HELP #{prefix(name)} #{help}
        # TYPE #{prefix(name)} #{type}
        #{metric_text}
      TEXT
    end
type() click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 33
def type
  raise "Not implemented"
end

Private Instance Methods

escape_value(str) click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 90
def escape_value(str)
  str.gsub(/[\n"\\]/m) do |m|
    if m == "\n"
      "\\n"
    else
      "\\#{m}"
    end
  end
end
needs_escape?(str) click to toggle source
# File lib/prometheus_exporter/metric/base.rb, line 102
def needs_escape?(str)
  str.match?(/[\n"\\]/m)
end