Monitoring Vašeho serveru
Modul 8: Zálohy a monitoring · Doba čtení: 10 min.
Cíl lekce: Po této lekci budete umět určit, co na svém serveru hlídáte (zvenku i zevnitř), jaké prahy dávají smysl a jak zajistit, aby Vás upozornění opravdu zastihlo, aniž byste se v upozorněních utopili.
Klíčové pojmy: monitoring zvenku, monitoring zevnitř, uptime, kontrola http, kontrola portu, vypršení certifikátu, místo na disku, paměť, load, heartbeat (dead man's switch), práh, kanál pro upozornění, únava z upozornění, grafy poskytovatele
Proč monitorovat?
Bez monitoringu se o problémech dozvíte od svých zákazníků, nebo vůbec. Web, který od soboty nefunguje, certifikát, který vypršel, disk, který se zaplnil, záloha, která už tři týdny potichu selhává: to vše jste mohli včas zachytit. Monitoring znamená, že program nepřetržitě sleduje stav a upozorní Vás, když něco nesedí.
Dobrý monitoring odpovídá na dvě otázky:
- Funguje to pro uživatele? To měříte zvenku.
- Pokazí se brzy něco? To měříte zevnitř: disk, paměť, aktualizace, zálohy.
Zvenku: co vidí uživatel
Monitoring zvenku běží na jiném stroji než Váš server, nejlépe u jiného poskytovatele. Je to logické: když Váš server nefunguje, sám už upozornit nemůže.
| Kontrola | Co dělá | Proč |
|---|---|---|
| http(s) | každou minutu načte stránku a zkontroluje stavový kód (200), případně slovo na stránce | web opravdu funguje, nejen server |
| port | naváže spojení například na port 22 nebo 443 | služba naslouchá a je dostupná |
| ping | pošle paket ICMP | server žije (o Vašem webu ale nic neříká) |
| certifikát | přečte certifikát a datum vypršení | upozorní s dostatečným předstihem před vypršením |
| DNS | dotáže se na záznam A | název stále ukazuje na správný server |
Certifikát si zaslouží zvláštní pozornost. Certifikáty Let's Encrypt mají krátkou platnost a obnovují se automaticky (lekce 7.3), ale pokud obnova potichu selže, zjistíte to až ve chvíli, kdy návštěvníci uvidí varování. Let's Encrypt od června 2025 už neposílá připomínkové e-maily o končících certifikátech a sám doporučuje monitoring. Kontrola certifikátu, která upozorní při platnosti kratší než 14 dní, tedy není žádný luxus.
Běžným programem, se kterým to zvládnete sami, je Uptime Kuma, který v lekci 9.4 nainstalujete do kontejneru. Neinstalujte ho pokud možno na stejný server, který má hlídat, nebo ho zkombinujte s druhou, externí kontrolou. Existují také služby třetích stran, které dělají totéž; vyberte si takovou, která Vám vyhovuje, a pokud se v upozorněních mohou objevit údaje Vašich zákazníků, dbejte na to, kde tato služba sídlí.
Zevnitř: co se brzy pokazí
Některé problémy zvenku uvidíte, až když je pozdě. Ty měříte přímo na serveru:
| Co | Jak to zjistíte | Rozumný práh |
|---|---|---|
| Místo na disku | df -h | varování nad 80 %, poplach nad 90 % |
| Inody (počet souborů) | df -i | totéž; disk může být "plný" miliony malých souborů |
| Paměť | free -h, hlášení "Out of memory" v journalctl -k | každé hlášení OOM je signál |
| Load | uptime, top | dlouhodobě vyšší než počet vCPU |
| Selhané služby | systemctl --failed (lekce 6.1) | každá selhaná služba |
| Aktualizace a restart | /var/run/reboot-required, apt list --upgradable (lekce 4.2) | bezpečnostní aktualizace starší než dva dny |
| Zálohy | konec Vašeho zálohovacího skriptu (lekce 8.2) | každý selhaný nebo vynechaný běh |
Můžete to řešit jednoduchým skriptem a časovačem (lekce 6.3), který při překročení prahu pošle upozornění, nebo monitorovacím programem s agentem na serveru (známými open-source příklady jsou Netdata a kombinace Prometheus s node_exporter). Začněte v malém: disk, selhané služby a zálohy zachytí většinu problémů.
Grafy v panelu Vašeho poskytovatele (procesor, paměť, síť, disk za období od jednoho dne po rok) jsou výborným doplňkem pro sledování trendů: pokud Váš disk každý měsíc naroste o několik procent, víte, kdy se zaplní. U WebOké je najdete na obrazovce VPS, u jiných poskytovatelů podobně. Obvykle ale neposílají upozornění, takže monitoring nenahrazují.
Heartbeat: upozornění, když se nic nestane
Některé věci je naopak potřeba hlídat podle toho, že signál nepřijde. Nejlepším příkladem je dnešní noční záloha: když se skript vůbec nespustí (vypnutý časovač, vypnutý server, rozbitý skript), nepřijde ani chybová zpráva.
Řešení se jmenuje heartbeat neboli dead man's switch: Váš monitoring každý den očekává signál. Zálohovací skript na konci, a jen pokud vše proběhlo úspěšně, pošle malý http požadavek na pevnou, tajnou URL Vašeho monitoringu:
restic backup ... && restic check && curl -fsS -m 10 https://status.example.com/api/push/Xyz123abc?status=up >/dev/nullPokud signál jeden den nepřijde, dostanete upozornění. Uptime Kuma má pro tento účel typ monitoru Push; existují i programy, které můžete hostovat sami, například Healthchecks. Jediným řádkem tak ohlídáte, zda Vaše záloha opravdu proběhla.
Upozornění, která dorazí, a ne příliš mnoho
Upozornění, které nikdo nečte, není monitoring. Zajistěte tři věci:
- Kanál pro upozornění, který opravdu sledujete: push notifikaci v telefonu, chatovací kanál, SMS. E-mail je možný, ale jen pokud Váš server umí spolehlivě odesílat poštu, a e-mail se snadno přehlédne. Pro nejdůležitější upozornění používejte dva kanály.
- Nezávislost na tom, co hlídáte. Pokud e-mail o plném disku posílá samotný server, nedorazí, když je disk plný. To zachytí monitoring zvenku a heartbeat.
- Málo, ale oprávněně. Pokud každý den dostáváte deset upozornění, se kterými nic neděláte, začnete je ignorovat, i to jedno, na kterém záleží. Tomu se říká únava z upozornění. Nastavte prahy tak, aby upozornění znamenalo: musíte něco udělat. Nechte upozornění spustit až po několika neúspěšných kontrolách za sebou (například třikrát), aby Vás jeden ztracený paket nevzbudil.
Svá upozornění otestujte: na chvíli vypněte službu a sledujte, zda upozornění přijde a jak dlouho to trvalo.
Čemu se vyhnout
- Monitorovací stránky přístupné všem s interními názvy a adresami. Veřejná stavová stránka je v pořádku, ale ukazujte na ní jen to, co návštěvníci smějí vědět.
- Správcovský účet monitoringu bez silného hesla a 2FA. Kdo se dostane do Vašeho monitoringu, může upozornění vypnout.
- Agenti s většími oprávněními, než je nutné. Monitorovací agent obvykle nemusí běžet jako root.
Shrnutí
- Zvenku, z jiného stroje, hlídejte, zda vše funguje (http, port, certifikát, DNS), a zevnitř, zda se brzy něco nepokazí (disk, paměť, služby, aktualizace, zálohy).
- Certifikáty si zaslouží vlastní kontrolu: Let's Encrypt od června 2025 už neposílá připomínkové e-maily.
- Heartbeat upozorní, když signál nepřijde; ideální pro zálohy a plánované úlohy.
- Zvolte kanál pro upozornění, který opravdu sledujete, nezávislý na samotném serveru, a nastavte prahy tak, aby každé upozornění vyžadovalo akci.
- Grafy Vašeho poskytovatele ukazují trendy, ale obvykle neposílají upozornění.
Kvíz
Úkol
Úkol O8.3: Váš seznam pro monitoring. Sestavte pro svůj server seznam pro monitoring: které kontroly zvenku (s jakým intervalem a odkud), které zevnitř (s prahy), jaký heartbeat (případně jaké) a jakým kanálem budou upozornění přicházet. Nastavte alespoň jednu externí kontrolu http nebo certifikátu a jeden heartbeat (například pro Vaši zálohu) a upozornění otestujte tak, že na chvíli vypnete službu. Poznamenejte si, jak dlouho trvalo, než upozornění přišlo.
Úkol O8.3: Váš seznam pro monitoring
Tento úkol provádíte sami; nikdo ho nekontroluje. Odškrtněte, co jste udělali, a označte úkol jako splněný.
Kontrola zvenku z jiného stroje (nejlépe u jiného poskytovatele), každou 1 až 5 minut s několika opakováními. Certifikát 14 dní, disk 80/90 %, systemctl --failed, heartbeat jen při úspěšné záloze. Upozornění, která nevyžadují žádnou akci: odstranit nebo zvýšit práh.
Vaše zaškrtnutí a poznámky zůstávají pouze v tomto prohlížeči; nikam je neposíláme. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol splnili.
Doporučujeme k přečtení
- Žádný přístup k VPS: co teď?
- 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
