Class: Bipbip::Plugin::SystemdUnit

Inherits:
Bipbip::Plugin show all
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

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_schemaObject



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

#monitorObject



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>

Parameters:

  • main_unit (String)

Returns:

  • (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

Parameters:

  • unit (String)

Returns:

  • (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