Skip to content
VDS · Monitoring a výkon

Upozornenia na výpadok stránky

Ako sa o nedostupnosti služby dozvedieť skôr než používatelia: externé kontroly, jednoduchý watchdog priamo na serveri a automatický reštart služby.

Aktualizované 23. augusta 2026

Grafy v ovládacom paneli ukazujú stav stroja, ale neodpovedajú na otázku „je stránka hore?“ Aplikácia môže zamrznúť, kým je CPU nečinný, a bez externého overenia sa o tom dozvieš až od svojich klientov.

Externé kontroly

Hlavné pravidlo: nekontroluj zo stroja, ktorý sleduješ. Použi akúkoľvek externú službu na sledovanie dostupnosti — je ich veľa, vrátane bezplatných plánov pre niekoľko adries s jednominútovým intervalom. Nastavenia, na ktorých naozaj záleží:

  • Adresa kontroly. Nie domovská stránka, ale samostatná cesta ako /healthz, ktorá overí aj databázu, aj front. Inak sa bude poskytovať aj z vyrovnávacej pamäte domovská stránka, keď je backend mŕtvy.
  • Očakávaná odpoveď. Kód 200 plus podreťazec v tele. Mnohé aplikácie vrátia 200 s chybovou správou, keď sa pokazia.
  • Prah. Dva alebo tri neúspešné pokusy za sebou, inak ťa zobudí každé zakolísanie siete.
  • Kanál. Telegram alebo email. Uisti sa, že upozornenie naozaj dorazí: vypni službu na minútu a počkaj na správu.

Nezabudni na samostatnú kontrolu expirácie certifikátu — expirovaný TLS certifikát vyzerá ako výpadok a stáva sa to pravidelne.

Watchdog priamo na stroji

Externé sledovanie ti povie, že stránka je dole. Aby sa sama vrátila hore, nastav systemd. V unit súbore služby:

[Service]
Restart=always
RestartSec=5
StartLimitBurst=5
StartLimitIntervalSec=120

Takto služba prežije náhodný pád, ale nebude sa donekonečna opakovať, ak je konfigurácia pokazená. Po úprave: systemctl daemon-reload && systemctl restart myapp.

Pre aplikácie, ktoré nespadnú, ale zamrznú, pridaj HTTP kontrolu. Dvojica unitov — časovač a služba:

cat >/etc/systemd/system/healthcheck.service <<'EOF'
[Service]
Type=oneshot
ExecStart=/usr/local/bin/healthcheck.sh
EOF

cat >/etc/systemd/system/healthcheck.timer <<'EOF'
[Timer]
OnUnitActiveSec=60
[Install]
WantedBy=timers.target
EOF

systemctl enable --now healthcheck.timer

Samotný skript:

#!/bin/sh
curl -fsS --max-time 10 http://127.0.0.1:8080/healthz >/dev/null || systemctl restart myapp

Upozornenia na stav stroja

Tiež je užitočné dozvedieť sa o dochádzajúcom mieste na disku a pamäti ešte pred výpadkom. Najjednoduchšia možnosť je cron úloha, ktorá pošle správu na Telegram, keď sa prekročí prah:

0 * * * * root [ "$(df --output=pcent / | tr -dc 0-9)" -gt 85 ] && curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" -d chat_id=$CHAT -d text="VDS disk usage is over 85%"

Pokročilejšiu možnosť s hotovými prahmi ponúka Netdata.

Časté chyby

  • Sledovanie na tom istom stroji. Ak stroj spadne, zomrie aj watchdog, aj upozorňovanie.
  • Príliš citlivý prah. Prúd falošných poplachov znamená, že ten skutočný prehliadneš.
  • Restart=always namiesto zisťovania príčiny. Reštart maskuje únik pamäte: služba spadne každú pol hodinu a ty to nevidíš. Skontroluj systemctl show myapp -p NRestarts a journal.
  • Kontrola len cez ping. Stroj odpovedá na ICMP aj s úplne mŕtvym webovým serverom.

Prvé, čo pri poplachu skontroluj, je „Overview“ v ovládacom paneli /hosting/vds/m/<id>. Prerušenie v grafoch znamená problém so strojom; ploché grafy, keď je stránka nedostupná, znamenajú problém v aplikácii.