Website/directory_size.sh
2024-03-20 17:41:57 -05:00

36 lines
1.3 KiB
Bash

#! /bin/bash
###########################
# Expose directory usage metrics, passed as an argument.
#
# Usage: add this to crontab:
#
# */5 * * * * directory_size.sh <directory_name> > /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'