Система Оповещения об Использовании Диска
Мониторит использование диска и отправляет электронную почту или уведомление при превышении порога. Критический инструмент мониторинга для системных администраторов.
Опубликовано: 10.02.2024
Обновлено: 25.11.2024
Код
#!/bin/bash
# Disk Usage Alert System
THRESHOLD=80
EMAIL="[email protected]"
HOSTNAME=$(hostname)
echo "Checking disk usage on $HOSTNAME..."
echo ""
send_alert() {
local partition=$1
local usage=$2
local subject="ALERT: Disk Usage on $HOSTNAME"
local message="WARNING: Disk usage on $partition has reached ${usage}%\n\nPlease investigate immediately."
echo -e "$message" | mail -s "$subject" "$EMAIL"
}
df -H | grep -vE "^Filesystem|tmpfs|cdrom|loop" | awk "{ print \$5 \" \" \$1 \" \" \$6 }" | while read output; do
USAGE=$(echo $output | awk "{ print \$1}" | cut -d"%" -f1)
PARTITION=$(echo $output | awk "{ print \$2 }")
MOUNT=$(echo $output | awk "{ print \$3 }")
echo "Partition: $PARTITION"
echo "Mount Point: $MOUNT"
echo "Usage: $USAGE%"
if [ $USAGE -ge $THRESHOLD ]; then
echo "⚠️ WARNING: Disk usage is above threshold!"
send_alert "$PARTITION ($MOUNT)" "$USAGE"
echo ""
echo "Top 10 largest directories in $MOUNT:"
du -h "$MOUNT" 2>/dev/null | sort -rh | head -n 10
else
echo "✓ Status: OK"
fi
echo ""
echo "---"
echo ""
done
echo "Disk usage check completed at $(date)"
Использование
# Configure email
sudo apt-get install mailutils # Debian/Ubuntu
# or
sudo yum install mailx # CentOS/RHEL
# Edit script
nano disk_alert.sh
# Replace EMAIL with your email
chmod +x disk_alert.sh
# Manual test
./disk_alert.sh
# Automate with crontab (every hour)
crontab -e
# Add: 0 * * * * /path/to/disk_alert.sh