Class: Bipbip::Plugin::SystemdUnit
Instance Attribute Summary
#config, #frequency, #metric_group, #name, #tags
Instance Method Summary
collapse
factory, factory_from_plugin, #initialize, #metrics_names, #run, #source_identifier
#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
12
13
|
# 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 ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# 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) ⇒ Array<String>
46
47
48
49
50
51
|
# 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) ⇒ TrueClass, FalseClass
55
56
57
|
# 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) ⇒ TrueClass, FalseClass
61
62
63
|
# File 'lib/bipbip/plugin/systemd_unit.rb', line 61
def unit_is_failed(unit)
Komenda.run(['systemctl', 'is-failed', unit]).success?
end
|