Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check_snmp_storage.pl gives me a use of 123% #51

Open
einMarco opened this issue Apr 23, 2018 · 2 comments
Open

Check_snmp_storage.pl gives me a use of 123% #51

einMarco opened this issue Apr 23, 2018 · 2 comments

Comments

@einMarco
Copy link

Hey,
I try to monitor a Mac Mini in my Network, it has a mounted drive via AFP, that gives me a usage of 123%, whats seems a little impossible. ;)

My call for the hole Mac is this:

/usr/lib/nagios/plugins/check_snmp_storage.pl -H x.x.x.x -C public -m / -w 80 -c 90

And the output is:

/: 25%used(58994MB/239172MB) /Network/Servers: 0%used(0MB/0MB) /Volumes/ARQ: 123%used(2143914MB/1739805MB) /Volumes/Promise Pegasus: 24%used(2777550MB/11443754MB) /dev: 100%used(0MB/0MB) /home: 0%used(0MB/0MB) /net: 0%used(0MB/0MB) /private/var/vm: 1%used(3072MB/239172MB) (>90%) : CRITICAL

The ARQ drive has a volume of 19,42 TB and has free 17,17 TB.

Would be cool, if that could be fixed.

@dnsmichi
Copy link
Collaborator

You might want to look into the code regions where this is calculated. I would believe that there's an overflow somewhere.

@einMarco
Copy link
Author

I think the issue is with this part:

if (version->parse(Net::SNMP->VERSION) >= 4) {
    foreach my $key (sort keys %$result) {

        # Fix for filesystems larger 2 TB. More than 2 TB will cause an error because
        # as defined in the RFC hrStorageSize is a 32 bit integer. So filesystems
        # larger 2 TB report a negative value because the first bit will be interpreted
        # as an algebraic sign. (0 = +, all others will be -). You simply have to add
        # 2 to the power of 32 (4294967296) and it is fixed.
        # Martin Fuerstenau, Oce Printing Systems, 25th Sept 2012
        if ($$result{$key} < 0) {
            $$result{$key} = $$result{$key} + 4294967296;
        }
        verb("$key  x $$result{$key}");
    }
}

It looks like there is an overflow. If I'm correct the max volume size with int32 is 4TB. But when I change it to the max value of int64 "9223372036854775807" it still gets an overflow. Maybe perl needs to have the ability for int64?
Maybe that helps you?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants