#!/bin/bash # Alertă când pvemini e unreachable — rulează pe pveelite din cron 1 min # Deployed la /opt/scripts/pvemini-down-alert.sh pe pveelite # Stateful: alertează o dată după 2 minute consecutive DOWN, reset la UP set -euo pipefail # Cron rulează cu PATH minimal (/usr/bin:/bin). ha-manager e în /usr/sbin, deci # fără linia asta secțiunea "HA status" din alertă iese goală, tăcut: # /opt/scripts/pvemini-down-alert.sh: line 38: ha-manager: command not found export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" PRIMARY_IP=10.0.20.201 STATE=/var/run/pvemini-down-alert.state MAIL_TO=mmarius28@gmail.com THRESHOLD=2 # min consecutive COUNT=0 [[ -f "$STATE" ]] && COUNT=$(cat "$STATE") if ping -c 2 -W 2 "$PRIMARY_IP" &>/dev/null; then if [[ "$COUNT" -ge "$THRESHOLD" ]]; then # Recovery echo "pvemini revenit online la $(date)" | \ mail -r 'ups@romfast.ro' -s "[OK] pvemini UP" "$MAIL_TO" fi echo 0 > "$STATE" exit 0 fi COUNT=$((COUNT + 1)) echo "$COUNT" > "$STATE" # Alertează o singură dată când atingem threshold if [[ "$COUNT" -eq "$THRESHOLD" ]]; then { echo "pvemini (10.0.20.201) NU răspunde la ping de $THRESHOLD minute" echo "Timp: $(date)" echo echo "Stare cluster:" pvecm status 2>&1 | head -20 || true echo echo "HA status:" ha-manager status 2>&1 || true echo echo "==========================================" echo "Guest-urile HA (inclusiv VM 201 si CT 108) se muta AUTOMAT" echo "dupa prioritatea grupurilor HA (VM 201 -> pve1) si revin singure" echo "pe pvemini cand acesta e din nou stabil (nofailback=0)." echo echo "NU porni manual guest-uri HA pe alt nod: intra in conflict cu HA." echo "Scripturile vechi failover-vm201/recover-vm201 sunt arhivate" echo "(proxmox/cluster/failover/arhiva/)." echo echo "De urmarit: ssh root@10.0.20.202 ha-manager status" echo "Backup-uri Oracle, daca pica si pveelite: dashboard -> Infrastructura" echo "==========================================" } | mail -r 'ups@romfast.ro' -s "[CRITIC] pvemini DOWN $THRESHOLD min" "$MAIL_TO" fi