ruby-nagios 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/check_check +46 -26
- data/lib/nagios/config.rb +1 -1
- data/lib/nagios/external_commands.rb +3 -3
- data/lib/nagios/external_commands/list.rb +158 -158
- data/lib/nagios/objects.rb +24 -1
- data/lib/nagios/status.rb +3 -3
- data/ruby-nagios.gemspec +1 -1
- metadata +4 -4
data/bin/check_check
CHANGED
@@ -78,7 +78,7 @@ class Nagios::Status::Model
|
|
78
78
|
|
79
79
|
end # class Nagios::Status::Model
|
80
80
|
|
81
|
-
Settings = Struct.new(:nagios_cfg, :status_path, :service_pattern, :host_pattern, :
|
81
|
+
Settings = Struct.new(:nagios_cfg, :status_path, :service_pattern, :host_pattern, :percent_critical, :percent_warning, :percent_unknown, :show_ok)
|
82
82
|
def main(args)
|
83
83
|
progname = File.basename($0)
|
84
84
|
settings = Settings.new
|
@@ -102,9 +102,23 @@ def main(args)
|
|
102
102
|
settings.host_pattern = val
|
103
103
|
end
|
104
104
|
|
105
|
-
opts.on(
|
106
|
-
"Only alert if this percentage of the cluster is
|
107
|
-
settings.
|
105
|
+
opts.on( "--percent-warning NUM",
|
106
|
+
"Only alert if this percentage of the cluster is in warning state") do |val|
|
107
|
+
settings.percent_warning = Float(val)
|
108
|
+
end
|
109
|
+
|
110
|
+
opts.on( "--percent-critical NUM",
|
111
|
+
"Only alert if this percentage of the cluster is in critical state") do |val|
|
112
|
+
settings.percent_critical = Float(val)
|
113
|
+
end
|
114
|
+
|
115
|
+
opts.on( "--percent-unknown NUM",
|
116
|
+
"Only alert if this percentage of the cluster is in unknown state") do |val|
|
117
|
+
settings.percent_unknown = Float(val)
|
118
|
+
end
|
119
|
+
|
120
|
+
opts.on( "--show-ok", "Show details for checks in OK state too") do
|
121
|
+
settings.show_ok = true
|
108
122
|
end
|
109
123
|
end # OptionParser.new
|
110
124
|
|
@@ -148,44 +162,50 @@ def main(args)
|
|
148
162
|
print "hosts=/#{settings.host_pattern}/ "
|
149
163
|
puts
|
150
164
|
|
165
|
+
total_results = ["OK", "WARNING", "CRITICAL", "UNKNOWN"].inject(0) {|aggr,state| aggr += results[state].length}
|
166
|
+
|
151
167
|
# More data output
|
152
|
-
total_results = 0.0
|
153
168
|
["WARNING", "CRITICAL", "UNKNOWN"].each do |state|
|
154
169
|
if results[state] && results[state].size > 0
|
155
170
|
puts "Services in #{state}:"
|
156
171
|
results[state].sort { |a,b| a["host_name"] <=> b["host_name"] }.each do |service|
|
157
|
-
|
158
|
-
|
172
|
+
if service["long_plugin_output"] and !service["long_plugin_output"].empty?
|
173
|
+
puts " #{service["host_name"]} => #{service["service_description"]} (#{service["plugin_output"]})"
|
174
|
+
puts " #{service["long_plugin_output"]}"
|
175
|
+
else
|
176
|
+
puts " #{service["host_name"]} => #{service["service_description"]} (#{service["plugin_output"]})"
|
177
|
+
end
|
159
178
|
end
|
160
179
|
end # if results[state]
|
161
180
|
end # for each non-OK state
|
162
181
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
end
|
182
|
+
if settings.show_ok and results["OK"].size > 0
|
183
|
+
puts "OK Services:"
|
184
|
+
results["OK"].sort { |a,b| a["host_name"] <=> b["host_name"] }.each do |service|
|
185
|
+
puts " #{service["host_name"]} => #{service["service_description"]}"
|
186
|
+
end
|
169
187
|
end
|
170
188
|
|
171
189
|
exitcode = 0
|
172
190
|
|
173
|
-
if settings.
|
174
|
-
|
175
|
-
exitcode = 1
|
176
|
-
end
|
177
|
-
if results["CRITICAL"].length > 0 && (results["CRITICAL"].length / total_results) * 100 >= settings.down_min_percent
|
178
|
-
exitcode = 2
|
179
|
-
end
|
191
|
+
if settings.percent_unknown
|
192
|
+
exitcode = 3 if results["UNKNOWN"].length > 0 && (results["UNKNOWN"].length.to_f / total_results) * 100 >= settings.percent_unknown
|
180
193
|
else
|
181
|
-
if results["
|
182
|
-
|
183
|
-
end
|
194
|
+
exitcode = 3 if results["UNKNOWN"].length > 0
|
195
|
+
end
|
184
196
|
|
185
|
-
|
186
|
-
|
187
|
-
|
197
|
+
if settings.percent_warning
|
198
|
+
exitcode = 1 if results["WARNING"].length > 0 && ((results["WARNING"].length.to_f + results["CRITICAL"].length.to_f) / total_results) * 100 >= settings.percent_warning
|
199
|
+
else
|
200
|
+
exitcode = 1 if results["WARNING"].length > 0
|
188
201
|
end
|
202
|
+
|
203
|
+
if settings.percent_critical
|
204
|
+
exitcode = 2 if results["CRITICAL"].length > 0 && (results["CRITICAL"].length.to_f / total_results) * 100 >= settings.percent_critical
|
205
|
+
else
|
206
|
+
exitcode = 2 if results["CRITICAL"].length > 0
|
207
|
+
end
|
208
|
+
|
189
209
|
return exitcode
|
190
210
|
end
|
191
211
|
|
data/lib/nagios/config.rb
CHANGED
@@ -88,7 +88,7 @@ first one will be used. For example, Debian can have both Nagios 2 and
|
|
88
88
|
|
89
89
|
@configuration[key] = val
|
90
90
|
instance_variable_set("@#{key}", val)
|
91
|
-
instance_eval val =~ /^[\d\.-]
|
91
|
+
instance_eval val =~ /^[\d\.-]+$/ ?
|
92
92
|
"def #{key}; return #{val}; end" :
|
93
93
|
"def #{key}; return %Q{#{val}}; end"
|
94
94
|
end
|
@@ -21,7 +21,7 @@ module Nagios
|
|
21
21
|
class ExternalCommands
|
22
22
|
|
23
23
|
require 'erb'
|
24
|
-
|
24
|
+
require 'nagios/external_commands/list'
|
25
25
|
|
26
26
|
# Constructor for the external command write class.
|
27
27
|
#
|
@@ -132,11 +132,11 @@ module Nagios
|
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
135
|
-
output << { data
|
135
|
+
output << { :data => params, :result => messages.empty? , :messages => messages }
|
136
136
|
result &&= messages.empty?
|
137
137
|
end # data.each
|
138
138
|
|
139
|
-
{ result
|
139
|
+
{ :result => result, :data => output }
|
140
140
|
end # def write
|
141
141
|
end
|
142
142
|
end
|
@@ -16,170 +16,170 @@ module Nagios
|
|
16
16
|
#
|
17
17
|
# == Example
|
18
18
|
#
|
19
|
-
# PROCESS_SERVICE_CHECK_RESULT
|
19
|
+
# :PROCESS_SERVICE_CHECK_RESULT => %w{host_name service_description return_code plugin_output}
|
20
20
|
#
|
21
21
|
# converted to template on print:
|
22
22
|
#
|
23
23
|
# [timestamp] PROCESS_SERVICE_CHECK_RESULT;<%= host_name %>;<%= service_description %>;<%= return_code %>;<%= plugin_output %>\n
|
24
24
|
#
|
25
25
|
ACTIONS = {
|
26
|
-
ACKNOWLEDGE_HOST_PROBLEM
|
27
|
-
ACKNOWLEDGE_SVC_PROBLEM
|
28
|
-
ADD_HOST_COMMENT
|
29
|
-
ADD_SVC_COMMENT
|
30
|
-
CHANGE_CONTACT_HOST_NOTIFICATION_TIMEPERIOD
|
31
|
-
CHANGE_CONTACT_MODATTR
|
32
|
-
CHANGE_CONTACT_MODHATTR
|
33
|
-
CHANGE_CONTACT_MODSATTR
|
34
|
-
CHANGE_CONTACT_SVC_NOTIFICATION_TIMEPERIOD
|
35
|
-
CHANGE_CUSTOM_CONTACT_VAR
|
36
|
-
CHANGE_CUSTOM_HOST_VAR
|
37
|
-
CHANGE_CUSTOM_SVC_VAR
|
38
|
-
CHANGE_GLOBAL_HOST_EVENT_HANDLER
|
39
|
-
CHANGE_GLOBAL_SVC_EVENT_HANDLER
|
40
|
-
CHANGE_HOST_CHECK_COMMAND
|
41
|
-
CHANGE_HOST_CHECK_TIMEPERIOD
|
42
|
-
CHANGE_HOST_CHECK_TIMEPERIOD
|
43
|
-
CHANGE_HOST_EVENT_HANDLER
|
44
|
-
CHANGE_HOST_MODATTR
|
45
|
-
CHANGE_MAX_HOST_CHECK_ATTEMPTS
|
46
|
-
CHANGE_MAX_SVC_CHECK_ATTEMPTS
|
47
|
-
CHANGE_NORMAL_HOST_CHECK_INTERVAL
|
48
|
-
CHANGE_NORMAL_SVC_CHECK_INTERVAL
|
49
|
-
CHANGE_RETRY_HOST_CHECK_INTERVAL
|
50
|
-
CHANGE_RETRY_SVC_CHECK_INTERVAL
|
51
|
-
CHANGE_SVC_CHECK_COMMAND
|
52
|
-
CHANGE_SVC_CHECK_TIMEPERIOD
|
53
|
-
CHANGE_SVC_EVENT_HANDLER
|
54
|
-
CHANGE_SVC_MODATTR
|
55
|
-
CHANGE_SVC_NOTIFICATION_TIMEPERIOD
|
56
|
-
DELAY_HOST_NOTIFICATION
|
57
|
-
DELAY_SVC_NOTIFICATION
|
58
|
-
DEL_ALL_HOST_COMMENTS
|
59
|
-
DEL_ALL_SVC_COMMENTS
|
60
|
-
DEL_HOST_COMMENT
|
61
|
-
DEL_HOST_DOWNTIME
|
62
|
-
DEL_SVC_COMMENT
|
63
|
-
DEL_SVC_DOWNTIME
|
64
|
-
DISABLE_ALL_NOTIFICATIONS_BEYOND_HOST
|
65
|
-
DISABLE_CONTACTGROUP_HOST_NOTIFICATIONS
|
66
|
-
DISABLE_CONTACTGROUP_SVC_NOTIFICATIONS
|
67
|
-
DISABLE_CONTACT_HOST_NOTIFICATIONS
|
68
|
-
DISABLE_CONTACT_SVC_NOTIFICATIONS
|
69
|
-
DISABLE_EVENT_HANDLERS
|
70
|
-
DISABLE_FAILURE_PREDICTION
|
71
|
-
DISABLE_FLAP_DETECTION
|
72
|
-
DISABLE_HOSTGROUP_HOST_CHECKS
|
73
|
-
DISABLE_HOSTGROUP_HOST_NOTIFICATIONS
|
74
|
-
DISABLE_HOSTGROUP_PASSIVE_HOST_CHECKS
|
75
|
-
DISABLE_HOSTGROUP_PASSIVE_SVC_CHECKS
|
76
|
-
DISABLE_HOSTGROUP_SVC_CHECKS
|
77
|
-
DISABLE_HOSTGROUP_SVC_NOTIFICATIONS
|
78
|
-
DISABLE_HOST_AND_CHILD_NOTIFICATIONS
|
79
|
-
DISABLE_HOST_CHECK
|
80
|
-
DISABLE_HOST_EVENT_HANDLER
|
81
|
-
DISABLE_HOST_FLAP_DETECTION
|
82
|
-
DISABLE_HOST_FRESHNESS_CHECKS
|
83
|
-
DISABLE_HOST_NOTIFICATIONS
|
84
|
-
DISABLE_HOST_SVC_CHECKS
|
85
|
-
DISABLE_HOST_SVC_NOTIFICATIONS
|
86
|
-
DISABLE_NOTIFICATIONS
|
87
|
-
DISABLE_PASSIVE_HOST_CHECKS
|
88
|
-
DISABLE_PASSIVE_SVC_CHECKS
|
89
|
-
DISABLE_PERFORMANCE_DATA
|
90
|
-
DISABLE_SERVICEGROUP_HOST_CHECKS
|
91
|
-
DISABLE_SERVICEGROUP_HOST_NOTIFICATIONS
|
92
|
-
DISABLE_SERVICEGROUP_PASSIVE_HOST_CHECKS
|
93
|
-
DISABLE_SERVICEGROUP_PASSIVE_SVC_CHECKS
|
94
|
-
DISABLE_SERVICEGROUP_SVC_CHECKS
|
95
|
-
DISABLE_SERVICEGROUP_SVC_NOTIFICATIONS
|
96
|
-
DISABLE_SERVICE_FLAP_DETECTION
|
97
|
-
DISABLE_SERVICE_FRESHNESS_CHECKS
|
98
|
-
DISABLE_SVC_CHECK
|
99
|
-
DISABLE_SVC_EVENT_HANDLER
|
100
|
-
DISABLE_SVC_FLAP_DETECTION
|
101
|
-
DISABLE_SVC_NOTIFICATIONS
|
102
|
-
ENABLE_ALL_NOTIFICATIONS_BEYOND_HOST
|
103
|
-
ENABLE_CONTACTGROUP_HOST_NOTIFICATIONS
|
104
|
-
ENABLE_CONTACTGROUP_SVC_NOTIFICATIONS
|
105
|
-
ENABLE_CONTACT_HOST_NOTIFICATIONS
|
106
|
-
ENABLE_CONTACT_SVC_NOTIFICATIONS
|
107
|
-
ENABLE_EVENT_HANDLERS
|
108
|
-
ENABLE_FAILURE_PREDICTION
|
109
|
-
ENABLE_FLAP_DETECTION
|
110
|
-
ENABLE_HOSTGROUP_HOST_CHECKS
|
111
|
-
ENABLE_HOSTGROUP_HOST_NOTIFICATIONS
|
112
|
-
ENABLE_HOSTGROUP_PASSIVE_HOST_CHECKS
|
113
|
-
ENABLE_HOSTGROUP_PASSIVE_SVC_CHECKS
|
114
|
-
ENABLE_HOSTGROUP_SVC_CHECKS
|
115
|
-
ENABLE_HOSTGROUP_SVC_NOTIFICATIONS
|
116
|
-
ENABLE_HOST_AND_CHILD_NOTIFICATIONS
|
117
|
-
ENABLE_HOST_CHECK
|
118
|
-
ENABLE_HOST_EVENT_HANDLER
|
119
|
-
ENABLE_HOST_FLAP_DETECTION
|
120
|
-
ENABLE_HOST_FRESHNESS_CHECKS
|
121
|
-
ENABLE_HOST_NOTIFICATIONS
|
122
|
-
ENABLE_HOST_SVC_CHECKS
|
123
|
-
ENABLE_HOST_SVC_NOTIFICATIONS
|
124
|
-
ENABLE_NOTIFICATIONS
|
125
|
-
ENABLE_PASSIVE_HOST_CHECKS
|
126
|
-
ENABLE_PASSIVE_SVC_CHECKS
|
127
|
-
ENABLE_PERFORMANCE_DATA
|
128
|
-
ENABLE_SERVICEGROUP_HOST_CHECKS
|
129
|
-
ENABLE_SERVICEGROUP_HOST_NOTIFICATIONS
|
130
|
-
ENABLE_SERVICEGROUP_PASSIVE_HOST_CHECKS
|
131
|
-
ENABLE_SERVICEGROUP_PASSIVE_SVC_CHECKS
|
132
|
-
ENABLE_SERVICEGROUP_SVC_CHECKS
|
133
|
-
ENABLE_SERVICEGROUP_SVC_NOTIFICATIONS
|
134
|
-
ENABLE_SERVICE_FRESHNESS_CHECKS
|
135
|
-
ENABLE_SVC_CHECK
|
136
|
-
ENABLE_SVC_EVENT_HANDLER
|
137
|
-
ENABLE_SVC_FLAP_DETECTION
|
138
|
-
ENABLE_SVC_NOTIFICATIONS
|
139
|
-
PROCESS_FILE
|
140
|
-
PROCESS_HOST_CHECK_RESULT
|
141
|
-
PROCESS_SERVICE_CHECK_RESULT
|
142
|
-
READ_STATE_INFORMATION
|
143
|
-
REMOVE_HOST_ACKNOWLEDGEMENT
|
144
|
-
REMOVE_SVC_ACKNOWLEDGEMENT
|
145
|
-
RESTART_PROGRAM
|
146
|
-
SAVE_STATE_INFORMATION
|
147
|
-
SCHEDULE_AND_PROPAGATE_HOST_DOWNTIME
|
148
|
-
SCHEDULE_AND_PROPAGATE_TRIGGERED_HOST_DOWNTIME
|
149
|
-
SCHEDULE_FORCED_HOST_CHECK
|
150
|
-
SCHEDULE_FORCED_HOST_SVC_CHECKS
|
151
|
-
SCHEDULE_FORCED_SVC_CHECK
|
152
|
-
SCHEDULE_HOSTGROUP_HOST_DOWNTIME
|
153
|
-
SCHEDULE_HOSTGROUP_SVC_DOWNTIME
|
154
|
-
SCHEDULE_HOST_CHECK
|
155
|
-
SCHEDULE_HOST_DOWNTIME
|
156
|
-
SCHEDULE_HOST_SVC_CHECKS
|
157
|
-
SCHEDULE_HOST_SVC_DOWNTIME
|
158
|
-
SCHEDULE_SERVICEGROUP_HOST_DOWNTIME
|
159
|
-
SCHEDULE_SERVICEGROUP_SVC_DOWNTIME
|
160
|
-
SCHEDULE_SVC_CHECK
|
161
|
-
SCHEDULE_SVC_DOWNTIME
|
162
|
-
SEND_CUSTOM_HOST_NOTIFICATION
|
163
|
-
SEND_CUSTOM_SVC_NOTIFICATION
|
164
|
-
SET_HOST_NOTIFICATION_NUMBER
|
165
|
-
SET_SVC_NOTIFICATION_NUMBER
|
166
|
-
SHUTDOWN_PROGRAM
|
167
|
-
START_ACCEPTING_PASSIVE_HOST_CHECKS
|
168
|
-
START_ACCEPTING_PASSIVE_SVC_CHECKS
|
169
|
-
START_EXECUTING_HOST_CHECKS
|
170
|
-
START_EXECUTING_SVC_CHECKS
|
171
|
-
START_OBSESSING_OVER_HOST
|
172
|
-
START_OBSESSING_OVER_HOST_CHECKS
|
173
|
-
START_OBSESSING_OVER_SVC
|
174
|
-
START_OBSESSING_OVER_SVC_CHECKS
|
175
|
-
STOP_ACCEPTING_PASSIVE_HOST_CHECKS
|
176
|
-
STOP_ACCEPTING_PASSIVE_SVC_CHECKS
|
177
|
-
STOP_EXECUTING_HOST_CHECKS
|
178
|
-
STOP_EXECUTING_SVC_CHECKS
|
179
|
-
STOP_OBSESSING_OVER_HOST
|
180
|
-
STOP_OBSESSING_OVER_HOST_CHECKS
|
181
|
-
STOP_OBSESSING_OVER_SVC
|
182
|
-
STOP_OBSESSING_OVER_SVC_CHECKS
|
26
|
+
:ACKNOWLEDGE_HOST_PROBLEM => %w{host_name sticky notify persistent author comment},
|
27
|
+
:ACKNOWLEDGE_SVC_PROBLEM => %w{host_name service_description sticky notify persistent author comment},
|
28
|
+
:ADD_HOST_COMMENT => %w{host_name persistent author comment},
|
29
|
+
:ADD_SVC_COMMENT => %w{host_name service_description persistent author comment},
|
30
|
+
:CHANGE_CONTACT_HOST_NOTIFICATION_TIMEPERIOD => %w{contact_name notification_timeperiod},
|
31
|
+
:CHANGE_CONTACT_MODATTR => %w{contact_name value},
|
32
|
+
:CHANGE_CONTACT_MODHATTR => %w{contact_name value},
|
33
|
+
:CHANGE_CONTACT_MODSATTR => %w{contact_name value},
|
34
|
+
:CHANGE_CONTACT_SVC_NOTIFICATION_TIMEPERIOD => %w{contact_name notification_timeperiod},
|
35
|
+
:CHANGE_CUSTOM_CONTACT_VAR => %w{contact_name varname varvalue},
|
36
|
+
:CHANGE_CUSTOM_HOST_VAR => %w{host_name varname varvalue},
|
37
|
+
:CHANGE_CUSTOM_SVC_VAR => %w{host_name service_description varname varvalue},
|
38
|
+
:CHANGE_GLOBAL_HOST_EVENT_HANDLER => %w{event_handler_command},
|
39
|
+
:CHANGE_GLOBAL_SVC_EVENT_HANDLER => %w{event_handler_command},
|
40
|
+
:CHANGE_HOST_CHECK_COMMAND => %w{host_name check_command},
|
41
|
+
:CHANGE_HOST_CHECK_TIMEPERIOD => %w{host_name check_timeperod},
|
42
|
+
:CHANGE_HOST_CHECK_TIMEPERIOD => %w{host_name timeperiod},
|
43
|
+
:CHANGE_HOST_EVENT_HANDLER => %w{host_name event_handler_command},
|
44
|
+
:CHANGE_HOST_MODATTR => %w{host_name value},
|
45
|
+
:CHANGE_MAX_HOST_CHECK_ATTEMPTS => %w{host_name check_attempts},
|
46
|
+
:CHANGE_MAX_SVC_CHECK_ATTEMPTS => %w{host_name service_description check_attempts},
|
47
|
+
:CHANGE_NORMAL_HOST_CHECK_INTERVAL => %w{host_name check_interval},
|
48
|
+
:CHANGE_NORMAL_SVC_CHECK_INTERVAL => %w{host_name service_description check_interval},
|
49
|
+
:CHANGE_RETRY_HOST_CHECK_INTERVAL => %w{host_name service_description check_interval},
|
50
|
+
:CHANGE_RETRY_SVC_CHECK_INTERVAL => %w{host_name service_description check_interval},
|
51
|
+
:CHANGE_SVC_CHECK_COMMAND => %w{host_name service_description check_command},
|
52
|
+
:CHANGE_SVC_CHECK_TIMEPERIOD => %w{host_name service_description check_timeperiod},
|
53
|
+
:CHANGE_SVC_EVENT_HANDLER => %w{host_name service_description event_handler_command},
|
54
|
+
:CHANGE_SVC_MODATTR => %w{host_name service_description value},
|
55
|
+
:CHANGE_SVC_NOTIFICATION_TIMEPERIOD => %w{host_name service_description notification_timeperiod},
|
56
|
+
:DELAY_HOST_NOTIFICATION => %w{host_name notification_time},
|
57
|
+
:DELAY_SVC_NOTIFICATION => %w{host_name service_description notification_time},
|
58
|
+
:DEL_ALL_HOST_COMMENTS => %w{host_name},
|
59
|
+
:DEL_ALL_SVC_COMMENTS => %w{host_name service_description},
|
60
|
+
:DEL_HOST_COMMENT => %w{comment_id},
|
61
|
+
:DEL_HOST_DOWNTIME => %w{downtime_id},
|
62
|
+
:DEL_SVC_COMMENT => %w{comment_id},
|
63
|
+
:DEL_SVC_DOWNTIME => %w{downtime_id},
|
64
|
+
:DISABLE_ALL_NOTIFICATIONS_BEYOND_HOST => %w{host_name},
|
65
|
+
:DISABLE_CONTACTGROUP_HOST_NOTIFICATIONS => %w{contactgroup_name},
|
66
|
+
:DISABLE_CONTACTGROUP_SVC_NOTIFICATIONS => %w{contactgroup_name},
|
67
|
+
:DISABLE_CONTACT_HOST_NOTIFICATIONS => %w{contact_name},
|
68
|
+
:DISABLE_CONTACT_SVC_NOTIFICATIONS => %w{contact_name},
|
69
|
+
:DISABLE_EVENT_HANDLERS => [],
|
70
|
+
:DISABLE_FAILURE_PREDICTION => [],
|
71
|
+
:DISABLE_FLAP_DETECTION => [],
|
72
|
+
:DISABLE_HOSTGROUP_HOST_CHECKS => %w{hostgroup_name},
|
73
|
+
:DISABLE_HOSTGROUP_HOST_NOTIFICATIONS => %w{hostgroup_name},
|
74
|
+
:DISABLE_HOSTGROUP_PASSIVE_HOST_CHECKS => %w{hostgroup_name},
|
75
|
+
:DISABLE_HOSTGROUP_PASSIVE_SVC_CHECKS => %w{hostgroup_name},
|
76
|
+
:DISABLE_HOSTGROUP_SVC_CHECKS => %w{hostgroup_name},
|
77
|
+
:DISABLE_HOSTGROUP_SVC_NOTIFICATIONS => %w{hostgroup_name},
|
78
|
+
:DISABLE_HOST_AND_CHILD_NOTIFICATIONS => %w{host_name},
|
79
|
+
:DISABLE_HOST_CHECK => %w{host_name},
|
80
|
+
:DISABLE_HOST_EVENT_HANDLER => %w{host_name},
|
81
|
+
:DISABLE_HOST_FLAP_DETECTION => %w{host_name},
|
82
|
+
:DISABLE_HOST_FRESHNESS_CHECKS => [],
|
83
|
+
:DISABLE_HOST_NOTIFICATIONS => %w{host_name},
|
84
|
+
:DISABLE_HOST_SVC_CHECKS => %w{host_name},
|
85
|
+
:DISABLE_HOST_SVC_NOTIFICATIONS => %w{host_name},
|
86
|
+
:DISABLE_NOTIFICATIONS => [],
|
87
|
+
:DISABLE_PASSIVE_HOST_CHECKS => %w{host_name},
|
88
|
+
:DISABLE_PASSIVE_SVC_CHECKS => %w{host_name service_description},
|
89
|
+
:DISABLE_PERFORMANCE_DATA => [],
|
90
|
+
:DISABLE_SERVICEGROUP_HOST_CHECKS => %w{servicegroup_name},
|
91
|
+
:DISABLE_SERVICEGROUP_HOST_NOTIFICATIONS => %w{servicegroup_name},
|
92
|
+
:DISABLE_SERVICEGROUP_PASSIVE_HOST_CHECKS => %w{servicegroup_name},
|
93
|
+
:DISABLE_SERVICEGROUP_PASSIVE_SVC_CHECKS => %w{servicegroup_name},
|
94
|
+
:DISABLE_SERVICEGROUP_SVC_CHECKS => %w{servicegroup_name},
|
95
|
+
:DISABLE_SERVICEGROUP_SVC_NOTIFICATIONS => %w{servicegroup_name},
|
96
|
+
:DISABLE_SERVICE_FLAP_DETECTION => %w{host_name service_description},
|
97
|
+
:DISABLE_SERVICE_FRESHNESS_CHECKS => [],
|
98
|
+
:DISABLE_SVC_CHECK => %w{host_name service_description},
|
99
|
+
:DISABLE_SVC_EVENT_HANDLER => %w{host_name service_description},
|
100
|
+
:DISABLE_SVC_FLAP_DETECTION => %w{host_name service_description},
|
101
|
+
:DISABLE_SVC_NOTIFICATIONS => %w{host_name service_description},
|
102
|
+
:ENABLE_ALL_NOTIFICATIONS_BEYOND_HOST => %w{host_name},
|
103
|
+
:ENABLE_CONTACTGROUP_HOST_NOTIFICATIONS => %w{contactgroup_name},
|
104
|
+
:ENABLE_CONTACTGROUP_SVC_NOTIFICATIONS => %w{contactgroup_name},
|
105
|
+
:ENABLE_CONTACT_HOST_NOTIFICATIONS => %w{contact_name},
|
106
|
+
:ENABLE_CONTACT_SVC_NOTIFICATIONS => %w{contact_name},
|
107
|
+
:ENABLE_EVENT_HANDLERS => [],
|
108
|
+
:ENABLE_FAILURE_PREDICTION => [],
|
109
|
+
:ENABLE_FLAP_DETECTION => [],
|
110
|
+
:ENABLE_HOSTGROUP_HOST_CHECKS => %w{hostgroup_name},
|
111
|
+
:ENABLE_HOSTGROUP_HOST_NOTIFICATIONS => %w{hostgroup_name},
|
112
|
+
:ENABLE_HOSTGROUP_PASSIVE_HOST_CHECKS => %w{hostgroup_name},
|
113
|
+
:ENABLE_HOSTGROUP_PASSIVE_SVC_CHECKS => %w{hostgroup_name},
|
114
|
+
:ENABLE_HOSTGROUP_SVC_CHECKS => %w{hostgroup_name},
|
115
|
+
:ENABLE_HOSTGROUP_SVC_NOTIFICATIONS => %w{hostgroup_name},
|
116
|
+
:ENABLE_HOST_AND_CHILD_NOTIFICATIONS => %w{host_name},
|
117
|
+
:ENABLE_HOST_CHECK => %w{host_name},
|
118
|
+
:ENABLE_HOST_EVENT_HANDLER => %w{host_name},
|
119
|
+
:ENABLE_HOST_FLAP_DETECTION => %w{host_name},
|
120
|
+
:ENABLE_HOST_FRESHNESS_CHECKS => [],
|
121
|
+
:ENABLE_HOST_NOTIFICATIONS => %w{host_name},
|
122
|
+
:ENABLE_HOST_SVC_CHECKS => %w{host_name},
|
123
|
+
:ENABLE_HOST_SVC_NOTIFICATIONS => %w{host_name},
|
124
|
+
:ENABLE_NOTIFICATIONS => [],
|
125
|
+
:ENABLE_PASSIVE_HOST_CHECKS => %w{host_name},
|
126
|
+
:ENABLE_PASSIVE_SVC_CHECKS => %w{host_name service_description},
|
127
|
+
:ENABLE_PERFORMANCE_DATA => [],
|
128
|
+
:ENABLE_SERVICEGROUP_HOST_CHECKS => %w{servicegroup_name},
|
129
|
+
:ENABLE_SERVICEGROUP_HOST_NOTIFICATIONS => %w{servicegroup_name},
|
130
|
+
:ENABLE_SERVICEGROUP_PASSIVE_HOST_CHECKS => %w{servicegroup_name},
|
131
|
+
:ENABLE_SERVICEGROUP_PASSIVE_SVC_CHECKS => %w{servicegroup_name},
|
132
|
+
:ENABLE_SERVICEGROUP_SVC_CHECKS => %w{servicegroup_name},
|
133
|
+
:ENABLE_SERVICEGROUP_SVC_NOTIFICATIONS => %w{servicegroup_name},
|
134
|
+
:ENABLE_SERVICE_FRESHNESS_CHECKS => [],
|
135
|
+
:ENABLE_SVC_CHECK => %w{host_name service_description},
|
136
|
+
:ENABLE_SVC_EVENT_HANDLER => %w{host_name service_description},
|
137
|
+
:ENABLE_SVC_FLAP_DETECTION => %w{host_name service_description},
|
138
|
+
:ENABLE_SVC_NOTIFICATIONS => %w{host_name service_description},
|
139
|
+
:PROCESS_FILE => %w{file_name delete},
|
140
|
+
:PROCESS_HOST_CHECK_RESULT => %w{host_name status_code plugin_output},
|
141
|
+
:PROCESS_SERVICE_CHECK_RESULT => %w{host_name service_description return_code plugin_output},
|
142
|
+
:READ_STATE_INFORMATION => [],
|
143
|
+
:REMOVE_HOST_ACKNOWLEDGEMENT => %w{host_name},
|
144
|
+
:REMOVE_SVC_ACKNOWLEDGEMENT => %w{host_name service_description},
|
145
|
+
:RESTART_PROGRAM => [],
|
146
|
+
:SAVE_STATE_INFORMATION => [],
|
147
|
+
:SCHEDULE_AND_PROPAGATE_HOST_DOWNTIME => %w{host_name start_time end_time fixed trigger_id duration author comment},
|
148
|
+
:SCHEDULE_AND_PROPAGATE_TRIGGERED_HOST_DOWNTIME => %w{host_name start_time end_time fixed trigger_id duration author comment},
|
149
|
+
:SCHEDULE_FORCED_HOST_CHECK => %w{host_name check_time},
|
150
|
+
:SCHEDULE_FORCED_HOST_SVC_CHECKS => %w{host_name check_time},
|
151
|
+
:SCHEDULE_FORCED_SVC_CHECK => %w{host_name service_description check_time},
|
152
|
+
:SCHEDULE_HOSTGROUP_HOST_DOWNTIME => %w{hostgroup_name start_time end_time fixed trigger_id duration author comment},
|
153
|
+
:SCHEDULE_HOSTGROUP_SVC_DOWNTIME => %w{hostgroup_name start_time end_time fixed trigger_id duration author comment},
|
154
|
+
:SCHEDULE_HOST_CHECK => %w{host_name check_time},
|
155
|
+
:SCHEDULE_HOST_DOWNTIME => %w{host_name start_time end_time fixed trigger_id duration author comment},
|
156
|
+
:SCHEDULE_HOST_SVC_CHECKS => %w{host_name check_time},
|
157
|
+
:SCHEDULE_HOST_SVC_DOWNTIME => %w{host_name start_time end_time fixed trigger_id duration author comment},
|
158
|
+
:SCHEDULE_SERVICEGROUP_HOST_DOWNTIME => %w{servicegroup_name start_time end_time fixed trigger_id duration author comment},
|
159
|
+
:SCHEDULE_SERVICEGROUP_SVC_DOWNTIME => %w{servicegroup_name start_time end_time fixed trigger_id duration author comment},
|
160
|
+
:SCHEDULE_SVC_CHECK => %w{host_name service_description check_time},
|
161
|
+
:SCHEDULE_SVC_DOWNTIME => %w{host_name service_desription start_time end_time fixed trigger_id duration author comment},
|
162
|
+
:SEND_CUSTOM_HOST_NOTIFICATION => %w{host_name options author comment},
|
163
|
+
:SEND_CUSTOM_SVC_NOTIFICATION => %w{host_name service_description options author comment},
|
164
|
+
:SET_HOST_NOTIFICATION_NUMBER => %w{host_name notification_number},
|
165
|
+
:SET_SVC_NOTIFICATION_NUMBER => %w{host_name service_description notification_number},
|
166
|
+
:SHUTDOWN_PROGRAM => [],
|
167
|
+
:START_ACCEPTING_PASSIVE_HOST_CHECKS => [],
|
168
|
+
:START_ACCEPTING_PASSIVE_SVC_CHECKS => [],
|
169
|
+
:START_EXECUTING_HOST_CHECKS => [],
|
170
|
+
:START_EXECUTING_SVC_CHECKS => [],
|
171
|
+
:START_OBSESSING_OVER_HOST => %w{host_name},
|
172
|
+
:START_OBSESSING_OVER_HOST_CHECKS => [],
|
173
|
+
:START_OBSESSING_OVER_SVC => %w{host_name service_description},
|
174
|
+
:START_OBSESSING_OVER_SVC_CHECKS => [],
|
175
|
+
:STOP_ACCEPTING_PASSIVE_HOST_CHECKS => [],
|
176
|
+
:STOP_ACCEPTING_PASSIVE_SVC_CHECKS => [],
|
177
|
+
:STOP_EXECUTING_HOST_CHECKS => [],
|
178
|
+
:STOP_EXECUTING_SVC_CHECKS => [],
|
179
|
+
:STOP_OBSESSING_OVER_HOST => %w{host_name},
|
180
|
+
:STOP_OBSESSING_OVER_HOST_CHECKS => [],
|
181
|
+
:STOP_OBSESSING_OVER_SVC => %w{host_name service_description},
|
182
|
+
:STOP_OBSESSING_OVER_SVC_CHECKS => []
|
183
183
|
}.freeze
|
184
184
|
end
|
185
185
|
end
|
data/lib/nagios/objects.rb
CHANGED
@@ -101,6 +101,17 @@ Example of a parsed object:
|
|
101
101
|
nagios.contactgroup
|
102
102
|
=> {"admins"=>{:contactgroup_name=>"admins", :alias=>"Nagios Administrators", :members=>"root"}}
|
103
103
|
|
104
|
+
Services are a bit different from other objects, since they are
|
105
|
+
related to hosts, all host's services are nested under hostname, as:
|
106
|
+
|
107
|
+
nagios.service =>
|
108
|
+
{"airport"=>
|
109
|
+
{"PING"=>
|
110
|
+
{ :host_name=>"airport",
|
111
|
+
:service_description=>"PING",
|
112
|
+
|
113
|
+
|
114
|
+
|
104
115
|
=== Convenience methods
|
105
116
|
|
106
117
|
Method parse creates helper methods for every type of object after
|
@@ -124,7 +135,18 @@ parsing. Same property can be accessed either using Hash @objects
|
|
124
135
|
# Process it. Each block type has line <type>_name in the definition: host_name, command_name
|
125
136
|
#
|
126
137
|
@objects[handler] ||= {}
|
127
|
-
|
138
|
+
case handler
|
139
|
+
when :service
|
140
|
+
#
|
141
|
+
# Service has service_description, not name. Nest service
|
142
|
+
# hashes under hostnames.
|
143
|
+
#
|
144
|
+
next unless block[:host_name]
|
145
|
+
@objects[handler][block[:host_name]] ||= { }
|
146
|
+
@objects[handler][block[:host_name]][block["#{handler.to_s}_description".to_sym]] = block
|
147
|
+
else
|
148
|
+
@objects[handler][block["#{handler.to_s}_name".to_sym]] = block
|
149
|
+
end
|
128
150
|
block = { }
|
129
151
|
when line =~ /^\s*(\w+)\s+([^\{\}]+)$/ # Build Hash from key-value pairs like: "max_check_attempts 10"
|
130
152
|
block[$1.to_sym] = $2.strip
|
@@ -188,3 +210,4 @@ parsing. Same property can be accessed either using Hash @objects
|
|
188
210
|
end
|
189
211
|
end
|
190
212
|
|
213
|
+
|
data/lib/nagios/status.rb
CHANGED
@@ -23,7 +23,7 @@ module Nagios
|
|
23
23
|
|
24
24
|
@status, handler, blocklines = {'hosts' => {}}, '', []
|
25
25
|
|
26
|
-
File.readlines(path).each do |line|
|
26
|
+
File.readlines(path, :encoding => 'iso-8859-1').each do |line|
|
27
27
|
|
28
28
|
# start of new sections
|
29
29
|
if line =~ /(\w+) \{/
|
@@ -193,14 +193,14 @@ module Nagios
|
|
193
193
|
|
194
194
|
# Figures out the service name from a block in a nagios status file
|
195
195
|
def get_service_name(lines)
|
196
|
-
if s = lines.grep(/\s+service_description=(\
|
196
|
+
if s = lines.grep(/\s+service_description=(\S+)/).first
|
197
197
|
if s =~ /service_description=(.+)$/
|
198
198
|
service = $1
|
199
199
|
else
|
200
200
|
raise("Cant't parse service in block: #{s}")
|
201
201
|
end
|
202
202
|
else
|
203
|
-
raise("Cant't find a
|
203
|
+
raise("Cant't find a service in block")
|
204
204
|
end
|
205
205
|
|
206
206
|
service
|
data/ruby-nagios.gemspec
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-nagios
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 2
|
10
|
+
version: 0.2.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- R.I.Pienaar
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2014-05-25 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|