aboutsummaryrefslogtreecommitdiff
path: root/plugins/check_nagios.c
diff options
context:
space:
mode:
authorGravatar Ton Voon <tonvoon@users.sourceforge.net> 2005-12-02 22:28:06 +0000
committerGravatar Ton Voon <tonvoon@users.sourceforge.net> 2005-12-02 22:28:06 +0000
commitec6d0db61c33e65a1c3e414b07638a55022dfbf6 (patch)
tree7c9d092636a8d76fb422392870e99860569717e3 /plugins/check_nagios.c
parent01886efb2bc2500e4cd441d7d18f74cb817efd0c (diff)
downloadmonitoring-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.c44
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 (&current_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;
}