diff options
-rw-r--r-- | plugins/check_mrtg.c | 57 |
1 files changed, 25 insertions, 32 deletions
diff --git a/plugins/check_mrtg.c b/plugins/check_mrtg.c index 067429c..6b08195 100644 --- a/plugins/check_mrtg.c +++ b/plugins/check_mrtg.c | |||
@@ -49,7 +49,6 @@ main (int argc, char **argv) | |||
49 | char input_buffer[MAX_INPUT_BUFFER]; | 49 | char input_buffer[MAX_INPUT_BUFFER]; |
50 | char *temp_buffer; | 50 | char *temp_buffer; |
51 | time_t current_time; | 51 | time_t current_time; |
52 | char* message; | ||
53 | time_t timestamp = 0L; | 52 | time_t timestamp = 0L; |
54 | unsigned long average_value_rate = 0L; | 53 | unsigned long average_value_rate = 0L; |
55 | unsigned long maximum_value_rate = 0L; | 54 | unsigned long maximum_value_rate = 0L; |
@@ -112,43 +111,37 @@ main (int argc, char **argv) | |||
112 | 111 | ||
113 | /* if we couldn't read enough data, return an unknown error */ | 112 | /* if we couldn't read enough data, return an unknown error */ |
114 | if (line <= 2) { | 113 | if (line <= 2) { |
115 | result = STATE_UNKNOWN; | 114 | printf (_("Unable to process MRTG log file\n")); |
116 | asprintf (&message, _("Unable to process MRTG log file\n")); | 115 | return STATE_UNKNOWN; |
117 | } | 116 | } |
118 | 117 | ||
119 | /* make sure the MRTG data isn't too old */ | 118 | /* make sure the MRTG data isn't too old */ |
120 | if (result == STATE_OK) { | 119 | time (¤t_time); |
121 | time (¤t_time); | 120 | if (expire_minutes > 0 |
122 | if (expire_minutes > 0 | 121 | && (current_time - timestamp) > (expire_minutes * 60)) { |
123 | && (current_time - timestamp) > (expire_minutes * 60)) { | 122 | printf (_("MRTG data has expired (%d minutes old)\n"), |
124 | result = STATE_WARNING; | 123 | (int) ((current_time - timestamp) / 60)); |
125 | asprintf (&message, _("MRTG data has expired (%d minutes old)\n"), | 124 | return STATE_WARNING; |
126 | (int) ((current_time - timestamp) / 60)); | ||
127 | } | ||
128 | } | 125 | } |
129 | 126 | ||
130 | /* else check the incoming/outgoing rates */ | 127 | /* else check the incoming/outgoing rates */ |
131 | if (result == STATE_OK) { | 128 | if (use_average == TRUE) |
132 | if (use_average == TRUE) | 129 | rate = average_value_rate; |
133 | rate = average_value_rate; | 130 | else |
134 | else | 131 | rate = maximum_value_rate; |
135 | rate = maximum_value_rate; | 132 | |
136 | 133 | if (rate > value_critical_threshold) | |
137 | if (rate > value_critical_threshold) | 134 | result = STATE_CRITICAL; |
138 | result = STATE_CRITICAL; | 135 | else if (rate > value_warning_threshold) |
139 | else if (rate > value_warning_threshold) | 136 | result = STATE_WARNING; |
140 | result = STATE_WARNING; | 137 | |
141 | 138 | printf("%s. %s = %lu %s|%s\n", | |
142 | asprintf (&message, "%s. %s = %lu %s|%s", | 139 | (use_average == TRUE) ? _("Avg") : _("Max"), |
143 | (use_average == TRUE) ? _("Avg") : _("Max"), | 140 | label, rate, units, |
144 | label, rate, units, | 141 | perfdata(label, (long) rate, units, |
145 | perfdata(label, (long) rate, units, | 142 | (int) value_warning_threshold, (long) value_warning_threshold, |
146 | (int) value_warning_threshold, (long) value_warning_threshold, | 143 | (int) value_critical_threshold, (long) value_critical_threshold, |
147 | (int) value_critical_threshold, (long) value_critical_threshold, | 144 | 0, 0, 0, 0)); |
148 | 0, 0, 0, 0)); | ||
149 | } | ||
150 | |||
151 | printf ("%s\n", message); | ||
152 | 145 | ||
153 | return result; | 146 | return result; |
154 | } | 147 | } |