Monitor inodes, not just disk space
Most monitoring collects disk usage and ignores inodes, so nobody learns until writes start failing and df -i has been at 100% for hours.
node_exporter already exposes node_filesystem_files_free and node_filesystem_files. Or just run:
df -i --output=pcent,target | awk 'NR>1 && $1+0>90 {print}'
The usual culprits are cache directories, session files and mail queues. When cleaning, avoid deleting files that are still being written — the space will not come back and the application will start erroring.
btrfs and zfs have no fixed inode table, so the numbers there mean little and need different handling.