class Bipbip::Plugin::SystemdUnit
Public Instance Methods
metrics_schema()
click to toggle source
# File lib/bipbip/plugin/systemd_unit.rb, line 7 def metrics_schema [ { name: 'all_units_active', type: 'gauge', unit: 'Boolean' }, { name: 'any_unit_failed', type: 'gauge', unit: 'Boolean' }, { name: 'any_unit_stopped', type: 'gauge', unit: 'Boolean' } ] end
monitor()
click to toggle source
# File lib/bipbip/plugin/systemd_unit.rb, line 15 def monitor main_unit = config['unit_name'] failed_units = [] stopped_units = [] status_list = unit_dependencies(main_unit).map do |unit| is_active = unit_is_active(unit) is_failed = unit_is_failed(unit) is_stopped = !is_active && !is_failed failed_units.push(unit) if is_failed stopped_units.push(unit) if is_stopped { name: unit, is_active: is_active, is_failed: is_failed, is_stopped: is_stopped } end log(Logger::WARN, "#{main_unit} unit failed: #{failed_units.join(', ')}") unless failed_units.empty? log(Logger::WARN, "#{main_unit} unit stopped: #{stopped_units.join(', ')}") unless stopped_units.empty? { 'all_units_active' => (status_list.all? { |status| status[:is_active] } ? 1 : 0), 'any_unit_failed' => (status_list.any? { |status| status[:is_failed] } ? 1 : 0), 'any_unit_stopped' => (status_list.any? { |status| status[:is_stopped] } ? 1 : 0) } end
unit_dependencies(main_unit)
click to toggle source
@param [String] main_unit @return [Array<String>]
# File lib/bipbip/plugin/systemd_unit.rb, line 46 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)
click to toggle source
@param [String] unit @return [TrueClass, FalseClass]
# File lib/bipbip/plugin/systemd_unit.rb, line 55 def unit_is_active(unit) Komenda.run(['systemctl', 'is-active', unit]).success? end
unit_is_failed(unit)
click to toggle source
@param [String] unit @return [TrueClass, FalseClass]
# File lib/bipbip/plugin/systemd_unit.rb, line 61 def unit_is_failed(unit) Komenda.run(['systemctl', 'is-failed', unit]).success? end