diff options
author | Lorenz Kästle <12514511+RincewindsHat@users.noreply.github.com> | 2025-03-12 11:16:04 +0100 |
---|---|---|
committer | Lorenz Kästle <12514511+RincewindsHat@users.noreply.github.com> | 2025-03-12 11:16:04 +0100 |
commit | 56ad762bd3bd59e5dac1ecb0e87c0b69f4ebaffc (patch) | |
tree | ae506f1eae12ce5bcb360110860ebbccbfc48ad2 /plugins | |
parent | c2ff4da7866acc9196642bf32c2891f205f51a9b (diff) | |
download | monitoring-plugins-56ad762bd3bd59e5dac1ecb0e87c0b69f4ebaffc.tar.gz |
Remove check_overcr
This commit removes the plugin check_overcr and all
related files and parts of files.
OverCR seems to be dead and I have never seen a mention of
an active usage anywhere.
The website still does exist, but the activity seems to be
limited.
Carrying check_overcr forward seems to be a burden without a
purpose and more of an opportunity to remove some code.
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/Makefile.am | 3 | ||||
-rw-r--r-- | plugins/check_overcr.c | 417 |
2 files changed, 1 insertions, 419 deletions
diff --git a/plugins/Makefile.am b/plugins/Makefile.am index 9ea6e85e..6c582a15 100644 --- a/plugins/Makefile.am +++ b/plugins/Makefile.am | |||
@@ -27,7 +27,7 @@ MATHLIBS = @MATHLIBS@ | |||
27 | #AM_CFLAGS = -Wall | 27 | #AM_CFLAGS = -Wall |
28 | 28 | ||
29 | libexec_PROGRAMS = check_apt check_cluster check_disk check_dummy check_http check_load \ | 29 | libexec_PROGRAMS = check_apt check_cluster check_disk check_dummy check_http check_load \ |
30 | check_mrtg check_mrtgtraf check_ntp check_ntp_peer check_nwstat check_overcr check_ping \ | 30 | check_mrtg check_mrtgtraf check_ntp check_ntp_peer check_nwstat check_ping \ |
31 | check_real check_smtp check_ssh check_tcp check_time check_ntp_time \ | 31 | check_real check_smtp check_ssh check_tcp check_time check_ntp_time \ |
32 | check_ups check_users negate \ | 32 | check_ups check_users negate \ |
33 | urlize @EXTRAS@ | 33 | urlize @EXTRAS@ |
@@ -132,7 +132,6 @@ check_nt_LDADD = $(NETLIBS) | |||
132 | check_ntp_LDADD = $(NETLIBS) $(MATHLIBS) | 132 | check_ntp_LDADD = $(NETLIBS) $(MATHLIBS) |
133 | check_ntp_peer_LDADD = $(NETLIBS) $(MATHLIBS) | 133 | check_ntp_peer_LDADD = $(NETLIBS) $(MATHLIBS) |
134 | check_nwstat_LDADD = $(NETLIBS) | 134 | check_nwstat_LDADD = $(NETLIBS) |
135 | check_overcr_LDADD = $(NETLIBS) | ||
136 | check_pgsql_LDADD = $(NETLIBS) $(PGLIBS) | 135 | check_pgsql_LDADD = $(NETLIBS) $(PGLIBS) |
137 | check_ping_LDADD = $(NETLIBS) | 136 | check_ping_LDADD = $(NETLIBS) |
138 | check_procs_LDADD = $(BASEOBJS) | 137 | check_procs_LDADD = $(BASEOBJS) |
diff --git a/plugins/check_overcr.c b/plugins/check_overcr.c deleted file mode 100644 index 599540b7..00000000 --- a/plugins/check_overcr.c +++ /dev/null | |||
@@ -1,417 +0,0 @@ | |||
1 | /***************************************************************************** | ||
2 | * | ||
3 | * Monitoring check_overcr plugin | ||
4 | * | ||
5 | * License: GPL | ||
6 | * Copyright (c) 2000-2024 Monitoring Plugins Development Team | ||
7 | * | ||
8 | * Description: | ||
9 | * | ||
10 | * This file contains the check_overcr plugin | ||
11 | * | ||
12 | * This plugin attempts to contact the Over-CR collector daemon running on the | ||
13 | * remote UNIX server in order to gather the requested system information. | ||
14 | * | ||
15 | * | ||
16 | * This program is free software: you can redistribute it and/or modify | ||
17 | * it under the terms of the GNU General Public License as published by | ||
18 | * the Free Software Foundation, either version 3 of the License, or | ||
19 | * (at your option) any later version. | ||
20 | * | ||
21 | * This program is distributed in the hope that it will be useful, | ||
22 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
23 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
24 | * GNU General Public License for more details. | ||
25 | * | ||
26 | * You should have received a copy of the GNU General Public License | ||
27 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
28 | * | ||
29 | * | ||
30 | *****************************************************************************/ | ||
31 | |||
32 | const char *progname = "check_overcr"; | ||
33 | const char *copyright = "2000-2024"; | ||
34 | const char *email = "devel@monitoring-plugins.org"; | ||
35 | |||
36 | #include "common.h" | ||
37 | #include "netutils.h" | ||
38 | #include "utils.h" | ||
39 | |||
40 | enum checkvar { | ||
41 | NONE, | ||
42 | LOAD1, | ||
43 | LOAD5, | ||
44 | LOAD15, | ||
45 | DPU, | ||
46 | PROCS, | ||
47 | NETSTAT, | ||
48 | UPTIME | ||
49 | }; | ||
50 | |||
51 | enum { | ||
52 | PORT = 2000 | ||
53 | }; | ||
54 | |||
55 | static char *server_address = NULL; | ||
56 | static int server_port = PORT; | ||
57 | static double warning_value = 0L; | ||
58 | static double critical_value = 0L; | ||
59 | static bool check_warning_value = false; | ||
60 | static bool check_critical_value = false; | ||
61 | static enum checkvar vars_to_check = NONE; | ||
62 | |||
63 | static int netstat_port = 0; | ||
64 | static char *disk_name = NULL; | ||
65 | static char *process_name = NULL; | ||
66 | static char send_buffer[MAX_INPUT_BUFFER]; | ||
67 | |||
68 | static int process_arguments(int, char **); | ||
69 | void print_usage(void); | ||
70 | static void print_help(void); | ||
71 | |||
72 | int main(int argc, char **argv) { | ||
73 | int result = STATE_UNKNOWN; | ||
74 | char recv_buffer[MAX_INPUT_BUFFER]; | ||
75 | char temp_buffer[MAX_INPUT_BUFFER]; | ||
76 | char *temp_ptr = NULL; | ||
77 | bool found_disk = false; | ||
78 | unsigned long percent_used_disk_space = 100; | ||
79 | double load; | ||
80 | double load_1min; | ||
81 | double load_5min; | ||
82 | double load_15min; | ||
83 | int port_connections = 0; | ||
84 | int processes = 0; | ||
85 | double uptime_raw_hours; | ||
86 | int uptime_raw_minutes = 0; | ||
87 | int uptime_days = 0; | ||
88 | int uptime_hours = 0; | ||
89 | int uptime_minutes = 0; | ||
90 | |||
91 | setlocale(LC_ALL, ""); | ||
92 | bindtextdomain(PACKAGE, LOCALEDIR); | ||
93 | textdomain(PACKAGE); | ||
94 | |||
95 | /* Parse extra opts if any */ | ||
96 | argv = np_extra_opts(&argc, argv, progname); | ||
97 | |||
98 | if (process_arguments(argc, argv) == ERROR) | ||
99 | usage4(_("Could not parse arguments")); | ||
100 | |||
101 | /* initialize alarm signal handling */ | ||
102 | signal(SIGALRM, socket_timeout_alarm_handler); | ||
103 | |||
104 | /* set socket timeout */ | ||
105 | alarm(socket_timeout); | ||
106 | |||
107 | result = process_tcp_request2(server_address, server_port, send_buffer, recv_buffer, sizeof(recv_buffer)); | ||
108 | |||
109 | switch (vars_to_check) { | ||
110 | |||
111 | case LOAD1: | ||
112 | case LOAD5: | ||
113 | case LOAD15: | ||
114 | |||
115 | if (result != STATE_OK) | ||
116 | die(result, _("Unknown error fetching load data\n")); | ||
117 | |||
118 | temp_ptr = (char *)strtok(recv_buffer, "\r\n"); | ||
119 | if (temp_ptr == NULL) | ||
120 | die(STATE_CRITICAL, _("Invalid response from server - no load information\n")); | ||
121 | else | ||
122 | load_1min = strtod(temp_ptr, NULL); | ||
123 | |||
124 | temp_ptr = (char *)strtok(NULL, "\r\n"); | ||
125 | if (temp_ptr == NULL) | ||
126 | die(STATE_CRITICAL, _("Invalid response from server after load 1\n")); | ||
127 | else | ||
128 | load_5min = strtod(temp_ptr, NULL); | ||
129 | |||
130 | temp_ptr = (char *)strtok(NULL, "\r\n"); | ||
131 | if (temp_ptr == NULL) | ||
132 | die(STATE_CRITICAL, _("Invalid response from server after load 5\n")); | ||
133 | else | ||
134 | load_15min = strtod(temp_ptr, NULL); | ||
135 | |||
136 | switch (vars_to_check) { | ||
137 | case LOAD1: | ||
138 | strcpy(temp_buffer, "1"); | ||
139 | load = load_1min; | ||
140 | break; | ||
141 | case LOAD5: | ||
142 | strcpy(temp_buffer, "5"); | ||
143 | load = load_5min; | ||
144 | break; | ||
145 | default: | ||
146 | strcpy(temp_buffer, "15"); | ||
147 | load = load_15min; | ||
148 | break; | ||
149 | } | ||
150 | |||
151 | if (check_critical_value && (load >= critical_value)) | ||
152 | result = STATE_CRITICAL; | ||
153 | else if (check_warning_value && (load >= warning_value)) | ||
154 | result = STATE_WARNING; | ||
155 | |||
156 | die(result, _("Load %s - %s-min load average = %0.2f"), state_text(result), temp_buffer, load); | ||
157 | |||
158 | break; | ||
159 | |||
160 | case DPU: | ||
161 | |||
162 | if (result != STATE_OK) | ||
163 | die(result, _("Unknown error fetching disk data\n")); | ||
164 | |||
165 | for (temp_ptr = (char *)strtok(recv_buffer, " "); temp_ptr != NULL; temp_ptr = (char *)strtok(NULL, " ")) { | ||
166 | |||
167 | if (!strcmp(temp_ptr, disk_name)) { | ||
168 | found_disk = true; | ||
169 | temp_ptr = (char *)strtok(NULL, "%"); | ||
170 | if (temp_ptr == NULL) | ||
171 | die(STATE_CRITICAL, _("Invalid response from server\n")); | ||
172 | else | ||
173 | percent_used_disk_space = strtoul(temp_ptr, NULL, 10); | ||
174 | break; | ||
175 | } | ||
176 | |||
177 | temp_ptr = (char *)strtok(NULL, "\r\n"); | ||
178 | } | ||
179 | |||
180 | /* error if we couldn't find the info for the disk */ | ||
181 | if (!found_disk) | ||
182 | die(STATE_CRITICAL, "CRITICAL - Disk '%s' non-existent or not mounted", disk_name); | ||
183 | |||
184 | if (check_critical_value && (percent_used_disk_space >= critical_value)) | ||
185 | result = STATE_CRITICAL; | ||
186 | else if (check_warning_value && (percent_used_disk_space >= warning_value)) | ||
187 | result = STATE_WARNING; | ||
188 | |||
189 | die(result, "Disk %s - %lu%% used on %s", state_text(result), percent_used_disk_space, disk_name); | ||
190 | |||
191 | break; | ||
192 | |||
193 | case NETSTAT: | ||
194 | |||
195 | if (result != STATE_OK) | ||
196 | die(result, _("Unknown error fetching network status\n")); | ||
197 | else | ||
198 | port_connections = strtod(recv_buffer, NULL); | ||
199 | |||
200 | if (check_critical_value && (port_connections >= critical_value)) | ||
201 | result = STATE_CRITICAL; | ||
202 | else if (check_warning_value && (port_connections >= warning_value)) | ||
203 | result = STATE_WARNING; | ||
204 | |||
205 | die(result, _("Net %s - %d connection%s on port %d"), state_text(result), port_connections, (port_connections == 1) ? "" : "s", | ||
206 | netstat_port); | ||
207 | |||
208 | break; | ||
209 | |||
210 | case PROCS: | ||
211 | |||
212 | if (result != STATE_OK) | ||
213 | die(result, _("Unknown error fetching process status\n")); | ||
214 | |||
215 | temp_ptr = (char *)strtok(recv_buffer, "("); | ||
216 | if (temp_ptr == NULL) | ||
217 | die(STATE_CRITICAL, _("Invalid response from server\n")); | ||
218 | |||
219 | temp_ptr = (char *)strtok(NULL, ")"); | ||
220 | if (temp_ptr == NULL) | ||
221 | die(STATE_CRITICAL, _("Invalid response from server\n")); | ||
222 | else | ||
223 | processes = strtod(temp_ptr, NULL); | ||
224 | |||
225 | if (check_critical_value && (processes >= critical_value)) | ||
226 | result = STATE_CRITICAL; | ||
227 | else if (check_warning_value && (processes >= warning_value)) | ||
228 | result = STATE_WARNING; | ||
229 | |||
230 | die(result, _("Process %s - %d instance%s of %s running"), state_text(result), processes, (processes == 1) ? "" : "s", | ||
231 | process_name); | ||
232 | break; | ||
233 | |||
234 | case UPTIME: | ||
235 | |||
236 | if (result != STATE_OK) | ||
237 | return result; | ||
238 | |||
239 | uptime_raw_hours = strtod(recv_buffer, NULL); | ||
240 | uptime_raw_minutes = (unsigned long)(uptime_raw_hours * 60.0); | ||
241 | |||
242 | if (check_critical_value && (uptime_raw_minutes <= critical_value)) | ||
243 | result = STATE_CRITICAL; | ||
244 | else if (check_warning_value && (uptime_raw_minutes <= warning_value)) | ||
245 | result = STATE_WARNING; | ||
246 | |||
247 | uptime_days = uptime_raw_minutes / 1440; | ||
248 | uptime_raw_minutes %= 1440; | ||
249 | uptime_hours = uptime_raw_minutes / 60; | ||
250 | uptime_raw_minutes %= 60; | ||
251 | uptime_minutes = uptime_raw_minutes; | ||
252 | |||
253 | die(result, _("Uptime %s - Up %d days %d hours %d minutes"), state_text(result), uptime_days, uptime_hours, uptime_minutes); | ||
254 | break; | ||
255 | |||
256 | default: | ||
257 | die(STATE_UNKNOWN, _("Nothing to check!\n")); | ||
258 | break; | ||
259 | } | ||
260 | } | ||
261 | |||
262 | /* process command-line arguments */ | ||
263 | int process_arguments(int argc, char **argv) { | ||
264 | int c; | ||
265 | |||
266 | int option = 0; | ||
267 | static struct option longopts[] = { | ||
268 | {"port", required_argument, 0, 'p'}, {"timeout", required_argument, 0, 't'}, {"critical", required_argument, 0, 'c'}, | ||
269 | {"warning", required_argument, 0, 'w'}, {"variable", required_argument, 0, 'v'}, {"hostname", required_argument, 0, 'H'}, | ||
270 | {"version", no_argument, 0, 'V'}, {"help", no_argument, 0, 'h'}, {0, 0, 0, 0}}; | ||
271 | |||
272 | /* no options were supplied */ | ||
273 | if (argc < 2) | ||
274 | return ERROR; | ||
275 | |||
276 | /* backwards compatibility */ | ||
277 | if (!is_option(argv[1])) { | ||
278 | server_address = argv[1]; | ||
279 | argv[1] = argv[0]; | ||
280 | argv = &argv[1]; | ||
281 | argc--; | ||
282 | } | ||
283 | |||
284 | for (c = 1; c < argc; c++) { | ||
285 | if (strcmp("-to", argv[c]) == 0) | ||
286 | strcpy(argv[c], "-t"); | ||
287 | else if (strcmp("-wv", argv[c]) == 0) | ||
288 | strcpy(argv[c], "-w"); | ||
289 | else if (strcmp("-cv", argv[c]) == 0) | ||
290 | strcpy(argv[c], "-c"); | ||
291 | } | ||
292 | |||
293 | while (1) { | ||
294 | c = getopt_long(argc, argv, "+hVH:t:c:w:p:v:", longopts, &option); | ||
295 | |||
296 | if (c == -1 || c == EOF || c == 1) | ||
297 | break; | ||
298 | |||
299 | switch (c) { | ||
300 | case '?': /* print short usage statement if args not parsable */ | ||
301 | usage5(); | ||
302 | case 'h': /* help */ | ||
303 | print_help(); | ||
304 | exit(STATE_UNKNOWN); | ||
305 | case 'V': /* version */ | ||
306 | print_revision(progname, NP_VERSION); | ||
307 | exit(STATE_UNKNOWN); | ||
308 | case 'H': /* hostname */ | ||
309 | server_address = optarg; | ||
310 | break; | ||
311 | case 'p': /* port */ | ||
312 | if (is_intnonneg(optarg)) | ||
313 | server_port = atoi(optarg); | ||
314 | else | ||
315 | die(STATE_UNKNOWN, _("Server port an integer\n")); | ||
316 | break; | ||
317 | case 'v': /* variable */ | ||
318 | if (strcmp(optarg, "LOAD") == 0) { | ||
319 | strcpy(send_buffer, "LOAD\r\nQUIT\r\n"); | ||
320 | if (strcmp(optarg, "LOAD1") == 0) | ||
321 | vars_to_check = LOAD1; | ||
322 | else if (strcmp(optarg, "LOAD5") == 0) | ||
323 | vars_to_check = LOAD5; | ||
324 | else if (strcmp(optarg, "LOAD15") == 0) | ||
325 | vars_to_check = LOAD15; | ||
326 | } else if (strcmp(optarg, "UPTIME") == 0) { | ||
327 | vars_to_check = UPTIME; | ||
328 | strcpy(send_buffer, "UPTIME\r\n"); | ||
329 | } else if (strstr(optarg, "PROC") == optarg) { | ||
330 | vars_to_check = PROCS; | ||
331 | process_name = strscpy(process_name, optarg + 4); | ||
332 | sprintf(send_buffer, "PROCESS %s\r\n", process_name); | ||
333 | } else if (strstr(optarg, "NET") == optarg) { | ||
334 | vars_to_check = NETSTAT; | ||
335 | netstat_port = atoi(optarg + 3); | ||
336 | sprintf(send_buffer, "NETSTAT %d\r\n", netstat_port); | ||
337 | } else if (strstr(optarg, "DPU") == optarg) { | ||
338 | vars_to_check = DPU; | ||
339 | strcpy(send_buffer, "DISKSPACE\r\n"); | ||
340 | disk_name = strscpy(disk_name, optarg + 3); | ||
341 | } else | ||
342 | return ERROR; | ||
343 | break; | ||
344 | case 'w': /* warning threshold */ | ||
345 | warning_value = strtoul(optarg, NULL, 10); | ||
346 | check_warning_value = true; | ||
347 | break; | ||
348 | case 'c': /* critical threshold */ | ||
349 | critical_value = strtoul(optarg, NULL, 10); | ||
350 | check_critical_value = true; | ||
351 | break; | ||
352 | case 't': /* timeout */ | ||
353 | socket_timeout = atoi(optarg); | ||
354 | if (socket_timeout <= 0) | ||
355 | return ERROR; | ||
356 | } | ||
357 | } | ||
358 | return OK; | ||
359 | } | ||
360 | |||
361 | void print_help(void) { | ||
362 | char *myport; | ||
363 | xasprintf(&myport, "%d", PORT); | ||
364 | |||
365 | print_revision(progname, NP_VERSION); | ||
366 | |||
367 | printf("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>\n"); | ||
368 | printf(COPYRIGHT, copyright, email); | ||
369 | |||
370 | printf("%s\n", _("This plugin attempts to contact the Over-CR collector daemon running on the")); | ||
371 | printf("%s\n", _("remote UNIX server in order to gather the requested system information.")); | ||
372 | |||
373 | printf("\n\n"); | ||
374 | |||
375 | print_usage(); | ||
376 | |||
377 | printf(UT_HELP_VRSN); | ||
378 | printf(UT_EXTRA_OPTS); | ||
379 | |||
380 | printf(UT_HOST_PORT, 'p', myport); | ||
381 | |||
382 | printf(" %s\n", "-w, --warning=INTEGER"); | ||
383 | printf(" %s\n", _("Threshold which will result in a warning status")); | ||
384 | printf(" %s\n", "-c, --critical=INTEGER"); | ||
385 | printf(" %s\n", _("Threshold which will result in a critical status")); | ||
386 | printf(" %s\n", "-v, --variable=STRING"); | ||
387 | printf(" %s\n", _("Variable to check. Valid variables include:")); | ||
388 | printf(" %s\n", _("LOAD1 = 1 minute average CPU load")); | ||
389 | printf(" %s\n", _("LOAD5 = 5 minute average CPU load")); | ||
390 | printf(" %s\n", _("LOAD15 = 15 minute average CPU load")); | ||
391 | printf(" %s\n", _("DPU<filesys> = percent used disk space on filesystem <filesys>")); | ||
392 | printf(" %s\n", _("PROC<process> = number of running processes with name <process>")); | ||
393 | printf(" %s\n", _("NET<port> = number of active connections on TCP port <port>")); | ||
394 | printf(" %s\n", _("UPTIME = system uptime in seconds")); | ||
395 | |||
396 | printf(UT_CONN_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); | ||
397 | |||
398 | printf(UT_VERBOSE); | ||
399 | |||
400 | printf("\n"); | ||
401 | printf("%s\n", _("This plugin requires that Eric Molitors' Over-CR collector daemon be")); | ||
402 | printf("%s\n", _("running on the remote server.")); | ||
403 | printf("%s\n", _("Over-CR can be downloaded from http://www.molitor.org/overcr")); | ||
404 | printf("%s\n", _("This plugin was tested with version 0.99.53 of the Over-CR collector")); | ||
405 | |||
406 | printf("\n"); | ||
407 | printf("%s\n", _("Notes:")); | ||
408 | printf(" %s\n", _("For the available options, the critical threshold value should always be")); | ||
409 | printf(" %s\n", _("higher than the warning threshold value, EXCEPT with the uptime variable")); | ||
410 | |||
411 | printf(UT_SUPPORT); | ||
412 | } | ||
413 | |||
414 | void print_usage(void) { | ||
415 | printf("%s\n", _("Usage:")); | ||
416 | printf("%s -H host [-p port] [-v variable] [-w warning] [-c critical] [-t timeout]\n", progname); | ||
417 | } | ||