Moduuli 8 · 8.3
Palvelimesi valvonta
Moduuli 8: Varmuuskopiot ja valvonta · Lukuaika: 10 minuuttia
Tavoite: Tämän oppitunnin jälkeen osaat päättää, mitä palvelimestasi valvot (ulkoa ja sisältä), mitkä raja-arvot ovat järkeviä ja miten varmistat, että hälytys todella tavoittaa sinut hukuttamatta sinua hälytyksiin.
Keskeiset käsitteet: ulkoinen valvonta, sisäinen valvonta, käytettävyys (uptime), http-tarkistus, porttitarkistus, varmenteen vanheneminen, levytila, muisti, kuorma (load), heartbeat (dead man's switch), raja-arvo, hälytyskanava, hälytysväsymys, palveluntarjoajan kaaviot
Miksi valvoa?
Ilman valvontaa kuulet ongelmista asiakkailtasi tai et ollenkaan. Sivusto, joka on ollut alhaalla lauantaista asti, vanhentunut varmenne, täyttynyt levy, varmuuskopio, joka on epäonnistunut hiljaa jo kolme viikkoa: kaikki asioita, jotka olisit voinut huomata ajoissa. Valvonta tarkoittaa, että ohjelma seuraa jatkuvasti ja varoittaa sinua, kun jokin ei ole kunnossa.
Hyvä valvonta vastaa kahteen kysymykseen:
- Toimiiko se käyttäjälle? Sen mittaat ulkoa.
- Onko jotain menossa pian pieleen? Sen mittaat sisältä: levy, muisti, päivitykset, varmuuskopiot.
Ulkoa: mitä käyttäjä näkee
Ulkoinen valvonta toimii eri koneella kuin palvelimesi, mieluiten eri palveluntarjoajalla. Se on loogista: jos palvelimesi on alhaalla, se ei pysty enää itse varoittamaan.
| Tarkistus | Mitä | Miksi |
|---|---|---|
| http(s) | hakee sivun minuutin välein ja tarkistaa tilakoodin (200) ja tarvittaessa jonkin sanan sivulta | sivusto todella toimii, ei pelkästään palvelin |
| portti | avaa yhteyden esimerkiksi porttiin 22 tai 443 | palvelu kuuntelee ja on tavoitettavissa |
| ping | lähettää ICMP-paketin | palvelin on elossa (mutta se ei kerro mitään sivustostasi) |
| varmenne | lukee varmenteen ja sen vanhenemispäivän | varoittaa hyvissä ajoin ennen vanhenemista |
| DNS | kysyy A-tietueen | nimi osoittaa yhä oikeaan palvelimeen |
Varmenne ansaitsee erityistä huomiota. Let's Encrypt -varmenteet ovat voimassa lyhyen ajan ja uusiutuvat automaattisesti (oppitunti 7.3), mutta jos uusiminen epäonnistuu hiljaa, huomaat sen vasta, kun kävijät saavat varoituksen. Let's Encrypt ei ole kesäkuusta 2025 lähtien enää lähettänyt muistutussähköposteja vanhenevista varmenteista, ja se suosittelee itse valvontaa. Varmennetarkistus, joka varoittaa, kun voimassaoloa on jäljellä alle 14 päivää, ei siis ole ylellisyyttä.
Yleinen ohjelma tähän omatoimisesti on Uptime Kuma, jonka asennat konttiin oppitunnilla 9.4. Älä mieluiten asenna sitä samalle palvelimelle, jota sen pitäisi valvoa, tai yhdistä se toiseen, ulkoiseen tarkistukseen. Samaa tekeviä kolmannen osapuolen palveluitakin on; valitse sinulle sopiva ja katso, missä ne sijaitsevat, jos hälytyksissä voi olla asiakkaidesi tietoja.
Sisältä: mikä on menossa pian pieleen
Joitakin ongelmia et näe ulkoa ennen kuin on liian myöhäistä. Ne mittaat palvelimella itsellään:
| Mitä | Mistä sen näet | Järkevä raja-arvo |
|---|---|---|
| Levytila | df -h | varoitus yli 80 %, hälytys yli 90 % |
| Inodet (tiedostojen määrä) | df -i | sama; levy voi olla "täynnä" miljoonista pienistä tiedostoista |
| Muisti | free -h, "Out of memory" -ilmoitukset kohteessa journalctl -k | jokainen OOM-ilmoitus on merkki |
| Kuorma | uptime, top | pitkään suurempi kuin vCPU-ytimien määrä |
| Epäonnistuneet palvelut | systemctl --failed (oppitunti 6.1) | jokainen epäonnistunut palvelu |
| Päivitykset ja uudelleenkäynnistys | /var/run/reboot-required, apt list --upgradable (oppitunti 4.2) | yli kaksi päivää vanha tietoturvapäivitys |
| Varmuuskopiot | varmuuskopioskriptisi loppu (oppitunti 8.2) | jokainen epäonnistunut tai väliin jäänyt ajo |
Tämän voi tehdä yksinkertaisella skriptillä ja ajastimella (oppitunti 6.3), joka lähettää hälytyksen raja-arvon ylittyessä, tai valvontaohjelmalla, jolla on agentti palvelimella (tunnettuja avoimen lähdekoodin esimerkkejä ovat Netdata sekä Prometheuksen ja node_exporterin yhdistelmä). Aloita pienestä: levy, epäonnistuneet palvelut ja varmuuskopiot kattavat useimmat ongelmat.
Palveluntarjoajasi paneelin kaaviot (suoritin, muisti, verkko, levy päivän tai vuoden ajalta) ovat hyvä lisä trendien näkemiseen: jos levysi täyttyy joka kuukausi muutaman prosentin, tiedät, milloin se on täynnä. WebOkéssa ne ovat VPS-näkymässä, muilla palveluntarjoajilla vastaavasti. Ne eivät yleensä lähetä hälytyksiä, joten ne eivät korvaa valvontaa.
Heartbeat: hälytys, kun mitään ei tapahdu
Joitakin asioita on valvottava nimenomaan signaalin puuttumisen perusteella. Viime yön varmuuskopio on paras esimerkki: jos skripti ei edes käynnisty (ajastin pois päältä, palvelin sammuksissa, skripti rikki), ei tule virheilmoitustakaan.
Ratkaisun nimi on heartbeat tai dead man's switch: valvonta odottaa merkkiä joka päivä. Varmuuskopioskripti lähettää lopuksi, vain jos kaikki onnistui, pienen http-pyynnön valvonnan kiinteään, salaiseen URL-osoitteeseen:
restic backup ... && restic check && curl -fsS -m 10 https://status.example.com/api/push/Xyz123abc?status=up >/dev/nullJos merkki jää yhtenä päivänä tulematta, saat hälytyksen. Uptime Kumassa tähän on valvontatyyppi Push; on myös itse ylläpidettäviä ohjelmia, kuten Healthchecks. Näin valvot yhdellä rivillä, ajettiinko varmuuskopio todella.
Hälytykset, jotka tulevat perille, eikä liikaa
Hälytys, jota kukaan ei lue, ei ole valvontaa. Huolehdi kolmesta asiasta:
- Hälytyskanava, jonka todella näet: push-ilmoitus puhelimeen, chat-kanava, tekstiviesti. Sähköposti käy, mutta vain jos palvelimesi pystyy lähettämään postia luotettavasti, ja sähköposti jää helposti huomaamatta. Käytä tärkeimmille hälytyksille kahta kanavaa.
- Ei riippuvainen siitä, mitä valvot. Jos palvelimesi lähettää itse sähköpostin täydestä levystä, viesti ei tule, kun levy on täynnä. Ulkoinen valvonta ja heartbeat kattavat tämän.
- Vähän, mutta aiheesta. Jos saat joka päivä kymmenen hälytystä, joille et tee mitään, alat sivuuttaa ne, myös sen yhden tärkeän. Tätä kutsutaan hälytysväsymykseksi. Aseta raja-arvot niin, että hälytys tarkoittaa: sinun on tehtävä jotain. Anna hälytyksen laueta vasta muutaman peräkkäisen epäonnistuneen tarkistuksen jälkeen (esimerkiksi kolmen), jotta yksi kadonnut paketti ei herätä sinua.
Testaa hälytyksesi: sammuta palvelu hetkeksi ja katso, tuleeko hälytys ja kauanko siihen meni.
Mitä ei pidä tehdä
- Valvontasivuja kaikille avoimina sisäisine nimineen ja osoitteineen. Julkinen tilasivu on sallittu, mutta näytä siinä vain se, mitä kävijöiden kuuluu tietää.
- Valvonnan ylläpitäjätiliä ilman vahvaa salasanaa ja kaksivaiheista tunnistautumista (2FA). Valvontaasi päässyt voi kytkeä hälytykset pois.
- Agentteja, joilla on enemmän oikeuksia kuin tarvitaan. Valvonta-agentin ei yleensä tarvitse olla root.
Yhteenveto
- Valvo ulkoa, toimiiko kaikki (http, portti, varmenne, DNS), toiselta koneelta, ja sisältä, onko jotain menossa pian pieleen (levy, muisti, palvelut, päivitykset, varmuuskopiot).
- Varmenteet ansaitsevat oman tarkistuksen: Let's Encrypt ei ole kesäkuusta 2025 lähtien lähettänyt muistutussähköposteja.
- Heartbeat hälyttää, kun merkki jää tulematta; ihanteellinen varmuuskopioille ja ajastetuille tehtäville.
- Valitse hälytyskanava, jonka todella näet ja joka ei riipu palvelimesta itsestään, ja aseta raja-arvot niin, että jokainen hälytys vaatii toimia.
- Palveluntarjoajasi kaaviot näyttävät trendit, mutta eivät yleensä lähetä hälytyksiä.
Tietovisa (quiz)
Tehtävä
Tehtävä O8.3: Valvontalistasi. Tee omalle palvelimellesi valvontalista: mitkä tarkistukset ulkoa (millä aikavälillä ja mistä), mitkä sisältä (raja-arvoineen), mitkä heartbeatit ja minkä kanavan kautta hälytykset tulevat. Ota käyttöön vähintään yksi ulkoinen http- tai varmennetarkistus ja yksi heartbeat (esimerkiksi varmuuskopiollesi) ja testaa hälytys sammuttamalla palvelu hetkeksi. Kirjaa ylös, kauanko hälytyksen tulemiseen meni.
Tehtävä O8.3: Valvontalistasi
Tämän tehtävän teet itse, kukaan ei tarkista sitä. Merkitse tekemäsi kohdat ja merkitse tehtävä tehdyksi.
Ulkoinen tarkistus toiselta koneelta (mieluiten toiselta palveluntarjoajalta), tarkistusväli 1 minuutista 5 minuuttiin ja muutama uusintayritys. Varmenne: hälytys 14 päivää ennen vanhenemista, levy 80/90%, systemctl --failed, heartbeat vain onnistuneen varmuuskopion jälkeen. Hälytykset, jotka eivät vaadi toimia: poista ne tai nosta kynnystä.
Merkintäsi ja muistiinpanosi pysyvät vain tässä selaimessa, emme lähetä niitä minnekään. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että olet tehnyt tehtävän.
Lue lisää
- Et pääse enää VPS:llesi: mitä nyt?
- 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
