Check file-count¶
Overview¶
Counts the number of files matching a glob pattern and alerts when the count exceeds the configured thresholds. Can filter by modification time range, restrict to files or directories only, and supports SMB shares.
Important Notes:
SMB share access requires the optional
PySmbClientandsmbprotocolPython modulesRecursive globs (
**) can cause high memory usage on large directory treesThe
--filenameand--urlparameters are mutually exclusiveThresholds support Nagios ranges. Use
--warning 1to check for file existence (warn if missing) or--warning '~:0'to check for file absence (warn if present)--timerangeaccepts Nagios range syntax in seconds. Only files whose modification time falls within this range are countedDepending on the file and user (e.g. running as
icinga), sudo (sudoers) may be needed
Data Collection:
Uses Python’s
pathlib.Path.glob()for local files andlib.smbfor SMB sharesApplies
os.stat()once per item to determine type and modification time, minimizing syscallsWhen both
--warningand--criticalthresholds are simple numeric values, the check breaks early once the threshold is exceeded (to save time and resources on directories with millions of files)
Fact Sheet¶
Fact |
Value |
|---|---|
Check Plugin Download |
https://github.com/Linuxfabrik/monitoring-plugins/tree/main/check-plugins/file-count |
Nagios/Icinga Check Name |
|
Check Interval Recommendation |
Every minute |
Can be called without parameters |
Yes |
Runs on |
Cross-platform |
Compiled for Windows |
Yes |
3rd Party Python modules |
|
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]
Counts the number of files matching a glob pattern and alerts when the count
exceeds the configured thresholds. Can filter by modification time range,
restrict to files or directories only, and supports SMB shares.
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 CRIT threshold for the number of matching files.
--filename FILENAME File or directory name to check (supports glob
patterns). Beware of recursive globs. Mutually
exclusive with --url.
--only-dirs Only count directories, ignoring files.
--only-files Only count files, ignoring directories.
--password PASSWORD Password for SMB authentication.
--pattern PATTERN SMB search pattern to match directory or file names.
Use `*` for multiple characters and `?` for a single
character. Does not support regex. Default: *
--timeout TIMEOUT Network timeout in seconds. Default: 3
--timerange TIMERANGE
Only count files modified within this time range in
seconds.
-u, --url URL SMB URL of the file or directory to check, starting
with `smb://`. Mutually exclusive with --filename.
--username USERNAME Username for SMB authentication.
-w, --warning WARN WARN threshold for the number of matching files.
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 the file count is within the given thresholds (Nagios ranges).
WARN if the file count is outside
--warning.CRIT if the file count is outside
--critical.--always-oksuppresses all alerts and always returns OK.
Perfdata / Metrics¶
Name |
Type |
Description |
|---|---|---|
file_count |
Number |
Count of files matching the glob pattern and filters. |
Credits, License¶
Authors: Linuxfabrik GmbH, Zurich
License: The Unlicense, see LICENSE file.