36 lines
1.3 KiB
Bash
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'
|