Initial backup: 18 monitoring scripts + timers + docs

- 18 comprehensive monitoring checks
- 5 systemd timers (5min, 15min, hourly, daily, weekly)
- Complete documentation
- NTFY secure notification system
- Fixed debianvm disk space (91% to 57%)
- Fixed CloudReve integration
- Date: 2026-01-07
This commit is contained in:
PVE Monitoring System
2026-01-07 16:30:34 +08:00
commit 3a14fd2736
34 changed files with 1067 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
#!/bin/bash
# Check network storage mounts (NFS/CIFS)
set -euo pipefail
SEND_NTFY="/usr/local/bin/send-ntfy.sh"
# Network mounts to check
MOUNTS=(
"/mnt/pve/Fred:NFS Fred (Backups)"
"/mnt/pve/iMacHDD:CIFS iMac"
)
for mount_config in "${MOUNTS[@]}"; do
IFS=':' read -r MOUNT_PATH MOUNT_NAME <<< "$mount_config"
# Check if mount point exists and is mounted
if ! mountpoint -q "$MOUNT_PATH" 2>/dev/null; then
$SEND_NTFY critical "Network Storage Down" "🔴 CRITICAL: $MOUNT_NAME not mounted at $MOUNT_PATH!" "skull,error,cd"
continue
fi
# Check if accessible (with timeout)
if ! timeout 5 ls "$MOUNT_PATH" >/dev/null 2>&1; then
$SEND_NTFY critical "Network Storage Stale" "🔴 CRITICAL: $MOUNT_NAME is STALE/FROZEN at $MOUNT_PATH (timeout)" "skull,error,cd"
continue
fi
# Check disk usage
DISK_INFO=$(df -h "$MOUNT_PATH" 2>/dev/null | tail -1)
USAGE=$(echo "$DISK_INFO" | awk '{print $5}' | sed 's/%//')
USED=$(echo "$DISK_INFO" | awk '{print $3}')
TOTAL=$(echo "$DISK_INFO" | awk '{print $2}')
FREE=$(echo "$DISK_INFO" | awk '{print $4}')
if [ "$USAGE" -gt 90 ]; then
$SEND_NTFY critical "Network Storage Full" "🔴 CRITICAL: $MOUNT_NAME at ${USAGE}%\nUsed: $USED/$TOTAL, Free: $FREE" "cd,skull"
elif [ "$USAGE" -gt 80 ]; then
$SEND_NTFY warning "Network Storage High" "🟡 WARNING: $MOUNT_NAME at ${USAGE}%\nUsed: $USED/$TOTAL, Free: $FREE" "cd,warning"
fi
logger -t network-storage-monitor "$MOUNT_NAME: ${USAGE}% used"
done