class PrometheusExporter::Server::ProcessCollector
Constants
- MAX_PROCESS_METRIC_AGE
- PROCESS_COUNTERS
- PROCESS_GAUGES
Public Class Methods
new()
click to toggle source
# File lib/prometheus_exporter/server/process_collector.rb, line 23 def initialize @process_metrics = [] end
Public Instance Methods
collect(obj)
click to toggle source
# File lib/prometheus_exporter/server/process_collector.rb, line 60 def collect(obj) now = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC) obj["created_at"] = now @process_metrics.delete_if do |current| (obj["pid"] == current["pid"] && obj["hostname"] == current["hostname"]) || (current["created_at"] + MAX_PROCESS_METRIC_AGE < now) end @process_metrics << obj end
metrics()
click to toggle source
# File lib/prometheus_exporter/server/process_collector.rb, line 31 def metrics return [] if @process_metrics.length == 0 metrics = {} @process_metrics.map do |m| metric_key = m["metric_labels"].merge("pid" => m["pid"]) metric_key.merge!(m["custom_labels"] || {}) PROCESS_GAUGES.map do |k, help| k = k.to_s if v = m[k] g = metrics[k] ||= PrometheusExporter::Metric::Gauge.new(k, help) g.observe(v, metric_key) end end PROCESS_COUNTERS.map do |k, help| k = k.to_s if v = m[k] c = metrics[k] ||= PrometheusExporter::Metric::Counter.new(k, help) c.observe(v, metric_key) end end end metrics.values end
type()
click to toggle source
# File lib/prometheus_exporter/server/process_collector.rb, line 27 def type "process" end