[Nagiosplug-devel] bug with "-e" argument to check_disk [patch included]
carole verdon
verdon at cict.fr
Tue Jun 1 05:41:02 CEST 2004
Hi,
I haven't got the same error. On the other hand, i have another problem.
If i execute this command ./check_disk -e -w 10% -c 5% -X lofs -X nfs, i
obtain the following result that i don't understand:
DISK CRITICAL - free space: /var/mail.avant.coque 1085 MB (10%);
/aurore6 305 MB (8%); /aurore9 1546 MB (8%); /aurore14 4666 MB (94%);
/aurore15 3384 MB (70%);| /=996MB;2292;2419;0;2547
/tmp=4333MB;3899;4116;0;4333
/var/mail.avant.coque=1085MB;9983;10538;0;11093
/usr/local=759MB;3631;3833;0;4035 /aurore1=1721MB;2723;2874;0;3026
/aurore2=1185MB;2723;2874;0;3026 /aurore3=3803MB;3902;4119;0;4336
/aurore4=1023MB;3631;3833;0;4035 /aurore5=1031MB;3631;3833;0;4035
/aurore6=304MB;3631;3833;0;4035 /aurore7=2127MB;2257;2382;0;2508
/aurore8=12265MB;18152;19160;0;20169 /aurore9=1546MB;18152;19160;0;20169
/aurore10=3421MB;18152;19160;0;20169
/aurore11=9207MB;18152;19160;0;20169
/aurore12=14657MB;15954;16840;0;17727
/aurore13=24646MB;34092;35986;0;37881 /aurore14=4665MB;4954;4954;0;4954
/aurore15=3384MB;4840;4840;0;4840
Why the output displays "/aurore14 4666 MB (94%)" and "/aurore15 3384
MB (70%)" whereas they have respectively 94% and 70% of free space?
Does your patch correct also this error ?
Carole.
sean finney wrote:
>hi there,
>
>i've been looking into getting disk space monitoring integrated into
>the other nagios monitoring i'm already doing, and i think i've found
>a bug with on of the command line options, "-e". the description says:
>
> -e, --errors-only
> Display only devices/mountpoints with errors
>
>when running on a system with no disk space errors:
>
>cork[~]12:49:49$ /usr/local/sbin/check_disk -w 15% -c 10%
>DISK OK [1247916 kB (63%) free on /dev/sda7] [25815 kB (26%) free on
>/dev/sda2] [1931628 kB (100%) free on /dev/shm] [1768884 kB (52%) free
>on /dev/sda6] [7517516 kB (76%) free on /dev/sda3] [9166460 kB (93%)
>free on /dev/sda5] [16410780 kB (74%) free on /dev/emcpowerb6] [92890296
>kB (78%) free on /dev/emcpowera1] [51267056 kB (43%) free on
>/dev/emcpowera2] [22861384 kB (79%) free on /dev/emcpowerb3] [7366696 kB
>(51%) free on /dev/emcpowerb5]
>
>however, when running with -e
>
>cork[~]12:50:05$ /usr/local/sbin/check_disk -w 15% -c 10% -e
>Unable to read output
>/bin/df -Pk
>/dev/emcpowerb5 15124868 6983988 7372576 49%
>/usr/local/swat
>
>very strange indeed! even stranger, if you specify the run with the
>-v option, the behaviour goes away:
>
>cork[~]12:50:44$ /usr/local/sbin/check_disk -w 15% -c 10% -e -v
>/bin/df -Pk ==> DISK OK [1247900 kB (63%) free on /dev/sda7] [25815 kB
>(26%) free on /dev/sda2] [1931628 kB (100%) free on /dev/shm] [1768884
>kB (52%) free on /dev/sda6] [7517516 kB (76%) free on /dev/sda3]
>[9166276 kB (93%) free on /dev/sda5] [16410760 kB (74%) free on
>/dev/emcpowerb6] [92899616 kB (78%) free on /dev/emcpowera1] [51266780
>kB (43%) free on /dev/emcpowera2] [22861368 kB (79%) free on
>/dev/emcpowerb3] [7326368 kB (51%) free on /dev/emcpowerb5]
>
>some investigation turned up what looks like a bug in the flow of
>execution in the main while loop processing the output of df, which
>causes the last processed line to always have result == STATE_UNKNOWN.
>specifically, line 121-122:
>
>if (disk_result==STATE_OK && erronly && !verbose)
> continue
>
>result is not set to the value of disk_result (via calling max_state at
>the end of the while loop, which is skipped by this continue statement),
>and as such is still in STATE_UNKNOWN.
>
>attached is a very short patch (diff -u) which i believe fixes the
>problem.
>
>
> sean
>
>ps - please cc me with any correspondance, i'm not subscribed to the
> list
>
>
>------------------------------------------------------------------------
>
>--- check_disk.c.old 2004-05-31 12:04:37.000000000 -0400
>+++ check_disk.c 2004-05-31 12:45:11.000000000 -0400
>@@ -118,8 +118,10 @@
> if (strcmp (file_system, "none") == 0)
> strncpy (file_system, mntp, MAX_INPUT_BUFFER-1);
>
>- if (disk_result==STATE_OK && erronly && !verbose)
>+ if (disk_result==STATE_OK && erronly && !verbose){
>+ result = max_state (result, disk_result);
> continue;
>+ }
>
> if (disk_result!=STATE_OK || verbose>=0)
> asprintf (&output, "%s [%.0f kB (%d%%) free on %s]", output,
>
>
--
**********************************
VERDON Carole
Ingénieur Système
CICT - Université Paul Sabatier
118, route de Narbonne
31062 Toulouse Cedex
Tél.: 05.61.36.60.44
Fax: 05.61.52.14.58
Mail: verdon at cict.fr
**********************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nagios-plugins.org/archive/devel/attachments/20040601/4759d7f2/attachment.html>
More information about the Devel
mailing list