Check disk-usage

Overview

Measures the usage of all mounted disk partitions. It does not check the usage on the raw disks, because in LVM for example, more than one disk can be a member of a logical volume, and some of the disks might be full - which is fine as long as LVM has some space available.

By default, this plugin only checks physical devices (e.g. hard disks, CD-ROM drives, USB keys) and ignores all others (e.g. pseudo, memory, duplicate, inaccessible file systems). You can override this behaviour by using the --fstype parameter and specifying which file system types should be checked explicitly.

To get a list of file system types you can specify, run disk-usage --list-fstype first (as file system types are machine dependent).

Bemerkung

UNIX usually reserves 5% of the total disk space for the root user. total and used fields on UNIX refer to the overall total and used space, whereas free represents the space available for the user and percent represents the user utilization. That is why percent value may look 5% bigger than what you would expect it to be (starting with psutil v4.3.0; quote from the psutil documentation).

Hints:

  • On Windows, mount point folder paths are also supported.

  • Important when using parameter values on Windows: As long as there is no space in the value, it works without quotes. If you need quotes, they must be enclosed in double quotes (single quotes will not work). Working example: disk-usage.exe --include-pattern="Sales Documents"

Fact Sheet

Check Plugin Download

https://github.com/Linuxfabrik/monitoring-plugins/tree/main/check-plugins/disk-usage

Check Interval Recommendation

Every 5 minutes

Can be called without parameters

Yes

Compiled for

Linux, Windows

3rd Party Python modules

psutil

Help

usage: disk-usage [-h] [-V] [--always-ok] [-c CRIT]
                  [--exclude-pattern EXCLUDE_PATTERN]
                  [--exclude-regex EXCLUDE_REGEX] [--fstype FSTYPE]
                  [--include-pattern INCLUDE_PATTERN]
                  [--include-regex INCLUDE_REGEX] [--list-fstypes]
                  [--perfdata-regex PERFDATA_REGEX] [-w WARN]

Checks the used disk space, for each partition.

options:
  -h, --help            show this help message and exit
  -V, --version         show program's version number and exit
  --always-ok           Always returns OK.
  -c, --critical CRIT   Critical threshold, of the form
                        "<number>[unit][method]", where unit is one of
                        `%|K|M|G|T|P` and method is one of `USED|FREE`. If
                        "unit" is omitted, `%` is assumed. `K` means
                        `kibibyte` etc. If "method" is omitted, `USED` is
                        assumed. `USED` means "number ore more", `FREE` means
                        "number or less". Examples: `95` = alert at 95% usage
                        or more. `9.5M` = alert when 9.5 MiB or more is used.
                        Other self-explanatory examples are `95%USED`,
                        `5%FREE`, `9.5GFREE`, `1400GUSED`. Default: 95%USED
  --exclude-pattern EXCLUDE_PATTERN
                        Any mountpoint matching this pattern (case-
                        insensitive) will count as an exclude. The mountpoint
                        is excluded if it contains the specified value.
                        Example: "boot" excludes "/boot" as well as
                        "/boot/efi". Can be specified multiple times. On
                        Windows, use drive letters without backslash ("Y:" or
                        "Y"). Includes are matched before excludes.
  --exclude-regex EXCLUDE_REGEX
                        Any mountpoint matching this python regex (case-
                        insensitive) will count as an exclude. Can be
                        specified multiple times. On Windows, use drive
                        letters without backslash ("Y:" or "Y"). Includes are
                        matched before excludes.
  --fstype FSTYPE       By default, this plugin only checks physical devices
                        (e.g. hard disks, CD-ROM drives, USB keys) and ignores
                        all others (e.g. pseudo, memory, duplicate,
                        inaccessible file systems). You can override this
                        behaviour with this parameter by specifying which file
                        system types should be checked explicitly. Can be
                        specified multiple times. To get a list of file system
                        types you can specify, run `disk-usage --list-fstype`
                        first (as file system types are machine dependent).
  --include-pattern INCLUDE_PATTERN
                        Any mountpoint matching this pattern (case-
                        insensitive) will count as an include. The mountpoint
                        is included if it contains the specified value.
                        Example: "boot" includes "/boot" as well as
                        "/boot/efi". Can be specified multiple times. On
                        Windows, use drive letters without backslash ("Y:" or
                        "Y"). Includes are matched before excludes.
  --include-regex INCLUDE_REGEX
                        Any mountpoint matching this python regex (case-
                        insensitive) will count as an include. Can be
                        specified multiple times. On Windows, use drive
                        letters without backslash ("Y:" or "Y"). Includes are
                        matched before excludes.
  --list-fstypes        Show which file system types are available and which
                        are checked by default.
  --perfdata-regex PERFDATA_REGEX
                        Only print perfdata keys matching this python regex.
                        For a list of perfdata keys, have a look at the README
                        and run this plugin. Can be specified multiple times.
  -w, --warning WARN    Warning threshold, of the form
                        "<number>[unit][method]", where unit is one of
                        `%|K|M|G|T|P` and method is one of `USED|FREE`. If
                        "unit" is omitted, `%` is assumed. `K` means
                        `kibibyte` etc. If "method" is omitted, `USED` is
                        assumed. `USED` means "number ore more", `FREE` means
                        "number or less". Examples: `95` = alert at 95% usage.
                        `9.5M` = alert when 9.5 MiB is used. Other self-
                        explanatory examples are `95%USED`, `5%FREE`,
                        `9.5GFREE`, `1400GUSED`. Default: 90%USED

Usage Examples

Simple usage:

./disk-usage

Output:

Everything is ok. (warn=90%USED crit=95%USED)

Mountpoint     ! Type ! Size      ! Used     ! Avail    ! Use%
---------------+------+-----------+----------+----------+-------
/              ! xfs  ! 4.0GiB    ! 2.4GiB   ! 1.5GiB   ! 61.4%
/boot          ! xfs  ! 1014.0MiB ! 287.1MiB ! 726.9MiB ! 28.3%
/var           ! xfs  ! 4.0GiB    ! 1.4GiB   ! 2.6GiB   ! 34.4%
/tmp           ! xfs  ! 1014.0MiB ! 39.5MiB  ! 974.5MiB ! 3.9%
/var/log       ! xfs  ! 1014.0MiB ! 190.9MiB ! 823.1MiB ! 18.8%
/var/tmp       ! xfs  ! 1014.0MiB ! 39.4MiB  ! 974.6MiB ! 3.9%
/var/log/audit ! xfs  ! 506.7MiB  ! 63.9MiB  ! 442.7MiB ! 12.6%
/home          ! xfs  ! 1014.0MiB ! 130.1MiB ! 883.9MiB ! 12.8%

For each /var partition, except /var/tmp, alert when any of these partitions has only 450 MiB of free space left:

./disk-usage --include-pattern=var --exclude-pattern=tmp --critical 450MFREE

Output:

There are critical errors. (warn=90%USED crit=450MFREE)

Mountpoint     ! Type ! Size      ! Used     ! Avail    ! Use%
---------------+------+-----------+----------+----------+------------------
/var           ! xfs  ! 4.0GiB    ! 1.4GiB   ! 2.6GiB   ! 34.4%
/var/log       ! xfs  ! 1014.0MiB ! 190.9MiB ! 823.1MiB ! 18.8%
/var/log/audit ! xfs  ! 506.7MiB  ! 64.2MiB  ! 442.5MiB ! 12.7% [CRITICAL]|

Check exactly one partition:

./disk-usage --include-pattern=audit --warning 60MUSED

Output:

/var/log/audit 12.6% [WARNING] - total: 506.7MiB, free: 442.7MiB, used: 63.9MiB (warn=60MUSED crit=95%USED)

Some other examples:

./disk-usage --exclude-pattern=/var/log --exclude-pattern=/tmp --warning=80 --critical=90
./disk-usage --exclude-pattern=/var/log --exclude-pattern=/tmp --warning=80%USED --critical=90%USED
./disk-usage --exclude-pattern=/var/log --exclude-pattern=/tmp --warning=80%USED --critical=3GFREE

./disk-usage --fstype=btrfs --fstype=vfat

./disk-usage --perfdata-pattern='/-usage'
./disk-usage --perfdata-pattern='var.*-usage'

# on Windows:
./disk-usage --exclude-pattern=E: --exclude-pattern=Y: --warning=80 --critical=90

States

  • WARN or CRIT if disk usage in percent is above a given threshold.

Perfdata / Metrics

Can be limited by using --perfdata-regex.

Name

Type

Description

<mountpoint>-percent

Percentage

Usage in percent

<mountpoint>-total

Bytes

Total Disksize

<mountpoint>-usage

Bytes

Usage in Bytes

Credits, License