Check file-count

Overview

Checks the number of matching files or directories found. It can be also used to check the existence / absence of a single file.

Depending on the file and user (e.g. running as icinga), sudo (sudoers) is needed. It supports globs in accordance with Python 3. Beware that using recursive globs might cause high memory usage. Optionally, the check can be restricted to only consider files that were modified in a given timerange.

Fact Sheet

Fact

Value

Check Plugin Download

https://github.com/Linuxfabrik/monitoring-plugins/tree/main/check-plugins/file-count

Check Interval Recommendation

Once a minute

Can be called without parameters

Yes

Compiled for Windows

Yes

3rd Party Python modules

PySmbClient, smbprotocol

Help

usage: file-count [-h] [-V] [--always-ok] [-c CRIT] [--filename FILENAME]
                  [--only-dirs] [--only-files] [--password PASSWORD]
                  [--pattern PATTERN] [--timeout TIMEOUT]
                  [--timerange TIMERANGE] [-u URL] [--username USERNAME]
                  [-w WARN]

Checks the number of matching files.

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   Set the critical number of files. Supports ranges.
  --filename FILENAME   File (or directory) name to check. Supports glob in
                        accordance with https://docs.python.org/3/library/path
                        lib.html#pathlib.Path.glob. Beware of using recursive
                        globs. This is mutually exclusive with -u / --url.
  --only-dirs           Only count directories.
  --only-files          Only count files.
  --password PASSWORD   SMB Password.
  --pattern PATTERN     The search string to match against the names of SMB
                        directories or files. This pattern can use '*' as a
                        wildcard for multiple chars and '?' as a wildcard for
                        a single char. Does not support regex patterns.
                        Default: *.
  --timeout TIMEOUT     Network timeout in seconds. Default: 3 (seconds)
  --timerange TIMERANGE
                        Set the timerange (seconds) in which the files should
                        be considered. Supports ranges.
  -u, --url URL         Set the url of the file (or directory) to check,
                        starting with "smb://". This is mutually exclusive
                        with --filename.
  --username USERNAME   SMB Username.
  -w, --warning WARN    Set the warning number of files. Supports ranges.

Usage Examples

# check the existence of a file; if missing warn
./file-count --filename '/path/to/file' --warning 1

# check the absence of a file; if present warn
./file-count --filename '/path/to/file' --warning '~:0'

# check that there are at least 5 `.md` files, else warn
./file-count --filename '/path/to/*.md' --warning 5

# check that there are at least 5 files modified in the last 10 seconds, else warn
./file-count --filename '/path/to/file/*' --warning 5 --timerange 5

# check a SMB share
./file-count  --username USER --password mysecret --pattern '*' --timeout 3 --url smb://\\server\path

Output:

Found 1 matching file (thresholds 1/None)|'file_count'=1;1;;0;

States

  • OK if all the found files (in accordance with the filtering parameters) are within the given thresholds (ranges).

  • Otherwise CRIT or WARN.

Perfdata / Metrics

  • file_count: Number. Count of the files that were found in accordance with the filtering parameters.

Credits, License