Monitorowanie serwera
Moduł 8: Kopie zapasowe i monitorowanie · Czas czytania: 10 min
Cel lekcji: Po tej lekcji będą Państwo potrafili określić, co monitorować na swoim serwerze (z zewnątrz i od wewnątrz), jakie progi mają sens oraz jak zadbać o to, by powiadomienie naprawdę do Państwa docierało, a jednocześnie nie zalewał Państwa nadmiar powiadomień.
Kluczowe pojęcia: monitorowanie z zewnątrz, monitorowanie od wewnątrz, uptime, kontrola http, kontrola portu, wygasanie certyfikatu, miejsce na dysku, pamięć, load, heartbeat (dead man's switch), próg, kanał powiadomień, zmęczenie alarmami, wykresy dostawcy
Dlaczego warto monitorować?
Bez monitorowania dowiadują się Państwo o problemach od klientów albo wcale. Strona, która nie działa od soboty, certyfikat, który wygasł, dysk, który się zapełnił, kopia zapasowa, która od trzech tygodni po cichu się nie udaje: wszystko to można było zauważyć na czas. Monitorowanie oznacza, że program stale sprawdza sytuację i ostrzega Państwa, gdy coś jest nie tak.
Dobre monitorowanie odpowiada na dwa pytania:
- Czy to działa dla użytkownika? To mierzy się z zewnątrz.
- Czy wkrótce coś się zepsuje? To mierzy się od wewnątrz: dysk, pamięć, aktualizacje, kopie zapasowe.
Z zewnątrz: to, co widzi użytkownik
Monitorowanie z zewnątrz działa na innej maszynie niż Państwa serwer, najlepiej u innego dostawcy. To logiczne: gdy serwer nie działa, sam nie może już nikogo ostrzec.
| Kontrola | Co robi | Dlaczego |
|---|---|---|
| http(s) | co minutę pobiera stronę i sprawdza kod statusu (200) oraz ewentualnie słowo na stronie | strona naprawdę działa, a nie tylko serwer |
| port | łączy się na przykład z portem 22 lub 443 | usługa nasłuchuje i jest osiągalna |
| ping | wysyła pakiet ICMP | serwer żyje (ale nie mówi to nic o stronie) |
| certyfikat | odczytuje certyfikat i datę ważności | ostrzega z dużym wyprzedzeniem przed wygaśnięciem |
| DNS | odpytuje rekord A | nazwa nadal wskazuje na właściwy serwer |
Certyfikat zasługuje na szczególną uwagę. Certyfikaty Let's Encrypt są ważne krótko i odnawiane automatycznie (lekcja 7.3), ale jeśli odnowienie po cichu się nie powiedzie, zauważą to Państwo dopiero wtedy, gdy odwiedzający zobaczą ostrzeżenie. Sam Let's Encrypt od czerwca 2025 nie wysyła już e-maili przypominających o wygasających certyfikatach i sam zaleca monitorowanie. Kontrola certyfikatu, która ostrzega przy ważności krótszej niż 14 dni, nie jest więc luksusem.
Popularnym programem do samodzielnego monitorowania jest Uptime Kuma, który zainstalują Państwo w kontenerze w lekcji 9.4. Najlepiej nie umieszczać go na tym samym serwerze, który ma monitorować, albo połączyć go z drugą, zewnętrzną kontrolą. Istnieją też usługi zewnętrznych firm, które robią to samo; prosimy wybrać taką, która Państwu odpowiada, i zwrócić uwagę na to, gdzie ma siedzibę, jeśli w powiadomieniach mogą się znaleźć dane Państwa klientów.
Od wewnątrz: co wkrótce może się zepsuć
Niektóre problemy widać z zewnątrz dopiero wtedy, gdy jest za późno. Mierzy się je na samym serwerze:
| Co | Jak to sprawdzić | Rozsądny próg |
|---|---|---|
| Miejsce na dysku | df -h | ostrzeżenie powyżej 80%, alarm powyżej 90% |
| Inody (liczba plików) | df -i | jak wyżej; dysk może być "pełny" przez miliony małych plików |
| Pamięć | free -h, komunikaty "Out of memory" w journalctl -k | każdy komunikat OOM jest sygnałem |
| Load | uptime, top | przez dłuższy czas wyższy niż liczba vCPU |
| Usługi, które uległy awarii | systemctl --failed (lekcja 6.1) | każda usługa, która uległa awarii |
| Aktualizacje i restart | /var/run/reboot-required, apt list --upgradable (lekcja 4.2) | aktualizacja bezpieczeństwa starsza niż dwa dni |
| Kopie zapasowe | koniec Państwa skryptu kopii zapasowej (lekcja 8.2) | każde nieudane lub pominięte uruchomienie |
Można to zrobić prostym skryptem z timerem (lekcja 6.3), który po przekroczeniu progu wysyła powiadomienie, albo programem do monitorowania z agentem na serwerze (znane przykłady open source to Netdata oraz połączenie Prometheus z node_exporter). Prosimy zacząć od małej skali: dysk, usługi, które uległy awarii, i kopie zapasowe wychwytują większość problemów.
Wykresy w panelu Państwa dostawcy (procesor, pamięć, sieć, dysk w okresie od dnia do roku) świetnie uzupełniają monitorowanie, bo pokazują trendy: jeśli dysk co miesiąc zapełnia się o kilka procent, wiadomo, kiedy będzie pełny. W WebOké znajdują się one na ekranie VPS; u innych dostawców podobnie. Zazwyczaj nie wysyłają powiadomień, więc nie zastępują monitorowania.
Heartbeat: powiadomienie, gdy nic się nie dzieje
Niektóre rzeczy trzeba monitorować właśnie pod kątem braku sygnału. Najlepszym przykładem jest nocna kopia zapasowa: jeśli skrypt w ogóle się nie uruchomi (timer wyłączony, serwer wyłączony, skrypt uszkodzony), nie pojawi się też żaden komunikat o błędzie.
Rozwiązanie nazywa się heartbeat lub dead man's switch: system monitorowania codziennie oczekuje sygnału. Skrypt kopii zapasowej na końcu, tylko jeśli wszystko się udało, wysyła małe żądanie http na stały, tajny adres URL Państwa systemu monitorowania:
restic backup ... && restic check && curl -fsS -m 10 https://status.example.com/api/push/Xyz123abc?status=up >/dev/nullJeśli sygnał nie nadejdzie przez dzień, otrzymają Państwo powiadomienie. Uptime Kuma ma do tego typ monitora Push; istnieją też programy do samodzielnego hostowania, takie jak Healthchecks. W ten sposób jedną linijką sprawdzają Państwo, czy kopia zapasowa naprawdę się wykonała.
Powiadomienia, które docierają, i to nie w nadmiarze
Powiadomienie, którego nikt nie czyta, to nie monitorowanie. Prosimy zadbać o trzy rzeczy:
- Kanał powiadomień, który Państwo naprawdę widzą: powiadomienie push na telefonie, kanał czatu, SMS. E-mail jest możliwy, ale tylko wtedy, gdy serwer potrafi niezawodnie wysyłać pocztę, a e-mail łatwo przeoczyć. Dla najważniejszych powiadomień prosimy używać dwóch kanałów.
- Niezależność od tego, co Państwo monitorują. Jeśli e-mail o pełnym dysku wysyła sam serwer, nie dotrze on, gdy dysk będzie pełny. Monitorowanie z zewnątrz i heartbeat to wychwytują.
- Mało, ale zasadnie. Jeśli codziennie otrzymują Państwo dziesięć powiadomień, z którymi nic nie robią, zaczną je Państwo ignorować, także to jedno, które jest ważne. Nazywa się to zmęczeniem alarmami. Prosimy ustawić progi tak, by powiadomienie oznaczało: trzeba coś zrobić. Niech powiadomienie uruchamia się dopiero po kilku nieudanych kontrolach z rzędu (na przykład trzech), aby jeden zgubiony pakiet nie budził Państwa w nocy.
Prosimy przetestować powiadomienia: na chwilę wyłączyć usługę i sprawdzić, czy powiadomienie nadejdzie i ile to trwało.
Czego nie robić
- Strony monitorowania dostępne dla wszystkich z wewnętrznymi nazwami i adresami. Publiczna strona statusu jest w porządku, ale powinna pokazywać tylko to, co odwiedzający mogą wiedzieć.
- Konto administratora systemu monitorowania bez silnego hasła i 2FA. Kto ma dostęp do monitorowania, może wyłączyć powiadomienia.
- Agenty z większymi uprawnieniami, niż potrzeba. Agent monitorowania zazwyczaj nie musi działać jako root.
Podsumowanie
- Z zewnątrz, z innej maszyny, prosimy monitorować, czy wszystko działa (http, port, certyfikat, DNS), a od wewnątrz, czy wkrótce coś się nie zepsuje (dysk, pamięć, usługi, aktualizacje, kopie zapasowe).
- Certyfikaty zasługują na osobną kontrolę: Let's Encrypt od czerwca 2025 nie wysyła już e-maili przypominających.
- Heartbeat zgłasza brak sygnału; idealny dla kopii zapasowych i zaplanowanych zadań.
- Prosimy wybrać kanał powiadomień, który Państwo naprawdę widzą, niezależny od samego serwera, i ustawić progi tak, by każde powiadomienie wymagało działania.
- Wykresy dostawcy pokazują trendy, ale zazwyczaj nie wysyłają powiadomień.
Quiz
Zadanie
Zadanie O8.3: Państwa lista monitorowania. Prosimy przygotować listę monitorowania dla własnego serwera: jakie kontrole z zewnątrz (z jakim interwałem i skąd), jakie od wewnątrz (z progami), jakie heartbeaty i przez jaki kanał przychodzą powiadomienia. Prosimy skonfigurować co najmniej jedną zewnętrzną kontrolę http lub certyfikatu oraz jeden heartbeat (na przykład dla kopii zapasowej) i przetestować powiadomienie, wyłączając na chwilę usługę. Prosimy zanotować, ile czasu minęło, zanim nadeszło powiadomienie.
Zadanie O8.3: Państwa lista monitorowania
To zadanie wykonuje się samodzielnie, nikt go nie sprawdza. Prosimy zaznaczyć wykonane punkty i oznaczyć zadanie jako wykonane.
Kontrola z zewnątrz z innej maszyny (najlepiej u innego dostawcy), co 1 do 5 minut z kilkoma powtórzeniami. Certyfikat 14 dni, dysk 80/90%, systemctl --failed, heartbeat tylko po udanej kopii zapasowej. Powiadomienia, które nie wymagają działania: usunąć lub podnieść próg.
Zaznaczenia i notatki pozostają tylko w tej przeglądarce; nie są nigdzie wysyłane. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało wykonane.
Przeczytaj więcej
- Brak dostępu do VPS: co teraz?
- 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
