diff options
author | Ton Voon <tonvoon@users.sourceforge.net> | 2005-12-02 22:28:06 +0000 |
---|---|---|
committer | Ton Voon <tonvoon@users.sourceforge.net> | 2005-12-02 22:28:06 +0000 |
commit | ec6d0db61c33e65a1c3e414b07638a55022dfbf6 (patch) | |
tree | 7c9d092636a8d76fb422392870e99860569717e3 /plugins/check_nagios.c | |
parent | 01886efb2bc2500e4cd441d7d18f74cb817efd0c (diff) | |
download | monitoring-plugins-ec6d0db61c33e65a1c3e414b07638a55022dfbf6.tar.gz |
Support for Nagios 1 and Nagios 2 status files (Gerhard Lausser - 1296242)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1294 f882894a-f735-0410-b71e-b25c423dba1c
Diffstat (limited to 'plugins/check_nagios.c')
-rw-r--r-- | plugins/check_nagios.c | 44 |
1 files changed, 27 insertions, 17 deletions
diff --git a/plugins/check_nagios.c b/plugins/check_nagios.c index ab9c877b..45514f1a 100644 --- a/plugins/check_nagios.c +++ b/plugins/check_nagios.c @@ -85,22 +85,25 @@ main (int argc, char **argv) /* open the status log */ fp = fopen (status_log, "r"); if (fp == NULL) { - printf (_("CRITICAL - Cannot open status log for reading!\n")); - return STATE_CRITICAL; + die (STATE_CRITICAL, "NAGIOS %s: %s\n", _("CRITICAL"), _("Cannot open status log for reading!")); } /* get the date/time of the last item updated in the log */ while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, fp)) { - temp_ptr = strtok (input_buffer, "]"); - temp_entry_time = - (temp_ptr == NULL) ? 0L : strtoul (temp_ptr + 1, NULL, 10); - if (temp_entry_time > latest_entry_time) + if ((temp_ptr = strstr (input_buffer, "created=")) != NULL) { + temp_entry_time = strtoul (temp_ptr + 8, NULL, 10); latest_entry_time = temp_entry_time; + break; + } else if ((temp_ptr = strtok (input_buffer, "]")) != NULL) { + temp_entry_time = strtoul (temp_ptr + 1, NULL, 10); + if (temp_entry_time > latest_entry_time) + latest_entry_time = temp_entry_time; + } } fclose (fp); if (verbose >= 2) - printf(_("command: %s\n"), PS_COMMAND); + printf("command: %s\n", PS_COMMAND); /* run the command to check for the Nagios process.. */ if((result = np_runcmd(PS_COMMAND, &chld_out, &chld_err, 0)) != 0) @@ -146,22 +149,29 @@ main (int argc, char **argv) alarm (0); if (proc_entries == 0) { - printf (_("Could not locate a running Nagios process!\n")); - return STATE_CRITICAL; + die (STATE_CRITICAL, "NAGIOS %s: %s\n", _("CRITICAL"), _("Could not locate a running Nagios process!")); } - result = STATE_OK; + if (latest_entry_time == 0L) { + die (STATE_CRITICAL, "NAGIOS %s: %s\n", _("CRITICAL"), _("Cannot parse Nagios log file for valid time")); + } time (¤t_time); - if ((int)(current_time - latest_entry_time) > (expire_minutes * 60)) + if ((int)(current_time - latest_entry_time) > (expire_minutes * 60)) { result = STATE_WARNING; + } else { + result = STATE_OK; + } - printf - (_("Nagios %s: located %d process%s, status log updated %d second%s ago\n"), - (result == STATE_OK) ? "ok" : "problem", proc_entries, - (proc_entries == 1) ? "" : "es", - (int) (current_time - latest_entry_time), - ((int) (current_time - latest_entry_time) == 1) ? "" : "s"); + printf ("NAGIOS %s: ", (result == STATE_OK) ? _("OK") : _("WARNING")); + printf (ngettext ("%d process", "%d processes", proc_entries), proc_entries); + printf (", "); + printf ( + ngettext ("status log updated %d second ago", + "status log updated %d seconds ago", + (int) (current_time - latest_entry_time) ), + (int) (current_time - latest_entry_time) ); + printf ("\n"); return result; } |