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