Page 1 of 1

check_capacity_planning.py not working correctly

Posted: Mon Apr 26, 2021 6:14 am
by optionstechnology
I use the following command to check disk usage-

Code: Select all

/check_nrpe -H HOSTNAME -t 59 -u -c Check_DriveSize -a "drive=E:" "empty-state=ok" "show-all" "warn=free<10%"  "crit=free<5%"
It is currently outputting-

Code: Select all

OK E: - 11.495GB/39.999GB - 71% Free
Plus I can see in the perfdata that it is correctly outputting the warning/critical levels-

Code: Select all

'E: free'=28.50363GB;3.99989;1.99994;0;39.99899 'E: free %'=71%;10;5;0;100

I use this to check the capacity planning on the same server-

Code: Select all

/check_capacity_planning.py -H HOSTNAME -S 'Disk_Usage_-_E__Drive' -d 'E__free_%' -m 'Holt-Winters' -l '8w' -w 7d -c 7d

Code: Select all

CRITICAL: E__free_% will reach value 70.38 in 0.0 days

Why is it alerting at 70.38? Where is it even getting that number from?

Re: check_capacity_planning.py not working correctly

Posted: Mon Apr 26, 2021 4:34 pm
by gsmith
hi,

It's getting the 71% from the perf data 'E: free %'=71%;10;5;0;100, - it anticipates hitting 70.38 in 0.0 days, and is
rounding up (worse case scenario).

If you want to set a specific value for the warning you can check out the
--critical-uses-custom
--warning-uses-custom
--custom-value=CUSTOM_VALUE

options, see below:

Code: Select all

[root@gs-cent8-23-82 libexec]# ./check_capacity_planning.py -h
Usage: check_capacity_planning.py: alert based on the time until a perfdata value is expected to become CRITICAL.
usage: check_capacity_planning.py -H <host-name> -d <perdata-name>[,<perfdata-name>...] --use-warning|--use-critical|--min <min>|--max <max> [options...]

Options:
  -h, --help            show this help message and exit
  -H HOST_NAME, --host-name=HOST_NAME
                        The name of the host which you're monitoring
                        (incompatible with hostgroup/servicegroup)
  -S SERVICE_DESCRIPTION, --service-description=SERVICE_DESCRIPTION
                        The name of the service which you're monitoring
                        (requires host-name, incompatible with
                        hostgroup/servicegroup)
  -t TIMEOUT, --timeout=TIMEOUT
                        Set the timeout duration in seconds. Defaults to never
                        timing out.
  -w WARNING, --warning=WARNING
                        How far in advance of the predicted threshold to start
                        returning WARNING. Valid units are d, w, m, y (for
                        days, weeks, months, and years respectively). If left
                        empty, plugin does not alert WARNING.
  -c CRITICAL, --critical=CRITICAL
                        How far in advance of the predicted threshold to start
                        returning CRITICAL. Valid units are d, w, m, y (for
                        days, weeks, months, and years respectively). If left
                        empty, plugin does not alert CRITICAL.
  -m METHOD, --method=METHOD
                        The extrapolation method used for prediction. Should
                        be one of 'holt-winters', 'linear', 'quadratic',
                        'cubic' (only the first character is checked).
                        Defaults to holt-winters
  -d DATA_SOURCE, --data-source=DATA_SOURCE
                        The perfdata name for which you are planning
  -l LOOKAHEAD, --lookahead=LOOKAHEAD
                        How far in advance to look ahead when calculating
                        predicted values. Defaults to 8w (8 weeks).
  -v, --verbose         Print more verbose error messages.
  -V, --version         Print the version number and exit.
  --debug               Prints additional text in place of service output.
  --warning-uses-critical
                        If this flag is set, this plugin will alert WARNING
                        based on the forecast against the performance data's
                        CRITICAL value
  --warning-uses-custom
                        If this is set to a number, this plugin will alert
                        WARNING based on the forecast against a custom
                        value.Requires that --custom-value is set.
  --warning-is-minimal  If this flag is set, this plugin will alert based on
                        when forecasted data goes below the desired value.
  --critical-uses-warning
                        If this flag is set, this plugin will alert CRITICAL
                        based on the forecast against the performance data's
                        WARNING value
  --critical-uses-custom
                        If this is set to a number, this plugin will alert
                        CRITICAL based on the forecast against a custom
                        value.Requires that --custom-value is set.
  --critical-is-minimal
                        If this flag is set, this plugin will alert based on
                        when forecasted data goes below the desired value.
  --custom-value=CUSTOM_VALUE
                        The value to use with --warning-uses-custom,
                        --critical-uses-custom.
[root@gs-cent8-23-82 libexec]#
Thanks

Re: check_capacity_planning.py not working correctly

Posted: Tue Apr 27, 2021 5:19 am
by optionstechnology
Sorry I don't understand... so the disk is currently at 71%... and the check is designed to tell you when it hits the result that the check is currently at?
That would mean the check is always critical...


Surely it's supposed to alert based on the warning/critical level set in the perf data for the graph it is monitoring?


Regardless of that I tried it with the custom as suggested-

Code: Select all

/usr/local/nagios/libexec/check_capacity_planning.py -H HOSTNAME -S 'Disk_Usage_-_E__Drive' -d 'E__free_%' -m 'Holt-Winters' -l '8w' --critical-uses-custom --custom-value=50
and I get this-

Code: Select all

CRITICAL: E__free_% will reach value 70.96 in 0.01 days

Re: check_capacity_planning.py not working correctly

Posted: Tue Apr 27, 2021 6:50 pm
by ssax
You need to define a higher threshold than what it currently is:

Code: Select all

/usr/local/nagios/libexec/check_capacity_planning.py -H HOSTNAME -S 'Disk_Usage_-_E__Drive' -d 'E__free_%' -m 'Holt-Winters' -l '8w' -w 15d -c 10d --warning-uses-custom --critical-uses-custom --custom-value 90
That will look ahead 8 weeks and warn if it's predicted to reach 90 within 15 days, it will go critical if it is predicted to reach 90 within 10 days.

Re: check_capacity_planning.py not working correctly

Posted: Thu May 13, 2021 5:31 am
by optionstechnology
I did try it with the suggested level-

Code: Select all

/usr/local/nagios/libexec/check_capacity_planning.py -H HOSTNAME -S 'Disk_Usage_-_E__Drive' -d 'E__free_%' -m 'Holt-Winters' -l '8w' --critical-uses-custom --custom-value=100
but it still doesnt work-

Code: Select all

CRITICAL: E__free_% will reach value 70.96 in 0.01 days
Its like its ignoring the custom value variable


I did some experimenting - firstly I inverted the disk check - so rather than report on "free" space it reports on "used"

Code: Select all

/usr/local/nagios/libexec/check_capacity_planning.py -H HOSTNAME -S 'Disk_Usage_-_E__Drive_Used' -d 'E__used' -m 'Holt-Winters' -l '8w'
This does work fine --

Code: Select all

OK: E__used will not cross either threshold in lookahead period

So it makes sense that the check is not working because its expecting the data to be higher than, not lower than.... BUT the check does have a specific switch to make it treat the value as lower than- "--critical-is-minimal"

But when I use that it also ignores the switch

Code: Select all

/usr/local/nagios/libexec/check_capacity_planning.py -H HOSTNAME -S 'Disk_Usage_-_E__Drive' -d 'E__free' -m 'Holt-Winters' -l '8w' --critical-is-minimal
I think the main problem here is that I cannot get the script to accept the switches I am passing to it... because both yours and my solution *should* solve this problem

Re: check_capacity_planning.py not working correctly

Posted: Thu May 13, 2021 5:44 pm
by ssax
What does this output?

Code: Select all

/usr/local/nagios/libexec/check_capacity_planning.py -H HOSTNAME -S 'Disk_Usage_-_E__Drive' -d 'E__free_%' -m 'Holt-Winters' -l '8w' -w 15d -c 10d --warning-uses-custom --critical-uses-custom --custom-value 100

Re: check_capacity_planning.py not working correctly

Posted: Mon May 17, 2021 7:34 am
by optionstechnology
I get

Code: Select all

CRITICAL: E__free_% will reach value 102.0 in 9.98 days
I also tried increasing the critical number to 15 days so it should return green given the above response-

Code: Select all

/usr/local/nagios/libexec/check_capacity_planning.py -H HOSTNAME -S 'Disk_Usage_-_E__Drive' -d 'E__free_%' -m 'Holt-Winters' -l '8w' -w 30d -c 15d --warning-uses-custom --critical-uses-custom --custom-value 100
But I get this-

Code: Select all

CRITICAL: E__free_% will reach value 101.28 in 9.98 days

Re: check_capacity_planning.py not working correctly

Posted: Tue May 18, 2021 2:56 pm
by benjaminsmith
Hi,

I believe that is correct. It's supposed to alert with x days of exceeding the custom value, so it's going to pass the custom value in 9.98 days which is below the critical threshold of days.

Best Regards,
Benjamin