8 modulis · 8.3
Serverio stebėsena
8 modulis: Atsarginės kopijos ir stebėsena · Skaitymo laikas: 10 min.
Mokymosi tikslas: Po šios pamokos galėsite nuspręsti, ką stebėti savo serveryje (iš išorės ir iš vidaus), kokios ribos yra prasmingos ir kaip užtikrinti, kad pranešimas tikrai Jus pasiektų, bet Jūs nepaskęstumėte pranešimų sraute.
Pagrindinės sąvokos: stebėsena iš išorės, stebėsena iš vidaus, veikimo laikas (uptime), http patikra, prievado patikra, sertifikato galiojimo pabaiga, vieta diske, atmintis, apkrova (load), heartbeat (dead man's switch), riba, pranešimų kanalas, pavojaus signalų nuovargis, paslaugų teikėjo grafikai
Kodėl verta stebėti?
Be stebėsenos apie problemas sužinote iš savo klientų arba visai nesužinote. Svetainė, kuri neveikia nuo šeštadienio, pasibaigęs sertifikatas, prisipildęs diskas, atsarginė kopija, kuri jau tris savaites tyliai nepavyksta: visa tai buvo galima pastebėti laiku. Stebėsena reiškia, kad programa nuolat tikrina ir įspėja Jus, kai kas nors negerai.
Gera stebėsena atsako į du klausimus:
- Ar viskas veikia naudotojui? Tai matuojama iš išorės.
- Ar netrukus kas nors suges? Tai matuojama iš vidaus: diskas, atmintis, atnaujinimai, atsarginės kopijos.
Iš išorės: ką mato naudotojas
Stebėsena iš išorės veikia kitame kompiuteryje nei Jūsų serveris, geriausia pas kitą paslaugų teikėją. Tai logiška: jei serveris neveikia, jis pats nebegali įspėti.
| Patikra | Ką daro | Kodėl |
|---|---|---|
| http(s) | kas minutę atsisiunčia puslapį ir tikrina būsenos kodą (200), prireikus ir žodį puslapyje | svetainė tikrai veikia, ne tik serveris |
| prievadas | jungiasi, pavyzdžiui, prie 22 ar 443 prievado | paslauga klausosi ir yra pasiekiama |
| ping | siunčia ICMP paketą | serveris gyvas (bet tai nieko nesako apie Jūsų svetainę) |
| sertifikatas | nuskaito sertifikatą ir jo galiojimo pabaigos datą | įspėja gerokai prieš jam pasibaigiant |
| DNS | užklausia A įrašą | vardas vis dar nukreiptas į tinkamą serverį |
Sertifikatui verta skirti ypatingą dėmesį. Let's Encrypt sertifikatai galioja trumpai ir atnaujinami automatiškai (pamoka 7.3), tačiau jei atnaujinimas tyliai nepavyksta, tai pastebite tik tada, kai lankytojai mato įspėjimą. Nuo 2025 m. birželio Let's Encrypt nebesiunčia priminimo laiškų apie besibaigiančius sertifikatus ir pati rekomenduoja stebėseną. Todėl sertifikato patikra, kuri įspėja, kai iki galiojimo pabaigos lieka mažiau nei 14 dienų, nėra prabanga.
Įprasta programa, kuria tai galima daryti pačiam, yra Uptime Kuma, kurią pamokoje 9.4 įdiegsite konteineryje. Geriausia jos nediegti tame pačiame serveryje, kurį ji turi stebėti, arba derinti ją su antra, išorine patikra. Yra ir trečiųjų šalių paslaugų, kurios daro tą patį; pasirinkite Jums tinkančią ir atkreipkite dėmesį, kur jos įsikūrusios, jei pranešimuose gali būti Jūsų klientų duomenų.
Iš vidaus: kas netrukus suges
Kai kurias problemas iš išorės pamatysite tik tada, kai bus per vėlu. Jas matuojate pačiame serveryje:
| Ką | Kaip tai pamatyti | Protinga riba |
|---|---|---|
| Vieta diske | df -h | įspėti virš 80%, pavojus virš 90% |
| Inodes (failų skaičius) | df -i | tas pats; diskas gali būti "pilnas" dėl milijonų mažų failų |
| Atmintis | free -h, pranešimai "Out of memory" journalctl -k | kiekvienas OOM pranešimas yra signalas |
| Apkrova (load) | uptime, top | ilgą laiką didesnė nei vCPU skaičius |
| Nepavykusios paslaugos | systemctl --failed (pamoka 6.1) | kiekviena nepavykusi paslauga |
| Atnaujinimai ir paleidimas iš naujo | /var/run/reboot-required, apt list --upgradable (pamoka 4.2) | saugumo atnaujinimas, senesnis nei dvi dienos |
| Atsarginės kopijos | Jūsų atsarginių kopijų scenarijaus pabaiga (pamoka 8.2) | kiekvienas nepavykęs ar neįvykęs paleidimas |
Tai galima padaryti paprastu scenarijumi ir laikmačiu (pamoka 6.3), kuris viršijus ribą siunčia pranešimą, arba stebėsenos programa su agentu serveryje (žinomi atvirojo kodo pavyzdžiai yra Netdata ir Prometheus derinys su node_exporter). Pradėkite nuo mažo: diskas, nepavykusios paslaugos ir atsarginės kopijos sugauna daugumą problemų.
Paslaugų teikėjo valdymo skydelio grafikai (procesorius, atmintis, tinklas, diskas per dieną ar net metus) puikiai papildo stebėseną ir padeda matyti tendencijas: jei diskas kas mėnesį prisipildo keliais procentais, žinote, kada jis bus pilnas. WebOké juos rasite VPS lange; pas kitus teikėjus panašiai. Paprastai jie pranešimų nesiunčia, todėl stebėsenos nepakeičia.
Heartbeat: pranešimas, kai nieko neįvyksta
Kai kuriuos dalykus reikia stebėti būtent pagal signalo nebuvimą. Geriausias pavyzdys yra naktinė atsarginė kopija: jei scenarijus net nepasileidžia (laikmatis išjungtas, serveris išjungtas, scenarijus sugadintas), negaunate ir klaidos pranešimo.
Sprendimas vadinamas heartbeat arba dead man's switch: Jūsų stebėsena kasdien laukia signalo. Atsarginių kopijų scenarijus pabaigoje, tik jei viskas pavyko, siunčia nedidelę http užklausą į pastovų, slaptą Jūsų stebėsenos URL:
restic backup ... && restic check && curl -fsS -m 10 https://status.example.com/api/push/Xyz123abc?status=up >/dev/nullJei signalas kurią dieną neateina, gaunate pranešimą. Uptime Kuma tam turi stebėjimo tipą Push; yra ir savarankiškai talpinamų programų, pavyzdžiui, Healthchecks. Taip viena eilute stebite, ar atsarginė kopija tikrai buvo padaryta.
Pranešimai, kurie pasiekia, ir ne per daug
Pranešimas, kurio niekas neskaito, nėra stebėsena. Pasirūpinkite trimis dalykais:
- Pranešimų kanalas, kurį tikrai matote: push pranešimas telefone, pokalbių kanalas, SMS. El. paštas tinka, bet tik jei Jūsų serveris gali patikimai siųsti laiškus, o laiškus lengva praleisti. Svarbiausiems pranešimams naudokite du kanalus.
- Nepriklausomas nuo to, ką stebite. Jei laišką apie pilną diską siunčia pats serveris, jis neateis, kai diskas bus pilnas. Stebėsena iš išorės ir heartbeat tai sugauna.
- Nedaug, bet pagrįstai. Jei kasdien gaunate dešimt pranešimų, į kuriuos nereaguojate, pradėsite juos ignoruoti, taip pat ir tą vienintelį svarbų. Tai vadinama pavojaus signalų nuovargiu. Nustatykite ribas taip, kad pranešimas reikštų: reikia kažką daryti. Tegul pranešimas suveikia tik po kelių nepavykusių patikrų iš eilės (pavyzdžiui, trijų), kad vienas prarastas paketas Jūsų nepažadintų.
Išbandykite pranešimus: trumpam išjunkite paslaugą ir patikrinkite, ar pranešimas ateina ir per kiek laiko.
Ko nedaryti
- Stebėsenos puslapiai, atviri visiems, su vidiniais pavadinimais ir adresais. Viešas būsenos puslapis tinka, bet jame rodykite tik tai, ką lankytojai gali žinoti.
- Stebėsenos administratoriaus paskyra be stipraus slaptažodžio ir 2FA. Kas patenka į Jūsų stebėseną, gali išjungti pranešimus.
- Agentai su didesnėmis teisėmis nei reikia. Stebėsenos agentui paprastai nereikia būti root.
Santrauka
- Iš išorės, iš kito kompiuterio, stebėkite, ar viskas veikia (http, prievadas, sertifikatas, DNS), o iš vidaus, ar netrukus kas nors nesuges (diskas, atmintis, paslaugos, atnaujinimai, atsarginės kopijos).
- Sertifikatams skirkite atskirą patikrą: nuo 2025 m. birželio Let's Encrypt nebesiunčia priminimo laiškų.
- Heartbeat praneša apie neatėjusį signalą; idealu atsarginėms kopijoms ir suplanuotoms užduotims.
- Pasirinkite pranešimų kanalą, kurį tikrai matote ir kuris nepriklauso nuo paties serverio, o ribas nustatykite taip, kad kiekvienas pranešimas reikalautų veiksmų.
- Paslaugų teikėjo grafikai rodo tendencijas, bet paprastai pranešimų nesiunčia.
Testas (quiz)
Užduotis
Užduotis O8.3: Jūsų stebėsenos sąrašas. Sudarykite savo serverio stebėsenos sąrašą: kokios patikros iš išorės (kokiu intervalu ir iš kur), kokios iš vidaus (su ribomis), koks heartbeat (ar keli) ir kokiu kanalu ateina pranešimai. Įrenkite bent vieną išorinę http ar sertifikato patikrą ir vieną heartbeat (pavyzdžiui, atsarginei kopijai), o pranešimą išbandykite trumpam išjungdami paslaugą. Užsirašykite, per kiek laiko atėjo pranešimas.
Užduotis O8.3: Jūsų stebėsenos sąrašas
Šią užduotį atliekate patys; niekas jos netikrina. Pažymėkite, ką atlikote, ir pažymėkite užduotį kaip atliktą.
Patikra iš išorės kitame kompiuteryje (geriausia pas kitą teikėją), kas 1 iki 5 minučių su keliais pakartojimais. Sertifikatas 14 dienų, diskas 80/90%, systemctl --failed, heartbeat tik po sėkmingos atsarginės kopijos. Pranešimus, kuriems nereikia jokių veiksmų, pašalinkite arba padidinkite ribą.
Jūsų pažymėti varneliai ir pastabos lieka tik šioje naršyklėje; niekur jų nesiunčiame. Jei esate prisijungę, skiltyje Mano kursai išsaugome tik tai, kad užduotį atlikote.
Skaitykite daugiau
- Nebeturite prieigos prie savo VPS: ką daryti?
- 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: nuo pirmojo prisijungimo iki saugaus serverio 8.3: Stebėsena iš išorės ir iš vidaus
- VPS: nuo pirmojo prisijungimo iki saugaus serverio 7.1: Uptime Kuma: Jūsų svetainių ir serverio stebėjimas
