diff options
-rw-r--r-- | plugins/check_nt.c | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/plugins/check_nt.c b/plugins/check_nt.c index 605d479..ef0a66b 100644 --- a/plugins/check_nt.c +++ b/plugins/check_nt.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * | 2 | * |
3 | * CHECK_NT.C | 3 | * CHECK_NT.C |
4 | * | 4 | * |
5 | * Program: Windows NT plugin for NetSaint | 5 | * Program: Windows NT plugin for Nagios |
6 | * License: GPL | 6 | * License: GPL |
7 | * Copyright (c) 2000-2002 Yves Rubin (rubiyz@yahoo.com) | 7 | * Copyright (c) 2000-2002 Yves Rubin (rubiyz@yahoo.com) |
8 | * | 8 | * |
@@ -78,12 +78,16 @@ int main(int argc, char **argv){ | |||
78 | int return_code = STATE_UNKNOWN; | 78 | int return_code = STATE_UNKNOWN; |
79 | char *send_buffer=NULL; | 79 | char *send_buffer=NULL; |
80 | char *output_message=NULL; | 80 | char *output_message=NULL; |
81 | char *perfdata=NULL; | ||
81 | char *temp_string=NULL; | 82 | char *temp_string=NULL; |
83 | char *temp_string_perf=NULL; | ||
82 | char *description=NULL; | 84 | char *description=NULL; |
83 | 85 | ||
84 | double total_disk_space=0; | 86 | double total_disk_space=0; |
85 | double free_disk_space=0; | 87 | double free_disk_space=0; |
86 | double percent_used_space=0; | 88 | double percent_used_space=0; |
89 | double warning_used_space=0; | ||
90 | double critical_used_space=0; | ||
87 | double mem_commitLimit=0; | 91 | double mem_commitLimit=0; |
88 | double mem_commitByte=0; | 92 | double mem_commitByte=0; |
89 | unsigned long utilization; | 93 | unsigned long utilization; |
@@ -133,6 +137,8 @@ int main(int argc, char **argv){ | |||
133 | /* -l parameters is present with only integers */ | 137 | /* -l parameters is present with only integers */ |
134 | return_code=STATE_OK; | 138 | return_code=STATE_OK; |
135 | temp_string = strdup (_("CPU Load")); | 139 | temp_string = strdup (_("CPU Load")); |
140 | temp_string_perf = strdup (_(" ")); | ||
141 | |||
136 | /* loop until one of the parameters is wrong or not present */ | 142 | /* loop until one of the parameters is wrong or not present */ |
137 | while (lvalue_list[0+offset]> (unsigned long)0 && | 143 | while (lvalue_list[0+offset]> (unsigned long)0 && |
138 | lvalue_list[0+offset]<=(unsigned long)17280 && | 144 | lvalue_list[0+offset]<=(unsigned long)17280 && |
@@ -155,11 +161,16 @@ int main(int argc, char **argv){ | |||
155 | 161 | ||
156 | asprintf(&output_message,_(" %lu%% (%lu min average)"), utilization, lvalue_list[0+offset]); | 162 | asprintf(&output_message,_(" %lu%% (%lu min average)"), utilization, lvalue_list[0+offset]); |
157 | asprintf(&temp_string,"%s%s",temp_string,output_message); | 163 | asprintf(&temp_string,"%s%s",temp_string,output_message); |
164 | asprintf(&perfdata,_(" '%lu min avg Load'=%lu%%;%lu;%lu;0;100"), lvalue_list[0+offset], utilization, | ||
165 | lvalue_list[1+offset], lvalue_list[2+offset]); | ||
166 | asprintf(&temp_string_perf,"%s%s",temp_string_perf,perfdata); | ||
158 | offset+=3; /* move across the array */ | 167 | offset+=3; /* move across the array */ |
159 | } | 168 | } |
160 | if (strlen(temp_string)>10) /* we had at least one loop */ | 169 | |
170 | if (strlen(temp_string)>10) { /* we had at least one loop */ | ||
161 | output_message = strdup (temp_string); | 171 | output_message = strdup (temp_string); |
162 | else | 172 | perfdata = temp_string_perf; |
173 | } else | ||
163 | output_message = strdup (_("not enough values for -l parameters")); | 174 | output_message = strdup (_("not enough values for -l parameters")); |
164 | } | 175 | } |
165 | break; | 176 | break; |
@@ -188,12 +199,16 @@ int main(int argc, char **argv){ | |||
188 | free_disk_space=atof(strtok(recv_buffer,"&")); | 199 | free_disk_space=atof(strtok(recv_buffer,"&")); |
189 | total_disk_space=atof(strtok(NULL,"&")); | 200 | total_disk_space=atof(strtok(NULL,"&")); |
190 | percent_used_space = ((total_disk_space - free_disk_space) / total_disk_space) * 100; | 201 | percent_used_space = ((total_disk_space - free_disk_space) / total_disk_space) * 100; |
202 | warning_used_space = ((float)warning_value / 100) * total_disk_space; | ||
203 | critical_used_space = ((float)critical_value / 100) * total_disk_space; | ||
191 | 204 | ||
192 | if (free_disk_space>=0) { | 205 | if (free_disk_space>=0) { |
193 | asprintf(&temp_string,_("%s:\\ - total: %.2f Gb - used: %.2f Gb (%.0f%%) - free %.2f Gb (%.0f%%)"), | 206 | asprintf(&temp_string,_("%s:\\ - total: %.2f Gb - used: %.2f Gb (%.0f%%) - free %.2f Gb (%.0f%%)"), |
194 | value_list, total_disk_space / 1073741824, (total_disk_space - free_disk_space) / 1073741824, percent_used_space, | 207 | value_list, total_disk_space / 1073741824, (total_disk_space - free_disk_space) / 1073741824, |
195 | free_disk_space / 1073741824, (free_disk_space / total_disk_space)*100); | 208 | percent_used_space, free_disk_space / 1073741824, (free_disk_space / total_disk_space)*100); |
196 | 209 | asprintf(&temp_string_perf,_("'%s:\\ Used Space'=%.2fGb;%.2f;%.2f;0.00;%.2f"), value_list, | |
210 | (total_disk_space - free_disk_space) / 1073741824, warning_used_space / 1073741824, | ||
211 | critical_used_space / 1073741824, total_disk_space / 1073741824); | ||
197 | 212 | ||
198 | if(check_critical_value==TRUE && percent_used_space >= critical_value) | 213 | if(check_critical_value==TRUE && percent_used_space >= critical_value) |
199 | return_code=STATE_CRITICAL; | 214 | return_code=STATE_CRITICAL; |
@@ -203,8 +218,8 @@ int main(int argc, char **argv){ | |||
203 | return_code=STATE_OK; | 218 | return_code=STATE_OK; |
204 | 219 | ||
205 | output_message = strdup (temp_string); | 220 | output_message = strdup (temp_string); |
206 | } | 221 | perfdata = temp_string_perf; |
207 | else { | 222 | } else { |
208 | output_message = strdup (_("Free disk space : Invalid drive ")); | 223 | output_message = strdup (_("Free disk space : Invalid drive ")); |
209 | return_code=STATE_UNKNOWN; | 224 | return_code=STATE_UNKNOWN; |
210 | } | 225 | } |
@@ -234,9 +249,15 @@ int main(int argc, char **argv){ | |||
234 | mem_commitLimit=atof(strtok(recv_buffer,"&")); | 249 | mem_commitLimit=atof(strtok(recv_buffer,"&")); |
235 | mem_commitByte=atof(strtok(NULL,"&")); | 250 | mem_commitByte=atof(strtok(NULL,"&")); |
236 | percent_used_space = (mem_commitByte / mem_commitLimit) * 100; | 251 | percent_used_space = (mem_commitByte / mem_commitLimit) * 100; |
252 | warning_used_space = ((float)warning_value / 100) * mem_commitLimit; | ||
253 | critical_used_space = ((float)critical_value / 100) * mem_commitLimit; | ||
254 | |||
255 | // Changed divisor in following line from 1048567 to 3044515 to accurately reflect memory size | ||
237 | asprintf(&output_message,_("Memory usage: total:%.2f Mb - used: %.2f Mb (%.0f%%) - free: %.2f Mb (%.0f%%)"), | 256 | asprintf(&output_message,_("Memory usage: total:%.2f Mb - used: %.2f Mb (%.0f%%) - free: %.2f Mb (%.0f%%)"), |
238 | mem_commitLimit / 1048576, mem_commitByte / 1048567, percent_used_space, | 257 | mem_commitLimit / 3044515, mem_commitByte / 3044515, percent_used_space, |
239 | (mem_commitLimit - mem_commitByte) / 1048576, (mem_commitLimit - mem_commitByte) / mem_commitLimit * 100); | 258 | (mem_commitLimit - mem_commitByte) / 3044515, (mem_commitLimit - mem_commitByte) / mem_commitLimit * 100); |
259 | asprintf(&perfdata,_("'Memory usage'=%.2fMb;%.2f;%.2f;0.00;%.2f"), mem_commitByte / 3044515, | ||
260 | warning_used_space / 3044515, critical_used_space / 3044515, mem_commitLimit / 3044515); | ||
240 | 261 | ||
241 | return_code=STATE_OK; | 262 | return_code=STATE_OK; |
242 | if(check_critical_value==TRUE && percent_used_space >= critical_value) | 263 | if(check_critical_value==TRUE && percent_used_space >= critical_value) |
@@ -262,6 +283,7 @@ int main(int argc, char **argv){ | |||
262 | asprintf(&output_message, "%.f", counter_value); | 283 | asprintf(&output_message, "%.f", counter_value); |
263 | else | 284 | else |
264 | asprintf(&output_message,"%s = %.f", description, counter_value); | 285 | asprintf(&output_message,"%s = %.f", description, counter_value); |
286 | asprintf(&perfdata,"'%s'=%.f", description, counter_value); | ||
265 | 287 | ||
266 | if (critical_value > warning_value) { /* Normal thresholds */ | 288 | if (critical_value > warning_value) { /* Normal thresholds */ |
267 | if(check_critical_value==TRUE && counter_value >= critical_value) | 289 | if(check_critical_value==TRUE && counter_value >= critical_value) |
@@ -322,8 +344,10 @@ int main(int argc, char **argv){ | |||
322 | /* reset timeout */ | 344 | /* reset timeout */ |
323 | alarm(0); | 345 | alarm(0); |
324 | 346 | ||
325 | printf("%s\n",output_message); | 347 | if (perfdata==NULL) |
326 | 348 | printf("%s\n",output_message); | |
349 | else | ||
350 | printf("%s | %s\n",output_message,perfdata); | ||
327 | return return_code; | 351 | return return_code; |
328 | } | 352 | } |
329 | 353 | ||
@@ -575,7 +599,7 @@ Windows NT/2000/XP server.\n\n")); | |||
575 | Some examples:\n\ | 599 | Some examples:\n\ |
576 | \"Paging file usage is %%.2f %%%%\"\n\ | 600 | \"Paging file usage is %%.2f %%%%\"\n\ |
577 | \"%%.f %%%% paging file used.\"\n")); | 601 | \"%%.f %%%% paging file used.\"\n")); |
578 | printf (_("Notes:\n\ | 602 | printf (_("Notes:\n\ |
579 | - The NSClient service should be running on the server to get any information\n\ | 603 | - The NSClient service should be running on the server to get any information\n\ |
580 | (http://nsclient.ready2run.nl).\n\ | 604 | (http://nsclient.ready2run.nl).\n\ |
581 | - Critical thresholds should be lower than warning thresholds\n")); | 605 | - Critical thresholds should be lower than warning thresholds\n")); |