Skip to content
VDS · Nadzor i performanse

Upozorenja o padu sajta

Kako da saznaš da je usluga nedostupna pre korisnika: eksterne provere, jednostavan watchdog na samom serveru i automatsko restartovanje usluge.

Ažurirano 23. avgust 2026.

Grafikoni u panelu pokazuju stanje mašine, ali ne odgovaraju na pitanje „da li je sajt dostupan?” Aplikacija može da se zamrzne dok je CPU miran, a bez spoljne provere saznaćeš o tome od svojih klijenata.

Spoljne provere

Glavno pravilo: ne proveravaj sa mašine koju nadgledaš. Koristi bilo koji spoljni servis za nadgledanje dostupnosti — ima ih mnogo, uključujući besplatne pakete za nekoliko adresa sa intervalom od jednog minuta. Podešavanja koja su zaista važna:

  • Adresa za proveru. Ne početna strana, već zasebna ruta poput /healthz koja proverava i bazu i red. U suprotnom, keširana početna strana biće poslužena čak i kada je backend mrtav.
  • Očekivani odgovor. Kod 200 plus podstring u telu. Mnoge aplikacije vraćaju 200 sa porukom o grešci kada se pokvare.
  • Prag. Dva ili tri neuspešna pokušaja zaredom, inače će te svaki mrežni zastoj probuditi.
  • Kanal. Telegram ili imejl. Uveri se da obaveštenje zaista stiže: isključi servis na minut i sačekaj poruku.

Ne zaboravi ni zasebnu proveru isteka sertifikata — istekao TLS sertifikat izgleda kao prekid rada i dešava se redovno.

Watchdog na samoj mašini

Spoljno nadgledanje će ti reći da je sajt pao. Da bi se sam vratio, podesi systemd. U unit fajlu servisa:

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

Na taj način će servis preživeti slučajni pad, ali neće se vrteti u beskonačnoj petlji ako je konfiguracija pokvarena. Nakon izmene: systemctl daemon-reload && systemctl restart myapp.

Za aplikacije koje ne padaju već se zamrznu, dodaj HTTP proveru. Par unit fajlova — tajmer i servis:

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

Sam skript:

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

Upozorenja o zdravlju mašine

Korisno je i da saznaš da ponestaje prostora na disku i memorije pre prekida rada. Najjednostavnija opcija je cron posao koji šalje Telegram poruku kada se prekorači prag:

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%"

Napredniju opciju sa gotovim pragovima nudi Netdata.

Česte greške

  • Nadgledanje na istoj mašini. Ako mašina padne, i watchdog i obaveštavanje umiru.
  • Previše osetljiv prag. Bujica lažnih alarma znači da ćeš preći preko pravog.
  • Restart=always umesto ispitivanja uzroka. Restart maskira curenje memorije: servis pada svakih pola sata, a ti to ne vidiš. Proveri systemctl show myapp -p NRestarts i journal.
  • Provera samo preko ping-a. Mašina odgovara na ICMP čak i sa potpuno mrtvim veb serverom.

Prvo što treba proveriti kada se alarm aktivira je „Overview” u panelu /hosting/vds/m/<id>. Prekid u grafikona znači problem sa mašinom; ravni grafikoni kada je sajt nedostupan znače problem u aplikaciji.