Class: Splash::Daemon::Metrics::Manager
- Inherits:
-
Object
- Object
- Splash::Daemon::Metrics::Manager
- Defined in:
- lib/splash/daemon/metrics.rb
Overview
Metrics Manager (collect and sending to Prometheus)
Instance Attribute Summary collapse
-
#execution_count ⇒ Object
readonly
metric : commands executions count during Splash daemon uptime.
-
#monitoring_logs_count ⇒ Object
readonly
metric : logs monitoring count during Splash daemon uptime.
-
#monitoring_processes_count ⇒ Object
readonly
metric : processes monitoring count during Splash daemon uptime.
Instance Method Summary collapse
-
#inc_execution ⇒ Object
increment metric : execution_count.
-
#inc_logs_monitoring ⇒ Object
increment metric : monitoring_logs_count.
-
#inc_processes_monitoring ⇒ Object
increment metric : monitoring_processes_count.
-
#initialize(options = {}) ⇒ Manager
constructor
Constructor prepare prometheus-client, defined metrics and init attributes.
-
#notify ⇒ Hash
Send metrics to Prometheus PushGateway.
-
#uptime ⇒ Object
virtual accessor uptime.
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( ={}) @session = [: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_count ⇒ Object (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_count ⇒ Object (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_count ⇒ Object (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_execution ⇒ Object
increment metric : execution_count
61 62 63 |
# File 'lib/splash/daemon/metrics.rb', line 61 def inc_execution @execution_count += 1 end |
#inc_logs_monitoring ⇒ Object
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_monitoring ⇒ Object
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 |
#notify ⇒ Hash
Send metrics to Prometheus PushGateway
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 |
#uptime ⇒ Object
virtual accessor uptime
56 57 58 |
# File 'lib/splash/daemon/metrics.rb', line 56 def uptime return Time.now - @starttime end |