Add UPS email notifications and automatic UPS shutdown
- Add email notifications via PVE::Notify for all UPS events: - ONBATT: when UPS switches to battery - ONLINE: when power is restored - LOWBATT: critical battery level - SHUTDOWN_START/NODE/PRIMARY: during cluster shutdown - COMMBAD: communication lost with UPS - Add automatic UPS shutdown command after cluster shutdown (protects against power surge when power returns) - Update upssched.conf with ONLINE handler and immediate ONBATT notification - Add notification templates for HTML and text emails - Update documentation with new features and timer configuration Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -56,9 +56,9 @@ NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
|
||||
|
||||
#### 5. /etc/nut/upssched.conf
|
||||
Scheduler pentru evenimente:
|
||||
- **ONBATT:** Așteaptă 180 secunde (3 minute) înainte de shutdown
|
||||
- **LOWBATT:** Shutdown imediat
|
||||
- **ONLINE:** Anulează toate timer-ele
|
||||
- **ONBATT:** Notificare email imediată + așteaptă 180 secunde (3 minute) înainte de shutdown
|
||||
- **LOWBATT:** Shutdown imediat + notificare email
|
||||
- **ONLINE:** Anulează timer-ele + notificare email "curent revenit"
|
||||
|
||||
### Scripturi Create
|
||||
|
||||
@@ -67,13 +67,17 @@ Scheduler pentru evenimente:
|
||||
|
||||
Ordinea de operații:
|
||||
1. Verifică status UPS (trebuie OB sau LB)
|
||||
2. Oprește toate VM-urile de pe toate nodurile (paralel)
|
||||
3. Așteaptă 90 secunde
|
||||
4. Shutdown pve1 și pve2 (secundare)
|
||||
5. Așteaptă 30 secunde
|
||||
6. Shutdown pvemini (primary - ultimul)
|
||||
2. **📧 Email: "Shutdown cluster PORNIT"**
|
||||
3. Oprește toate VM-urile și LXC de pe toate nodurile (paralel)
|
||||
4. Așteaptă 90 secunde pentru oprire graceful
|
||||
5. Shutdown pve1 → **📧 Email: "Shutdown pve1 trimis"**
|
||||
6. Shutdown pveelite → **📧 Email: "Shutdown pveelite trimis"**
|
||||
7. Așteaptă 60 secunde
|
||||
8. **📧 Email: "Shutdown pvemini (ULTIMUL NOD)"**
|
||||
9. Comandă UPS shutdown (oprire completă UPS)
|
||||
10. Shutdown pvemini (primary - ultimul)
|
||||
|
||||
Logare: `/var/log/ups-shutdown.log`
|
||||
Logare: `/var/log/ups-shutdown.log` + `journalctl -t ups-shutdown`
|
||||
|
||||
#### 2. /usr/local/bin/ups-shutdown-test.sh
|
||||
**Script de test (DRY RUN) - NU oprește nimic**
|
||||
@@ -85,12 +89,15 @@ tail -f /var/log/ups-shutdown-test.log
|
||||
```
|
||||
|
||||
#### 3. /usr/local/bin/upssched-cmd
|
||||
**Handler pentru evenimente UPS**
|
||||
**Handler pentru evenimente UPS** - trimite notificări email via PVE::Notify
|
||||
|
||||
Apelat automat de upssched când:
|
||||
- UPS pe baterie 3 minute → lansează shutdown orchestrat
|
||||
- Baterie scăzută → shutdown imediat
|
||||
- Pierdere comunicație → doar logging
|
||||
| Eveniment | Acțiune | Email |
|
||||
|-----------|---------|-------|
|
||||
| `onbatt_start` | UPS trece pe baterie | "Trecere pe baterie - Timer 3 min" |
|
||||
| `onbatt` | Timer 3 min expirat | "Pe baterie 3 min - SHUTDOWN" + lansare shutdown |
|
||||
| `online` | Curent revenit | "Curent revenit - OK" |
|
||||
| `lowbatt` | Baterie critică | "BATERIE CRITICĂ" + shutdown imediat |
|
||||
| `commbad` | Comunicație pierdută | "Comunicație pierdută cu UPS" |
|
||||
|
||||
Logare: `/var/log/ups-events.log`
|
||||
|
||||
@@ -156,24 +163,33 @@ tail -f /var/log/ups-events.log
|
||||
|
||||
### Scenario 1: Întrerupere Scurtă (< 3 minute)
|
||||
1. Curent se întrerupe → UPS trece pe baterie
|
||||
2. Timer de 180 secunde pornește
|
||||
3. Curent revine → Timer anulat
|
||||
4. **Rezultat:** Niciun sistem nu se oprește
|
||||
2. **📧 Email: "Trecere pe baterie"**
|
||||
3. Timer de 180 secunde pornește
|
||||
4. Curent revine → Timer anulat
|
||||
5. **📧 Email: "Curent revenit - OK"**
|
||||
6. **Rezultat:** Niciun sistem nu se oprește
|
||||
|
||||
### Scenario 2: Întrerupere Lungă (> 3 minute)
|
||||
1. Curent se întrerupe → UPS trece pe baterie
|
||||
2. Timer 180 secunde expiră
|
||||
3. Scriptu de shutdown pornește:
|
||||
- VM-uri se opresc pe toate nodurile
|
||||
- După 90s: pve1, pve2 se opresc
|
||||
- După încă 30s: pvemini se oprește
|
||||
4. **Rezultat:** Shutdown orchestrat complet
|
||||
2. **📧 Email: "Trecere pe baterie"**
|
||||
3. Timer 180 secunde expiră
|
||||
4. **📧 Email: "Pe baterie 3 min - SHUTDOWN"**
|
||||
5. Script de shutdown pornește:
|
||||
- **📧 Email: "Shutdown cluster PORNIT"**
|
||||
- VM-uri/LXC se opresc pe toate nodurile
|
||||
- După 90s: pve1 se oprește → **📧 Email**
|
||||
- pveelite se oprește → **📧 Email**
|
||||
- După 60s: **📧 Email: "Shutdown pvemini (ULTIMUL NOD)"**
|
||||
- UPS primește comandă shutdown
|
||||
- pvemini se oprește
|
||||
6. **Rezultat:** Shutdown orchestrat complet + UPS oprit
|
||||
|
||||
### Scenario 3: Baterie Scăzută Imediată
|
||||
1. UPS raportează LOWBATT
|
||||
2. Shutdown **IMEDIAT** (fără timer)
|
||||
3. Același flux de shutdown orchestrat
|
||||
4. **Rezultat:** Shutdown rapid pentru protecție
|
||||
2. **📧 Email: "BATERIE CRITICĂ - SHUTDOWN IMEDIAT"**
|
||||
3. Shutdown **IMEDIAT** (fără timer)
|
||||
4. Același flux de shutdown orchestrat
|
||||
5. **Rezultat:** Shutdown rapid pentru protecție + UPS oprit
|
||||
|
||||
## Loguri și Troubleshooting
|
||||
|
||||
@@ -234,4 +250,4 @@ tail -20 /var/log/ups-events.log
|
||||
## Contact și Suport
|
||||
- Documentație NUT: https://networkupstools.org/
|
||||
- Script creat: 2025-10-06
|
||||
- Ultima modificare: 2025-10-06
|
||||
- Ultima modificare: 2026-01-13 (adăugat notificări email + UPS shutdown)
|
||||
|
||||
Reference in New Issue
Block a user