Operațiuni IT

UPS Manager

UPS-uri de orice marcă monitorizate prin SNMP și oprire ordonată a serverelor la o pană de curent.

Versiune
1.0.0
Stadiu
Stabil
Capturi
4
Înlocuiește
Software-ul fiecărui producător de UPS (Eaton IPM, EcoStruxure)
Starea celor 6 UPS-uri. Fiecare card arată bateria, sarcina, autonomia și temperatura, plus diagrama fluxului de energie. UPS-ul din Ploiești a trecut pe baterie la 09:18 și iese imediat în evidență, cu alertă critică.
Starea celor 6 UPS-uri. Fiecare card arată bateria, sarcina, autonomia și temperatura, plus diagrama fluxului de energie. UPS-ul din Ploiești a trecut pe baterie la 09:18 și iese imediat în evidență, cu alertă critică.

Capturi din aplicație

Cum arată în lucru

Interfața reală Monolit, cu datele unei firme fictive într-o zi obișnuită. Apăsați pe o captură ca s-o vedeți la dimensiune completă.

Tensiuni și evoluție pe UPS. Panoul extins arată tensiunile, puterea și graficul bateriei, al sarcinii și al autonomiei. Pe UPITPL0001 se vede descărcarea din ultimele 23 de minute, comparată cu UPS-urile din București, alimentate normal.
Captura 2 din 4

Tensiuni și evoluție pe UPS

Panoul extins arată tensiunile, puterea și graficul bateriei, al sarcinii și al autonomiei. Pe UPITPL0001 se vede descărcarea din ultimele 23 de minute, comparată cu UPS-urile din București, alimentate normal.

Oprire ordonată pe grup. Grupul „Camera servere București” leagă două UPS-uri de 9 servere și fixează ordinea opririi după pragul de autonomie: întâi aplicațiile, apoi baza de date, controlerul de domeniu, gazdele Proxmox și stocarea.
Captura 3 din 4

Oprire ordonată pe grup

Grupul „Camera servere București” leagă două UPS-uri de 9 servere și fixează ordinea opririi după pragul de autonomie: întâi aplicațiile, apoi baza de date, controlerul de domeniu, gazdele Proxmox și stocarea.

Jurnalul opririlor. Fiecare oprire, pornire prin Wake-on-LAN și test de conexiune rămâne în jurnal, cu rezultat, durată și eroarea exactă. Aici se vede testul eșuat pe app01 (parolă de serviciu expirată), reluat cu succes 25 de minute mai târziu.
Captura 4 din 4

Jurnalul opririlor

Fiecare oprire, pornire prin Wake-on-LAN și test de conexiune rămâne în jurnal, cu rezultat, durată și eroarea exactă. Aici se vede testul eșuat pe app01 (parolă de serviciu expirată), reluat cu succes 25 de minute mai târziu.

1Nivelul 1

Pentru conducere

Ce problemă rezolvă, cum se lucrează cu modulul și ce se poate măsura.

Ce problemă rezolvă

O pană de curent mai lungă decât autonomia UPS-urilor oprește serverele brusc. Rezultatul tipic: baze de date corupte, fișiere pierdute, ore de repornire manuală. De multe ori nimeni nu află la timp că un UPS a trecut pe baterie, mai ales într-o locație fără personal IT.

UPS Manager urmărește toate UPS-urile din firmă dintr-un singur ecran și oprește serverele în ordinea stabilită, înainte să se descarce bateriile.

Ce face, concret

  • Citește starea fiecărui UPS prin rețea: nivelul bateriei, sarcina, autonomia rămasă, temperatura, tensiunile de intrare și ieșire.
  • Arată pentru fiecare UPS o diagramă a fluxului de energie. La pierderea alimentării, diagrama și cardul se colorează imediat.
  • Păstrează istoricul măsurătorilor și îl afișează pe grafic pe 6 ore, 24 de ore, 3 sau 7 zile.
  • Grupează UPS-urile și serverele alimentate de ele. Pentru fiecare server se stabilește la ce autonomie rămasă se oprește.
  • La pierderea alimentării, oprește automat serverele unul câte unul, după prag. La revenirea curentului le poate porni la loc prin Wake-on-LAN.
  • Trimite alerte pe e-mail și SMS, cu niveluri alese pe fiecare grup (informare, avertizare, critic).
  • Ține un jurnal al fiecărei opriri, porniri și test de conexiune, exportabil în CSV.
  • Descoperă automat UPS-urile dintr-o subrețea.

Fluxuri de lucru

1. Pană de curent într-o locație

  1. UPS-ul trece pe baterie. Monolit generează o alertă critică și o trimite pe e-mail sau SMS.
  2. Cardul UPS-ului devine galben; grupul arată autonomia rămasă și pragul la care începe oprirea.
  3. Dacă autonomia coboară sub prag, serverele din grup primesc comanda de oprire în ordinea configurată.
  4. La revenirea curentului, serverele marcate pentru pornire automată sunt pornite prin Wake-on-LAN, după întârzierea setată.
  5. Totul rămâne în jurnal, cu ora, rezultatul și durata fiecărei operații.

2. Mentenanță electrică programată

  1. Echipa IT deschide grupul afectat și apasă „Shutdown all”.
  2. Serverele se opresc eșalonat, în ordinea din cronologie.
  3. După lucrare, serverele fizice se pornesc prin Wake-on-LAN din aceeași pagină.

3. Verificare periodică

  1. Înainte de o mentenanță, tehnicianul rulează „Test conexiune” pe fiecare server.
  2. Un test eșuat (de exemplu o parolă de serviciu expirată) apare în jurnal cu eroarea exactă și se corectează înainte de o pană reală.

Beneficii și indicatori

  • Timp până la aflarea unei pene: secunde, prin alertă, în loc de sesizarea utilizatorilor.
  • Număr de opriri necontrolate ale serverelor la pană de curent: ținta este zero.
  • Pentru fiecare grup: autonomia rămasă comparată cu pragul de oprire, vizibilă în timp real.
  • Rata testelor de conexiune reușite, urmărită în jurnal.
  • Numărul de UPS-uri online, pe baterie și offline, plus alertele critice, pe panoul principal.

2Nivelul 2

Pentru echipa IT

Arhitectură, integrări, API, roluri și limitările cunoscute.

Arhitectură

  • Serviciu ups_manager, versiunea 1.0.0, port 8003, rutat prin nginx la /api/ups/.
  • Schema SQL ups în baza de date comună Monolit.
  • Depinde de core_service (min. 1.0.0) pentru autentificare.
  • Variabile de mediu obligatorii: DB_HOST, DB_USER, DB_PASSWORD, SECRET_KEY.
  • Interfața reîmprospătează sumarul și ultima citire a fiecărui UPS la 30 de secunde, lista de UPS-uri la 60 de secunde și agregatul unui grup la 15 secunde.

Integrări și protocoale

  • Citire UPS: SNMP v3 (recomandat, cu authPriv, SHA/AES), NUT (port 3493), USB sau serial prin NUT.
  • Descoperire: scanare SNMP v3 pe o subrețea, maximum /22 (1024 de adrese); UPS-urile deja adăugate sunt marcate.
  • Oprirea serverelor:
    • SSH, pentru Linux, gazde Proxmox, VMware ESXi, TrueNAS, Synology;
    • WinRM (NTLM, Basic sau Kerberos, HTTP sau HTTPS), pentru Windows Server și Hyper-V;
    • API-ul REST Proxmox, cu token;
    • IPMI (lanplus, acțiuni soft/off/cycle/reset);
    • Redfish (de exemplu GracefulShutdown).
  • Pentru fiecare tip există un preset cu comanda de oprire implicită, care poate fi modificată.
  • Pornire: Wake-on-LAN, manual sau automat după revenirea curentului, cu întârziere configurabilă.
  • Webhook-uri opționale pe server: înainte de oprire și după revenire.
  • Evenimente publicate pe magistrala internă: ups.critical_alert, ups.battery_low, ups.power_failure. SOC le primește fără configurare suplimentară.

Logica de oprire

  • Fiecare server are un prag de autonomie (minute) și o întârziere de pornire a opririi, pentru eșalonare.
  • Ordinea din cronologie este descrescătoare după prag: serverul cu pragul cel mai mare se oprește primul.
  • Autonomia grupului se calculează doar pe UPS-urile aflate pe baterie, după metoda aleasă pe grup:
    • MAX, recomandat pentru servere cu surse redundante;
    • AVG, media;
    • MIN, varianta conservatoare.
  • Pe grup se configurează: oprirea automată, pragurile implicite (autonomie și baterie), pragurile de alertă (baterie scăzută/critică, sarcină, temperatură), destinatarii și nivelurile pentru e-mail și SMS.

Endpoint-uri notabile

  • GET /api/ups/summary: câte UPS-uri sunt online, pe baterie și offline, plus alertele critice și necitite. Folosit și de panoul principal.
  • GET /api/ups/devices/{id}/metrics?hours= și /metrics/latest: istoricul și ultima citire.
  • GET /api/ups/groups/{id}/aggregate: autonomia și bateria agregate pe grup.
  • POST /api/ups/groups/{id}/shutdown-all: oprire manuală a tuturor serverelor din grup.
  • POST /api/ups/servers/{id}/test-connection, /shutdown, /wol.
  • GET /api/ups/shutdown-log: jurnalul, cu filtre pe server și UPS.
  • POST /api/ups/discover: scanarea SNMP v3.
  • WebSocket /api/ups/ws pentru evenimente în timp real.
  • Contractul module.yaml declară 17 endpoint-uri (16 HTTP și un WebSocket). Clientul web definește încă 18 rute, pentru grupuri, servere, jurnal și descoperire. În total sunt 35.

Roluri și audit

  • Toate rutele cer autentificare. Contractul nu definește roluri dedicate pentru modul.
  • Parolele, cheile SSH și token-urile se trimit o singură dată și se criptează pe server. Interfața afișează doar dacă există.
  • Fiecare oprire, pornire și test se înregistrează: cine sau ce a declanșat operația, codul de ieșire, durata, stdout, stderr și eroarea.

Cerințe

  • Plăci de rețea în UPS-uri cu SNMP v3, sau un server NUT.
  • Pe servere: un cont de serviciu cu drept de oprire (SSH cu cheie, WinRM activ, token Proxmox sau acces BMC).
  • Pentru Wake-on-LAN: adresa MAC și WoL activat în BIOS sau BMC.

Limitări și ce e în plan

  • GET /api/ups/maintenance și GET/PUT /api/ups/settings apar în contract, dar interfața actuală nu le folosește încă.
  • Funcția battery-health există în client, dar nu are încă un ecran dedicat.
  • Etichetele din diagrama fluxului de energie sunt în engleză.