Răspuns scurt
- Monitorizezi serverul colectând trei lucruri separate: metrici de resurse și de aplicație, loguri de sistem și de aplicație, evenimente de securitate din auditd și din jurnalul de autentificare.
- Pui Prometheus cu node_exporter pentru metrici, Loki pentru loguri și Grafana pentru alertare, toate pe altă mașină decât cea monitorizată.
- Definești alertele pe obiective de nivel de serviciu (rata de erori și latența), nu pe fiecare fluctuație de CPU.
- Trimiți alertele pe un canal citit efectiv noaptea, cu instrucțiuni pentru fiecare.
- Păstrezi logurile cât să reconstitui un incident și să răspunzi Agenției pentru Securitate Cibernetică sau clientului.
- Metrici de sistem
- node_exporter pe portul 9100, doar din rețeaua privată
- Loguri de securitate obligatorii
- auth.log sau journal sshd, sudo, auditd, nginx access și error
- Unde stau logurile
- pe altă mașină; loguri de securitate cel puțin 6 luni, restul 90 de zile
- Ce declanșează alerta
- SLO încălcat, nu un prag arbitrar de CPU
Trei fluxuri, trei întrebări diferite
Metricile răspund la „merge bine?”: încărcare, memorie, disc, latență, erori 5xx. Logurile răspund la „ce s-a întâmplat?”: cine s-a autentificat, ce cereri au dat eroare, ce a scris aplicația. Evenimentele de securitate răspund la „a făcut cineva ce nu trebuia?”: sudo la ore ciudate, fișiere modificate în /etc, un proces nou care ascultă pe un port. Un grafic de CPU nu răspunde la ultimele două.
Centralizarea pe altă mașină nu este opțională
Primul lucru pe care îl face un atacator cu root este să curețe jurnalul. Dacă logurile pleacă în timp real către un server separat, cu acces doar de scriere, curățenia locală nu mai ajută. La fel pentru metrici: Prometheus stă pe mașina de monitorizare și citește exporterii. O mașină pentru zece servere costă mai puțin decât o zi de investigație fără loguri.
- Grafana Alloy (Promtail a ieșit din suport în martie 2026) trimite journal și fișiere către Loki
- auditd cu reguli pe /etc, /usr/bin, sudoers și chei SSH
- exporterii accesibili doar din rețeaua privată
- 90 de zile pentru loguri, 6 luni pentru cele de securitate, un an pentru metrici
Alerte pe care le citește cineva
O alertă la fiecare vârf de CPU e ignorată după o săptămână, iar cea importantă se pierde între ele. Definește obiective de nivel de serviciu: 99,9 % din cereri sub 500 ms, sub 0,5 % erori 5xx, certificat TLS cu peste 14 zile până la expirare, disc sub 80 %. Alertezi când obiectivul e în pericol, cu text care spune ce are de făcut cel de gardă. Securitatea are canal separat: SSH reușit dintr-o țară nouă, sudo pe cont de serviciu, /etc/passwd modificat.
Monitorizarea ca obligație, nu doar ca bună practică
HG nr. 562/2025 cere furnizorilor identificați conform Legii nr. 48/2023 proceduri de monitorizare și jurnalizare, revizuirea periodică a jurnalelor și copii de rezervă, plus notificarea Agenției pentru Securitate Cibernetică la incidente cu impact semnificativ. Nu poți notifica un incident nedetectat și nici completa raportul final fără loguri. Legea nr. 195/2024 pornește termenul de notificare a CNPDCP din momentul în care ai aflat, deci detectarea târzie nu-l prelungește.
Ce monitorizezi pe un server de producție și cu ce| Semnal | Unealtă | Alertă tipică | Retenție |
|---|
| Resurse de sistem | node_exporter + Prometheus | disc peste 80 %, memorie epuizată, load susținut | 1 an agregat |
|---|
| Aplicație web | exporter nginx / aplicație | erori 5xx peste 0,5 %, latență p95 peste SLO | 1 an agregat |
|---|
| Loguri de sistem și aplicație | Grafana Alloy + Loki | erori repetate, restarturi de serviciu | 90 de zile |
|---|
| Autentificare și sudo | journal sshd + auditd | login reușit din adresă nouă, sudo pe cont de serviciu | cel puțin 6 luni |
|---|
| Certificate și domenii | blackbox_exporter | certificat sub 14 zile, endpoint indisponibil | 6 luni |
|---|
Comenzi și configurări
node_exporter accesibil doar din rețeaua privată# /etc/systemd/system/node_exporter.service (fragment)
ExecStart=/usr/local/bin/node_exporter --web.listen-address=10.10.0.5:9100
# firewall: doar serverul de monitorizare
ufw allow from 10.10.0.2 to any port 9100 proto tcp
Reguli auditd pentru fișierele sensibile# /etc/audit/rules.d/hardening.rules
-w /etc/passwd -p wa -k identity
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers
-w /etc/ssh/sshd_config -p wa -k sshd
-w /root/.ssh/ -p wa -k ssh_keys
-a always,exit -F arch=b64 -S execve -F euid=0 -F auid>=1000 -F auid!=unset -k root_cmds
# apoi: augenrules --load && auditctl -l
Regulă de alertă Prometheus pe rata de erorigroups:
- name: web-slo
rules:
- alert: RataErori5xxPesteSLO
expr: sum(rate(nginx_vts_server_requests_total{code="5xx"}[5m])) / sum(rate(nginx_vts_server_requests_total{code="total"}[5m])) > 0.005
# necesită nginx-module-vts + nginx-vts-exporter; cu stub_status simplu nu ai defalcare pe cod
for: 10m
labels: { severity: page }
annotations:
summary: "Peste 0,5 % erori 5xx timp de 10 minute"
runbook: "https://wiki.exemplu.md/runbook/5xx"
Exemple din practică
Outsourcing din Chișinău, servere pentru trei clienți din UE
Un client a întrebat cine a accesat serverul lui în ultimele 30 de zile; logurile locale fuseseră rotite după 7. După centralizarea în Loki cu retenție de șase luni și auditd pe sudo și chei SSH, raportul pleacă lunar dintr-o interogare.
Magazin online din Bălți, vârf de vânzări în decembrie
Serverul cădea la 2 dimineața fiindcă discul se umplea cu loguri de depanare. Alerta pe „disc peste 80 %” a venit cu trei zile înainte, iar rotația s-a reparat fără oprire.
Instituție din Cahul, portal de programări
O conectare SSH reușită dintr-o adresă străină, la ora 4, a fost primul semn al unei chei compromise. Cheia a fost revocată în zece minute, iar logurile centralizate au arătat că atacatorul nu rulase nimic.
Greșeli frecvente
- Ții logurile doar pe serverul monitorizat, deci atacatorul cu root le șterge cu tot cu urme.
- Alertezi pe praguri de CPU și memorie, nu pe erorile și latența văzute de client.
- Expui node_exporter sau Grafana public, dând atacatorului harta infrastructurii.
- Nu ai alertă pe expirarea certificatului TLS și afli de la clienți că site-ul „dă eroare”.
- Trimiți alertele pe un e-mail comun, necitit după program.
Cum te ajută 4hosting
- CI/CD & Monitoring instalează Grafana, Prometheus și Loki pe o mașină separată de producție și definește alertele pe SLO, cu runbook.
- SIEM & Incident Response corelează logurile de pe toate serverele și livrează planul de răspuns și raportul post-incident pentru client sau autoritate.
- Orele de DevOps incluse (1–8 lunar la VPS, 10 la dedicate și GPU) acoperă configurarea exporterilor și a regulilor auditd; le ceri din panoul de client; orele se consumă în luna calendaristică, fără reportare.
- Factură în euro, cu TVA-ul local defalcat; suport în engleză și română.
Întrebări conexe
Cât timp trebuie să păstrez logurile?
Cât să poți reconstitui un incident descoperit târziu și să răspunzi clientului sau autorității: 90 de zile pentru logurile de acces web, cel puțin șase luni pentru cele de securitate (autentificări, sudo, auditd) și un an pentru metrici agregate. Clienții din UE pot cere mai mult, deci citește anexa de securitate.
Grafana Cloud sau un serviciu SaaS de monitorizare este acceptabil?
Pentru metrici, de regulă da. Pentru loguri, verifică unde ajung datele: ele conțin adesea date personale, iar clientul din UE poate limita transferul prin contract. O instanță proprie pe un VPS în UE evită discuția.