summaryrefslogtreecommitdiffstats
path: root/plugins/check_nagios.c
diff options
context:
space:
mode:
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)
85 /* open the status log */ 85 /* open the status log */
86 fp = fopen (status_log, "r"); 86 fp = fopen (status_log, "r");
87 if (fp == NULL) { 87 if (fp == NULL) {
88 printf (_("CRITICAL - Cannot open status log for reading!\n")); 88 die (STATE_CRITICAL, "NAGIOS %s: %s\n", _("CRITICAL"), _("Cannot open status log for reading!"));
89 return STATE_CRITICAL;
90 } 89 }
91 90
92 /* get the date/time of the last item updated in the log */ 91 /* get the date/time of the last item updated in the log */
93 while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, fp)) { 92 while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, fp)) {
94 temp_ptr = strtok (input_buffer, "]"); 93 if ((temp_ptr = strstr (input_buffer, "created=")) != NULL) {
95 temp_entry_time = 94 temp_entry_time = strtoul (temp_ptr + 8, NULL, 10);
96 (temp_ptr == NULL) ? 0L : strtoul (temp_ptr + 1, NULL, 10);
97 if (temp_entry_time > latest_entry_time)
98 latest_entry_time = temp_entry_time; 95 latest_entry_time = temp_entry_time;
96 break;
97 } else if ((temp_ptr = strtok (input_buffer, "]")) != NULL) {
98 temp_entry_time = strtoul (temp_ptr + 1, NULL, 10);
99 if (temp_entry_time > latest_entry_time)
100 latest_entry_time = temp_entry_time;
101 }
99 } 102 }
100 fclose (fp); 103 fclose (fp);
101 104
102 if (verbose >= 2) 105 if (verbose >= 2)
103 printf(_("command: %s\n"), PS_COMMAND); 106 printf("command: %s\n", PS_COMMAND);
104 107
105 /* run the command to check for the Nagios process.. */ 108 /* run the command to check for the Nagios process.. */
106 if((result = np_runcmd(PS_COMMAND, &chld_out, &chld_err, 0)) != 0) 109 if((result = np_runcmd(PS_COMMAND, &chld_out, &chld_err, 0)) != 0)
@@ -146,22 +149,29 @@ main (int argc, char **argv)
146 alarm (0); 149 alarm (0);
147 150
148 if (proc_entries == 0) { 151 if (proc_entries == 0) {
149 printf (_("Could not locate a running Nagios process!\n")); 152 die (STATE_CRITICAL, "NAGIOS %s: %s\n", _("CRITICAL"), _("Could not locate a running Nagios process!"));
150 return STATE_CRITICAL;
151 } 153 }
152 154
153 result = STATE_OK; 155 if (latest_entry_time == 0L) {
156 die (STATE_CRITICAL, "NAGIOS %s: %s\n", _("CRITICAL"), _("Cannot parse Nagios log file for valid time"));
157 }
154 158
155 time (&current_time); 159 time (&current_time);
156 if ((int)(current_time - latest_entry_time) > (expire_minutes * 60)) 160 if ((int)(current_time - latest_entry_time) > (expire_minutes * 60)) {
157 result = STATE_WARNING; 161 result = STATE_WARNING;
162 } else {
163 result = STATE_OK;
164 }
158 165
159 printf 166 printf ("NAGIOS %s: ", (result == STATE_OK) ? _("OK") : _("WARNING"));
160 (_("Nagios %s: located %d process%s, status log updated %d second%s ago\n"), 167 printf (ngettext ("%d process", "%d processes", proc_entries), proc_entries);
161 (result == STATE_OK) ? "ok" : "problem", proc_entries, 168 printf (", ");
162 (proc_entries == 1) ? "" : "es", 169 printf (
163 (int) (current_time - latest_entry_time), 170 ngettext ("status log updated %d second ago",
164 ((int) (current_time - latest_entry_time) == 1) ? "" : "s"); 171 "status log updated %d seconds ago",
172 (int) (current_time - latest_entry_time) ),
173 (int) (current_time - latest_entry_time) );
174 printf ("\n");
165 175
166 return result; 176 return result;
167} 177}