#! /bin/bash ########################### # Expose directory usage metrics, passed as an argument. # # Usage: add this to crontab: # # */5 * * * * directory_size.sh > /var/lib/node_exporter/directory_size.prom # # sed pattern taken from https://www.robustperception.io/monitoring-directory-sizes-with-the-textfile-collector/! # # Phil Connor pconnor@ara.com # Version 1.0.3-111623 ########################### ############################# #### Check for Directory #### ############################# if [ ! -d "/var/lib/node_exporter/" ]; then mkdir -p /var/lib/node_exporter chown prometheus. /var/lib/node_exporter fi ############################ #### Check for Cron Job #### ############################ if ! crontab -l | grep -q 'directory_size.sh'; then echo -e "$(crontab -u root -l)\n*/5 * * * * /usr/local/bin/directory_size.sh /var/log/audit > /var/lib/node_exporter/directory_size.prom 2>&1" | crontab -u root - fi ################################### #### Directory Metrics Command #### ################################### echo "# HELP node_directory_size_bytes Disk space used by some directories" echo "# TYPE node_directory_size_bytes gauge" du --block-size=1 --summarize "$@" | sed -ne 's/\\/\\\\/;s/"/\\"/g;s/^\([0-9]\+\)\t\(.*\)$/node_directory_size_bytes{directory="\2"} \1/p'