diff options
| author | Karl DeBisschop <kdebisschop@users.sourceforge.net> | 2003-11-17 07:19:17 +0000 |
|---|---|---|
| committer | Karl DeBisschop <kdebisschop@users.sourceforge.net> | 2003-11-17 07:19:17 +0000 |
| commit | 3d3ebef00de3c21f9ba3cca83002b677f129a6e2 (patch) | |
| tree | f201ecd0c7dfc3a9d6ec56431fede1a1a2001acf /plugins | |
| parent | 72dac268d3e995d8436b77494a1db30f92496415 (diff) | |
| download | monitoring-plugins-3d3ebef00de3c21f9ba3cca83002b677f129a6e2.tar.gz | |
add perfdata
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@770 f882894a-f735-0410-b71e-b25c423dba1c
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/check_ups.c | 118 |
1 files changed, 72 insertions, 46 deletions
diff --git a/plugins/check_ups.c b/plugins/check_ups.c index 391c1dbe..335cb993 100644 --- a/plugins/check_ups.c +++ b/plugins/check_ups.c | |||
| @@ -52,8 +52,8 @@ char *server_address; | |||
| 52 | char *ups_name = NULL; | 52 | char *ups_name = NULL; |
| 53 | double warning_value = 0.0; | 53 | double warning_value = 0.0; |
| 54 | double critical_value = 0.0; | 54 | double critical_value = 0.0; |
| 55 | int check_warning_value = FALSE; | 55 | int check_warn = FALSE; |
| 56 | int check_critical_value = FALSE; | 56 | int check_crit = FALSE; |
| 57 | int check_variable = UPS_NONE; | 57 | int check_variable = UPS_NONE; |
| 58 | int supported_options = UPS_NONE; | 58 | int supported_options = UPS_NONE; |
| 59 | int status = UPSSTATUS_NONE; | 59 | int status = UPSSTATUS_NONE; |
| @@ -78,6 +78,7 @@ main (int argc, char **argv) | |||
| 78 | { | 78 | { |
| 79 | int result = STATE_OK; | 79 | int result = STATE_OK; |
| 80 | char *message; | 80 | char *message; |
| 81 | char *data; | ||
| 81 | char temp_buffer[MAX_INPUT_BUFFER]; | 82 | char temp_buffer[MAX_INPUT_BUFFER]; |
| 82 | double ups_utility_deviation = 0.0; | 83 | double ups_utility_deviation = 0.0; |
| 83 | 84 | ||
| @@ -140,6 +141,7 @@ main (int argc, char **argv) | |||
| 140 | asprintf (&ups_status, "%s%s", ups_status, ", Unknown"); | 141 | asprintf (&ups_status, "%s%s", ups_status, ", Unknown"); |
| 141 | } | 142 | } |
| 142 | } | 143 | } |
| 144 | asprintf (&message, "%sStatus=%s ", message, ups_status); | ||
| 143 | } | 145 | } |
| 144 | 146 | ||
| 145 | /* get the ups utility voltage if possible */ | 147 | /* get the ups utility voltage if possible */ |
| @@ -149,6 +151,7 @@ main (int argc, char **argv) | |||
| 149 | return STATE_CRITICAL; | 151 | return STATE_CRITICAL; |
| 150 | 152 | ||
| 151 | ups_utility_voltage = atof (temp_buffer); | 153 | ups_utility_voltage = atof (temp_buffer); |
| 154 | asprintf (&message, "%sUtility=%3.1fV ", message, ups_utility_voltage); | ||
| 152 | 155 | ||
| 153 | if (ups_utility_voltage > 120.0) | 156 | if (ups_utility_voltage > 120.0) |
| 154 | ups_utility_deviation = 120.0 - ups_utility_voltage; | 157 | ups_utility_deviation = 120.0 - ups_utility_voltage; |
| @@ -156,11 +159,21 @@ main (int argc, char **argv) | |||
| 156 | ups_utility_deviation = ups_utility_voltage - 120.0; | 159 | ups_utility_deviation = ups_utility_voltage - 120.0; |
| 157 | 160 | ||
| 158 | if (check_variable == UPS_UTILITY) { | 161 | if (check_variable == UPS_UTILITY) { |
| 159 | if (check_critical_value == TRUE | 162 | if (check_crit==TRUE && ups_utility_deviation>=critical_value) { |
| 160 | && ups_utility_deviation >= critical_value) result = STATE_CRITICAL; | 163 | result = STATE_CRITICAL; |
| 161 | else if (check_warning_value == TRUE | 164 | } |
| 162 | && ups_utility_deviation >= warning_value | 165 | else if (check_warn==TRUE && ups_utility_deviation>=warning_value) { |
| 163 | && result < STATE_WARNING) result = STATE_WARNING; | 166 | result = max_state (result, STATE_WARNING); |
| 167 | } | ||
| 168 | asprintf (&data, "%s ", | ||
| 169 | perfdata ("voltage", (long)(1000*ups_utility_voltage), "mV", | ||
| 170 | check_warn, (long)(1000*warning_value), | ||
| 171 | check_crit, (long)(1000*critical_value), | ||
| 172 | TRUE, 0, FALSE, 0)); | ||
| 173 | } else { | ||
| 174 | asprintf (&data, "%s ", | ||
| 175 | perfdata ("voltage", (long)(1000*ups_utility_voltage), "mV", | ||
| 176 | FALSE, 0, FALSE, 0, TRUE, 0, FALSE, 0)); | ||
| 164 | } | 177 | } |
| 165 | } | 178 | } |
| 166 | 179 | ||
| @@ -171,13 +184,24 @@ main (int argc, char **argv) | |||
| 171 | return STATE_CRITICAL; | 184 | return STATE_CRITICAL; |
| 172 | 185 | ||
| 173 | ups_battery_percent = atof (temp_buffer); | 186 | ups_battery_percent = atof (temp_buffer); |
| 187 | asprintf (&message, "%sBatt=%3.1f%% ", message, ups_battery_percent); | ||
| 174 | 188 | ||
| 175 | if (check_variable == UPS_BATTPCT) { | 189 | if (check_variable == UPS_BATTPCT) { |
| 176 | if (check_critical_value == TRUE | 190 | if (check_crit==TRUE && ups_battery_percent <= critical_value) { |
| 177 | && ups_battery_percent <= critical_value) result = STATE_CRITICAL; | 191 | result = STATE_CRITICAL; |
| 178 | else if (check_warning_value == TRUE | 192 | } |
| 179 | && ups_battery_percent <= warning_value | 193 | else if (check_warn==TRUE && ups_battery_percent<=warning_value) { |
| 180 | && result < STATE_WARNING) result = STATE_WARNING; | 194 | result = max_state (result, STATE_WARNING); |
| 195 | } | ||
| 196 | asprintf (&data, "%s ", | ||
| 197 | perfdata ("battery", (long)ups_battery_percent, "%", | ||
| 198 | check_warn, (long)(1000*warning_value), | ||
| 199 | check_crit, (long)(1000*critical_value), | ||
| 200 | TRUE, 0, TRUE, 100)); | ||
| 201 | } else { | ||
| 202 | asprintf (&data, "%s ", | ||
| 203 | perfdata ("battery", (long)ups_battery_percent, "%", | ||
| 204 | FALSE, 0, FALSE, 0, TRUE, 0, TRUE, 100)); | ||
| 181 | } | 205 | } |
| 182 | } | 206 | } |
| 183 | 207 | ||
| @@ -188,13 +212,24 @@ main (int argc, char **argv) | |||
| 188 | return STATE_CRITICAL; | 212 | return STATE_CRITICAL; |
| 189 | 213 | ||
| 190 | ups_load_percent = atof (temp_buffer); | 214 | ups_load_percent = atof (temp_buffer); |
| 215 | asprintf (&message, "%sLoad=%3.1f%% ", message, ups_load_percent); | ||
| 191 | 216 | ||
| 192 | if (check_variable == UPS_LOADPCT) { | 217 | if (check_variable == UPS_LOADPCT) { |
| 193 | if (check_critical_value == TRUE && ups_load_percent >= critical_value) | 218 | if (check_crit==TRUE && ups_load_percent>=critical_value) { |
| 194 | result = STATE_CRITICAL; | 219 | result = STATE_CRITICAL; |
| 195 | else if (check_warning_value == TRUE | 220 | } |
| 196 | && ups_load_percent >= warning_value && result < STATE_WARNING) | 221 | else if (check_warn==TRUE && ups_load_percent>=warning_value) { |
| 197 | result = STATE_WARNING; | 222 | result = max_state (result, STATE_WARNING); |
| 223 | } | ||
| 224 | asprintf (&data, "%s ", | ||
| 225 | perfdata ("load", (long)ups_load_percent, "%", | ||
| 226 | check_warn, (long)(1000*warning_value), | ||
| 227 | check_crit, (long)(1000*critical_value), | ||
| 228 | TRUE, 0, TRUE, 100)); | ||
| 229 | } else { | ||
| 230 | asprintf (&data, "%s ", | ||
| 231 | perfdata ("load", (long)ups_load_percent, "%", | ||
| 232 | FALSE, 0, FALSE, 0, TRUE, 0, TRUE, 100)); | ||
| 198 | } | 233 | } |
| 199 | } | 234 | } |
| 200 | 235 | ||
| @@ -205,46 +240,37 @@ main (int argc, char **argv) | |||
| 205 | return STATE_CRITICAL; | 240 | return STATE_CRITICAL; |
| 206 | 241 | ||
| 207 | ups_temperature = (atof (temp_buffer) * 1.8) + 32; | 242 | ups_temperature = (atof (temp_buffer) * 1.8) + 32; |
| 243 | asprintf (&message, "%sTemp=%3.1fF", message, ups_temperature); | ||
| 208 | 244 | ||
| 209 | if (check_variable == UPS_TEMP) { | 245 | if (check_variable == UPS_TEMP) { |
| 210 | if (check_critical_value == TRUE && ups_temperature >= critical_value) | 246 | if (check_crit==TRUE && ups_temperature>=critical_value) { |
| 211 | result = STATE_CRITICAL; | 247 | result = STATE_CRITICAL; |
| 212 | else if (check_warning_value == TRUE && ups_temperature >= warning_value | 248 | } |
| 213 | && result < STATE_WARNING) | 249 | else if (check_warn == TRUE && ups_temperature>=warning_value) { |
| 214 | result = STATE_WARNING; | 250 | result = max_state (result, STATE_WARNING); |
| 251 | } | ||
| 252 | asprintf (&data, "%s ", | ||
| 253 | perfdata ("temp", (long)ups_temperature, "degF", | ||
| 254 | check_warn, (long)(1000*warning_value), | ||
| 255 | check_crit, (long)(1000*critical_value), | ||
| 256 | TRUE, 0, FALSE, 0)); | ||
| 257 | } else { | ||
| 258 | asprintf (&data, "%s ", | ||
| 259 | perfdata ("temp", (long)ups_temperature, "degF", | ||
| 260 | FALSE, 0, FALSE, 0, TRUE, 0, FALSE, 0)); | ||
| 215 | } | 261 | } |
| 216 | } | 262 | } |
| 217 | 263 | ||
| 218 | /* if the UPS does not support any options we are looking for, report an error */ | 264 | /* if the UPS does not support any options we are looking for, report an error */ |
| 219 | if (supported_options == UPS_NONE) | 265 | if (supported_options == UPS_NONE) { |
| 220 | result = STATE_CRITICAL; | 266 | result = STATE_CRITICAL; |
| 267 | asprintf (&message, "UPS does not support any available options\n"); | ||
| 268 | } | ||
| 221 | 269 | ||
| 222 | /* reset timeout */ | 270 | /* reset timeout */ |
| 223 | alarm (0); | 271 | alarm (0); |
| 224 | 272 | ||
| 225 | 273 | printf ("UPS %s - %s|%s\n", state_text(result), message, data); | |
| 226 | asprintf (&message, "UPS %s - ", (result == STATE_OK) ? "ok" : "problem"); | ||
| 227 | |||
| 228 | if (supported_options & UPS_STATUS) | ||
| 229 | asprintf (&message, "%sStatus=%s ", message, ups_status); | ||
| 230 | |||
| 231 | if (supported_options & UPS_UTILITY) | ||
| 232 | asprintf (&message, "%sUtility=%3.1fV ", message, ups_utility_voltage); | ||
| 233 | |||
| 234 | if (supported_options & UPS_BATTPCT) | ||
| 235 | asprintf (&message, "%sBatt=%3.1f%% ", message, ups_battery_percent); | ||
| 236 | |||
| 237 | if (supported_options & UPS_LOADPCT) | ||
| 238 | asprintf (&message, "%sLoad=%3.1f%% ", message, ups_load_percent); | ||
| 239 | |||
| 240 | if (supported_options & UPS_TEMP) | ||
| 241 | asprintf (&message, "%sTemp=%3.1fF", message, ups_temperature); | ||
| 242 | |||
| 243 | if (supported_options == UPS_NONE) | ||
| 244 | asprintf (&message, "UPS does not support any available options\n"); | ||
| 245 | |||
| 246 | printf ("%s\n", message); | ||
| 247 | |||
| 248 | return result; | 274 | return result; |
| 249 | } | 275 | } |
| 250 | 276 | ||
| @@ -462,7 +488,7 @@ process_arguments (int argc, char **argv) | |||
| 462 | case 'c': /* critical time threshold */ | 488 | case 'c': /* critical time threshold */ |
| 463 | if (is_intnonneg (optarg)) { | 489 | if (is_intnonneg (optarg)) { |
| 464 | critical_value = atoi (optarg); | 490 | critical_value = atoi (optarg); |
| 465 | check_critical_value = TRUE; | 491 | check_crit = TRUE; |
| 466 | } | 492 | } |
| 467 | else { | 493 | else { |
| 468 | usage2 ("Critical time must be a nonnegative integer", optarg); | 494 | usage2 ("Critical time must be a nonnegative integer", optarg); |
| @@ -471,7 +497,7 @@ process_arguments (int argc, char **argv) | |||
| 471 | case 'w': /* warning time threshold */ | 497 | case 'w': /* warning time threshold */ |
| 472 | if (is_intnonneg (optarg)) { | 498 | if (is_intnonneg (optarg)) { |
| 473 | warning_value = atoi (optarg); | 499 | warning_value = atoi (optarg); |
| 474 | check_warning_value = TRUE; | 500 | check_warn = TRUE; |
| 475 | } | 501 | } |
| 476 | else { | 502 | else { |
| 477 | usage2 ("Warning time must be a nonnegative integer", optarg); | 503 | usage2 ("Warning time must be a nonnegative integer", optarg); |
