class Splash::Daemon::Metrics::Manager

Metrics Manager (collect and sending to Prometheus)

Attributes

execution_count[R]

metric : commands executions count during Splash daemon uptime

monitoring_logs_count[R]

metric : logs monitoring count during Splash daemon uptime

monitoring_processes_count[R]

metric : processes monitoring count during Splash daemon uptime

Public Class Methods

new(options ={}) click to toggle source

Constructor prepare prometheus-client, defined metrics and init attributes

# File lib/splash/daemon/metrics.rb, line 35
def initialize(options ={})
  @session = options[:session]
  @config = get_config
  @starttime = Time.now
  @execution_count = 0
  @monitoring_logs_count = 0
  @monitoring_processes_count = 0


  @registry = Prometheus::Client::Registry::new
  @metric_uptime = Prometheus::Client::Gauge.new(:splash_uptime, docstring: 'SPLASH self metric uptime')
  @metric_execution = Prometheus::Client::Gauge.new(:splash_execution, docstring: 'SPLASH self metric total commands execution count')
  @metric_logs_monitoring = Prometheus::Client::Gauge.new(:splash_logs_monitoring, docstring: 'SPLASH self metric total logs monitoring count')
  @metric_processes_monitoring = Prometheus::Client::Gauge.new(:splash_processes_monitoring, docstring: 'SPLASH self metric total processes monitoring count')
  @registry.register(@metric_uptime)
  @registry.register(@metric_execution)
  @registry.register(@metric_logs_monitoring)
  @registry.register(@metric_processes_monitoring)
end

Public Instance Methods

inc_execution() click to toggle source

increment metric : execution_count

# File lib/splash/daemon/metrics.rb, line 61
def inc_execution
  @execution_count += 1
end
inc_logs_monitoring() click to toggle source

increment metric : monitoring_logs_count

# File lib/splash/daemon/metrics.rb, line 66
def inc_logs_monitoring
  @monitoring_logs_count += 1
end
inc_processes_monitoring() click to toggle source

increment metric : monitoring_processes_count

# File lib/splash/daemon/metrics.rb, line 71
def inc_processes_monitoring
  @monitoring_processes_count += 1
end
notify() click to toggle source

Send metrics to Prometheus PushGateway @return [Hash] Exiter case ( :service_dependence_missing , :quiet_exit)

# File lib/splash/daemon/metrics.rb, line 77
def notify
  log = get_logger
  unless verify_service url: @config.prometheus_pushgateway_url then
    return  { :case => :service_dependence_missing, :more => "Prometheus Notification not send." }
  end

  log.ok "Sending Splash self metrics to PushGateway." , @session
  @metric_uptime.set uptime
  @metric_execution.set execution_count
  @metric_logs_monitoring.set monitoring_logs_count
  @metric_processes_monitoring.set monitoring_processes_count

  hostname = Socket.gethostname
  url = @config.prometheus_pushgateway_url
  Prometheus::Client::Push.new('Splash',hostname, url).add(@registry)
  log.debug "Sending to Prometheus PushGateway done.", @session
  return {:case => :quiet_exit }
end
uptime() click to toggle source

virtual accessor uptime

# File lib/splash/daemon/metrics.rb, line 56
def uptime
  return Time.now - @starttime
end