Class: Bipbip::Plugin::SystemdUnit
- Inherits:
-
Bipbip::Plugin
- Object
- Bipbip::Plugin
- Bipbip::Plugin::SystemdUnit
- Defined in:
- lib/bipbip/plugin/systemd_unit.rb
Instance Attribute Summary
Attributes inherited from Bipbip::Plugin
#config, #frequency, #metric_group, #name, #tags
Instance Method Summary collapse
- #metrics_schema ⇒ Object
- #monitor ⇒ Object
- #unit_dependencies(main_unit) ⇒ Array<String>
- #unit_is_active(unit) ⇒ TrueClass, FalseClass
Methods inherited from Bipbip::Plugin
factory, factory_from_plugin, #initialize, #metrics_names, #run, #source_identifier
Methods included from InterruptibleSleep
#interrupt_sleep, #interruptible_sleep
Constructor Details
This class inherits a constructor from Bipbip::Plugin
Instance Method Details
#metrics_schema ⇒ Object
7 8 9 10 11 |
# File 'lib/bipbip/plugin/systemd_unit.rb', line 7 def metrics_schema [ { name: 'all_units_running', type: 'gauge', unit: 'Boolean' } ] end |
#monitor ⇒ Object
13 14 15 16 |
# File 'lib/bipbip/plugin/systemd_unit.rb', line 13 def monitor main_unit = config['unit_name'] { 'all_units_running' => unit_dependencies(main_unit).all? { |unit| unit_is_active(unit) } ? 1 : 0 } end |
#unit_dependencies(main_unit) ⇒ Array<String>
20 21 22 23 24 25 |
# File 'lib/bipbip/plugin/systemd_unit.rb', line 20 def unit_dependencies(main_unit) result = Komenda.run(['systemctl', 'list-dependencies', '--plain', '--full', main_unit], fail_on_fail: true) result.stdout.force_encoding('utf-8').lines.map do |line| line.strip.gsub(/^[●*]\s+/, '') end end |
#unit_is_active(unit) ⇒ TrueClass, FalseClass
29 30 31 |
# File 'lib/bipbip/plugin/systemd_unit.rb', line 29 def unit_is_active(unit) Komenda.run(['systemctl', 'is-active', unit]).success? end |