File: //lib64/nagios/plugins/check_a2_disk.sh
#!/bin/bash
# Ref - 869830c19 - check_a2_vps_disk -a custom script to monitor VZ container storage
#
disk_checker() {
diskc_warn=90
diskc_crit=95
for mount in $(cat /proc/mounts | grep -vE "cagefs|cgroup|binfmt|mqueue|dev/pts|run/user|/proc|/sys|virtfs|/run|tmpfs" | awk '{print $2}'); do
df_storage=$(df -k ${mount} | tail -n +2)
df_storage_mount=$(echo "${df_storage}" | awk '{print $NF}')
df_storage_usep=$(echo "${df_storage}" | awk '{print $5}' | tr -d '%')
df_storage_avail=$(echo "${df_storage}" | awk '{print $4 / 1024"MB"}')
df_storage_used=$(echo "${df_storage}" | awk '{print $3}')
df_storage_total=$(echo "${df_storage}" | awk '{print $2}')
df_inodes=$(df -i ${mount} | tail -n +2)
df_inodes_mount=$(echo "${df_inodes}" | awk '{print $NF}')
df_inodes_usep=$(echo "${df_inodes}" | awk '{print $5}' | tr -d '%')
df_inodes_avail=$(echo "${df_inodes}" | awk '{print $4}')
df_inodes_used=$(echo "${df_inodes}" | awk '{print $3}')
df_inodes_total=$(echo "${df_inodes}" | awk '{print $2}')
if [[ "${df_storage_usep}" -gt "${diskc_warn}" ]] && [[ "${df_storage_usep}" -lt "${diskc_crit}" ]]; then
echo "WARN: ${df_storage_mount} ${df_storage_usep}% ${df_storage_avail} (Inodes: ${df_inodes_total}/${df_inodes_used} - ${df_inodes_usep}%)"
elif [[ "${df_storage_usep}" -lt "${diskc_warn}" ]]; then
echo "OK: ${df_storage_mount} ${df_storage_usep}% ${df_storage_avail} (Inodes: ${df_inodes_total}/${df_inodes_used} - ${df_inodes_usep}%)"
elif [[ "${df_storage_usep}" -gt "${diskc_crit}" ]]; then
echo "CRIT: ${df_storage_mount} ${df_storage_usep}% ${df_storage_avail} (Inodes: ${df_inodes_total}/${df_inodes_used} - ${df_inodes_usep}%)"
fi
done
}
check_disk_data=$(disk_checker | sed ':a;N;$!ba;s/\n/; /g')
if echo "${check_disk_data}" | grep -q CRIT; then
echo "DISK CRITICAL - free space: ${check_disk_data}"
exit 2
elif echo "${check_disk_data}" | grep -q WARN; then
echo "DISK WARN - free space: ${check_disk_data}"
exit 1
else
echo "DISK OK - free space: ${check_disk_data}"
exit 0
fi