Modul 8 · 8.3
Nadzor Vašega strežnika
Modul 8: Varnostne kopije in nadzor · Čas branja: 10 minut
Učni cilj: Po tej lekciji boste znali določiti, kaj na svojem strežniku nadzirate (od zunaj in od znotraj), kateri pragovi so smiselni in kako poskrbite, da Vas obvestilo res doseže, ne da bi se utopili v obvestilih.
Ključni pojmi: nadzor od zunaj, nadzor od znotraj, čas delovanja (uptime), preverjanje http, preverjanje vrat, potek certifikata, prostor na disku, pomnilnik, obremenitev (load), heartbeat (dead man's switch), prag, kanal za obvestila, utrujenost od alarmov, grafi ponudnika
Zakaj nadzor?
Brez nadzora boste za težave izvedeli od svojih strank ali pa sploh ne. Spletno mesto, ki od sobote ne deluje, certifikat, ki je potekel, disk, ki se je napolnil, varnostna kopija, ki že tri tedne tiho ne uspeva: vse to bi lahko pravočasno opazili. Nadzor pomeni, da program neprestano preverja stanje in Vas opozori, ko nekaj ni v redu.
Dober nadzor odgovori na dve vprašanji:
- Ali deluje za uporabnika? To merite od zunaj.
- Ali bo kmalu šlo kaj narobe? To merite od znotraj: disk, pomnilnik, posodobitve, varnostne kopije.
Od zunaj: kar vidi uporabnik
Nadzor od zunaj teče na drugi napravi kot Vaš strežnik, najbolje pri drugem ponudniku. To je logično: če Vaš strežnik ne deluje, sam ne more več opozoriti.
| Pregled | Kaj | Zakaj |
|---|---|---|
| http(s) | vsako minuto naloži stran in preveri kodo stanja (200) ter po želji besedo na strani | spletno mesto res deluje, ne le strežnik |
| vrata | vzpostavi povezavo na primer z vrati 22 ali 443 | storitev posluša in je dosegljiva |
| ping | pošlje paket ICMP | strežnik živi (a o Vašem spletnem mestu ne pove ničesar) |
| certifikat | prebere certifikat in datum poteka | opozori precej pred potekom |
| DNS | poizve po zapisu A | ime še vedno kaže na pravi strežnik |
Certifikat si zasluži posebno pozornost. Certifikati Let's Encrypt veljajo kratek čas in se samodejno obnavljajo (lekcija 7.3), a če obnova tiho ne uspe, boste to opazili šele, ko bodo obiskovalci dobili opozorilo. Let's Encrypt od junija 2025 ne pošilja več e-poštnih opomnikov o certifikatih, ki potekajo, in sam priporoča nadzor. Preverjanje certifikata, ki opozori, ko je veljavnosti manj kot 14 dni, torej ni razkošje.
Razširjen program, s katerim to naredite sami, je Uptime Kuma, ki ga boste v lekciji 9.4 namestili v vsebnik. Po možnosti ga ne postavite na isti strežnik, ki naj ga nadzira, ali pa ga kombinirajte z drugim, zunanjim preverjanjem. Obstajajo tudi storitve tretjih oseb, ki počnejo isto; izberite tisto, ki Vam ustreza, in bodite pozorni na to, kje imajo sedež, če so lahko v obvestilih podatki Vaših strank.
Od znotraj: kar bo kmalu šlo narobe
Nekatere težave od zunaj vidite šele, ko je prepozno. Te merite na samem strežniku:
| Kaj | Kako to vidite | Razumen prag |
|---|---|---|
| Prostor na disku | df -h | opozorilo nad 80 %, alarm nad 90 % |
| Inode (število datotek) | df -i | enako; disk je lahko "poln" z milijoni majhnih datotek |
| Pomnilnik | free -h, sporočila "Out of memory" v journalctl -k | vsako sporočilo OOM je znak |
| Obremenitev (load) | uptime, top | dlje časa višja od števila vCPU-jev |
| Neuspele storitve | systemctl --failed (lekcija 6.1) | vsaka neuspela storitev |
| Posodobitve in ponovni zagon | /var/run/reboot-required, apt list --upgradable (lekcija 4.2) | varnostna posodobitev, starejša od dveh dni |
| Varnostne kopije | konec Vašega skripta za varnostno kopiranje (lekcija 8.2) | vsak neuspel ali izostal zagon |
To lahko naredite s preprostim skriptom in časovnikom (lekcija 6.3), ki ob prekoračitvi pošlje obvestilo, ali s programom za nadzor z agentom na strežniku (znana odprtokodna primera sta Netdata in kombinacija Prometheus z node_exporter). Začnite skromno: disk, neuspele storitve in varnostne kopije ujamejo večino težav.
Grafi na nadzorni plošči Vašega ponudnika (procesor, pomnilnik, omrežje, disk v obdobju od enega dne do enega leta) so odlično dopolnilo za opazovanje trendov: če Vaš disk vsak mesec zraste za nekaj odstotkov, veste, kdaj bo poln. Pri WebOké so na zaslonu VPS; pri drugih ponudnikih podobno. Običajno ne pošiljajo obvestil, zato nadzora ne nadomestijo.
Heartbeat: obvestilo, ko se nič ne zgodi
Nekatere stvari morate nadzirati prav po izostanku signala. Nočna varnostna kopija je najboljši primer: če se skript sploh ne zažene (časovnik izklopljen, strežnik izklopljen, skript pokvarjen), tudi sporočila o napaki ni.
Rešitev se imenuje heartbeat ali dead man's switch: Vaš nadzor vsak dan pričakuje znak. Skript za varnostno kopiranje na koncu, samo če je vse uspelo, pošlje majhno zahtevo http na stalen, skrivni URL Vašega nadzora:
restic backup ... && restic check && curl -fsS -m 10 https://status.example.com/api/push/Xyz123abc?status=up >/dev/nullČe znak en dan ne pride, dobite obvestilo. Uptime Kuma ima za to vrsto nadzornika Push; obstajajo tudi programi, ki jih gostite sami, na primer Healthchecks. Tako z eno vrstico preverite, ali se je Vaša varnostna kopija res izvedla.
Obvestila, ki pridejo, in ne preveč
Obvestilo, ki ga nihče ne prebere, ni nadzor. Uredite tri stvari:
- Kanal za obvestila, ki ga res vidite: potisno obvestilo na telefonu, klepetalni kanal, SMS. E-pošta je mogoča, a le, če lahko Vaš strežnik zanesljivo pošilja pošto, in e-pošto zlahka spregledate. Za najpomembnejša obvestila uporabite dva kanala.
- Neodvisen od tega, kar nadzirate. Če e-pošto o polnem disku pošilja Vaš strežnik sam, ta ne pride, ko je disk poln. Nadzor od zunaj in heartbeat to ujameta.
- Malo, a upravičeno. Če vsak dan dobite deset obvestil, s katerimi ne naredite ničesar, jih boste začeli prezirati, tudi tisto eno, ki je pomembno. Temu pravimo utrujenost od alarmov. Pragove nastavite tako, da obvestilo pomeni: nekaj morate ukreniti. Obvestilo naj se sproži šele po nekaj zaporednih neuspelih preverjanjih (na primer trikrat), da Vas en izgubljen paket ne zbudi.
Preizkusite svoja obvestila: za kratek čas izklopite storitev in preverite, ali obvestilo pride in koliko časa je trajalo.
Česa ne počnite
- Strani nadzora, odprte za vse, z notranjimi imeni in naslovi. Javna stran stanja je dovoljena, a naj prikazuje samo tisto, kar obiskovalci smejo vedeti.
- Skrbniški račun Vašega nadzora brez močnega gesla in 2FA. Kdor ima dostop do Vašega nadzora, lahko obvestila izklopi.
- Agenti z več pravicami, kot jih potrebujejo. Agentu za nadzor običajno ni treba biti root.
Povzetek
- Od zunaj, z druge naprave, nadzirajte, ali stvari delujejo (http, vrata, certifikat, DNS), od znotraj pa, ali bo kmalu šlo kaj narobe (disk, pomnilnik, storitve, posodobitve, varnostne kopije).
- Certifikati si zaslužijo lastno preverjanje: Let's Encrypt od junija 2025 ne pošilja več e-poštnih opomnikov.
- Heartbeat sporoči izostanek znaka; idealno za varnostne kopije in načrtovana opravila.
- Izberite kanal za obvestila, ki ga res vidite in je neodvisen od samega strežnika, ter nastavite pragove tako, da vsako obvestilo zahteva ukrepanje.
- Grafi Vašega ponudnika prikazujejo trende, a običajno ne pošiljajo obvestil.
Kviz
Naloga
Naloga O8.3: Vaš seznam za nadzor. Za svoj strežnik pripravite seznam za nadzor: katera preverjanja od zunaj (s kakšnim intervalom in od kod), katera od znotraj (s pragovi), kateri heartbeat(i) in po katerem kanalu prihajajo obvestila. Nastavite vsaj eno zunanje preverjanje http ali certifikata in en heartbeat (na primer za svojo varnostno kopijo) ter preizkusite obvestilo tako, da za kratek čas izklopite storitev. Zapišite, koliko časa je trajalo, da je obvestilo prišlo.
Naloga O8.3: Vaš seznam za nadzor
To nalogo opravite sami; nihče je ne pregleda. Odkljukajte, kar ste naredili, in nalogo označite kot opravljeno.
Preverjanje od zunaj z drugega računalnika (po možnosti pri drugem ponudniku), vsakih 1 do 5 minut z nekaj ponovitvami. Certifikat 14 dni, disk 80/90 %, systemctl --failed, heartbeat samo ob uspešni varnostni kopiji. Obvestila, ki ne zahtevajo ukrepanja: odstranite jih ali zvišajte prag.
Vaše kljukice in zapiski ostanejo samo v tem brskalniku, nikamor jih ne pošiljamo. Če ste prijavljeni, v Moji tečaji shranimo samo podatek, da ste nalogo opravili.
Za nadaljnje branje
- Nimate več dostopa do svojega VPS: kaj storiti?
- Let's Encrypt, Expiration Notification Service Has Ended: https://letsencrypt.org/2025/06/26/expiration-notification-service-has-ended
- Uptime Kuma (GitHub): https://github.com/louislam/uptime-kuma
- VPS: od prve prijave do varnega strežnika 8.3: Nadzor od zunaj in od znotraj
- VPS: od prve prijave do varnega strežnika 7.1: Uptime Kuma: nadzor Vaših spletnih mest in strežnika
