Class: Splash::Daemon::Metrics::Manager

Inherits:
Object
  • Object
show all
Defined in:
lib/splash/daemon/metrics.rb

Overview

Metrics Manager (collect and sending to Prometheus)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Manager

Constructor prepare prometheus-client, defined metrics and init attributes



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 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

Instance Attribute Details

#execution_countObject (readonly)

metric : commands executions count during Splash daemon uptime



28
29
30
# File 'lib/splash/daemon/metrics.rb', line 28

def execution_count
  @execution_count
end

#monitoring_logs_countObject (readonly)

metric : logs monitoring count during Splash daemon uptime



30
31
32
# File 'lib/splash/daemon/metrics.rb', line 30

def monitoring_logs_count
  @monitoring_logs_count
end

#monitoring_processes_countObject (readonly)

metric : processes monitoring count during Splash daemon uptime



32
33
34
# File 'lib/splash/daemon/metrics.rb', line 32

def monitoring_processes_count
  @monitoring_processes_count
end

Instance Method Details

#inc_executionObject

increment metric : execution_count



61
62
63
# File 'lib/splash/daemon/metrics.rb', line 61

def inc_execution
  @execution_count += 1
end

#inc_logs_monitoringObject

increment metric : monitoring_logs_count



66
67
68
# File 'lib/splash/daemon/metrics.rb', line 66

def inc_logs_monitoring
  @monitoring_logs_count += 1
end

#inc_processes_monitoringObject

increment metric : monitoring_processes_count



71
72
73
# File 'lib/splash/daemon/metrics.rb', line 71

def inc_processes_monitoring
  @monitoring_processes_count += 1
end

#notifyHash

Send metrics to Prometheus PushGateway

Returns:

  • (Hash)

    Exiter case ( :service_dependence_missing , :quiet_exit)



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# 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

#uptimeObject

virtual accessor uptime



56
57
58
# File 'lib/splash/daemon/metrics.rb', line 56

def uptime
  return Time.now - @starttime
end