Class: PrometheusExporter::Metric::Base
- Inherits:
-
Object
- Object
- PrometheusExporter::Metric::Base
- Defined in:
- lib/prometheus_exporter/metric/base.rb
Instance Attribute Summary collapse
-
#data ⇒ Object
Returns the value of attribute data.
-
#help ⇒ Object
Returns the value of attribute help.
-
#name ⇒ Object
Returns the value of attribute name.
Class Method Summary collapse
- .default_prefix ⇒ Object
-
.default_prefix=(name) ⇒ Object
prefix applied to all metrics.
Instance Method Summary collapse
- #from_json(json) ⇒ Object
-
#initialize(name, help) ⇒ Base
constructor
A new instance of Base.
- #labels_text(labels) ⇒ Object
- #metric_text ⇒ Object
- #prefix(name) ⇒ Object
- #to_prometheus_text ⇒ Object
- #type ⇒ Object
Constructor Details
#initialize(name, help) ⇒ Base
Returns a new instance of Base.
16 17 18 19 |
# File 'lib/prometheus_exporter/metric/base.rb', line 16 def initialize(name, help) @name = name @help = help end |
Instance Attribute Details
#data ⇒ Object
Returns the value of attribute data.
14 15 16 |
# File 'lib/prometheus_exporter/metric/base.rb', line 14 def data @data end |
#help ⇒ Object
Returns the value of attribute help.
14 15 16 |
# File 'lib/prometheus_exporter/metric/base.rb', line 14 def help @help end |
#name ⇒ Object
Returns the value of attribute name.
14 15 16 |
# File 'lib/prometheus_exporter/metric/base.rb', line 14 def name @name end |
Class Method Details
.default_prefix ⇒ Object
10 11 12 |
# File 'lib/prometheus_exporter/metric/base.rb', line 10 def self.default_prefix @default_prefix.to_s end |
.default_prefix=(name) ⇒ Object
prefix applied to all metrics
6 7 8 |
# File 'lib/prometheus_exporter/metric/base.rb', line 6 def self.default_prefix=(name) @default_prefix = name end |
Instance Method Details
#from_json(json) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/prometheus_exporter/metric/base.rb', line 29 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) ⇒ Object
48 49 50 51 52 53 54 55 |
# File 'lib/prometheus_exporter/metric/base.rb', line 48 def labels_text(labels) if labels && labels.length > 0 s = labels.map do |key, value| "#{key}=\"#{value}\"" end.join(",") "{#{s}}" end end |
#metric_text ⇒ Object
25 26 27 |
# File 'lib/prometheus_exporter/metric/base.rb', line 25 def metric_text raise "Not implemented" end |
#prefix(name) ⇒ Object
44 45 46 |
# File 'lib/prometheus_exporter/metric/base.rb', line 44 def prefix(name) Base.default_prefix + name end |
#to_prometheus_text ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/prometheus_exporter/metric/base.rb', line 57 def to_prometheus_text <<~TEXT # HELP #{prefix(name)} #{help} # TYPE #{prefix(name)} #{type} #{metric_text} TEXT end |
#type ⇒ Object
21 22 23 |
# File 'lib/prometheus_exporter/metric/base.rb', line 21 def type raise "Not implemented" end |