Modul 8 · 8.3
Bevaka din server
Modul 8: Säkerhetskopior och övervakning · Lästid: 10 minuter
Lärandemål: Efter den här lektionen kan du bestämma vad du bevakar på din server (utifrån och inifrån), vilka tröskelvärden som är rimliga och hur du ser till att ett larm verkligen når dig utan att du drunknar i larm.
Nyckelbegrepp: bevakning utifrån, bevakning inifrån, drifttid (uptime), http-kontroll, portkontroll, certifikatets giltighetstid, diskutrymme, minne, load, heartbeat (dead man's switch), tröskelvärde, larmkanal, larmtrötthet, leverantörens grafer
Varför bevaka?
Utan bevakning får du höra om problem från dina kunder, eller inte alls. En webbplats som har legat nere sedan i lördags, ett certifikat som gick ut, en disk som blev full, en säkerhetskopia som i tysthet har misslyckats i tre veckor: allt sådant hade du kunnat upptäcka i tid. Bevakning betyder att ett program hela tiden håller koll och varnar dig när något inte stämmer.
En bra bevakning svarar på två frågor:
- Fungerar det för användaren? Det mäter du utifrån.
- Kommer något snart att gå fel? Det mäter du inifrån: disk, minne, uppdateringar, säkerhetskopior.
Utifrån: det användaren ser
Bevakning utifrån körs på en annan maskin än din server, helst hos en annan leverantör. Det är logiskt: om din server ligger nere kan den inte själv varna längre.
| Kontroll | Vad | Varför |
|---|---|---|
| http(s) | hämtar en sida varje minut och kontrollerar statuskoden (200) och eventuellt ett ord på sidan | webbplatsen fungerar verkligen, inte bara servern |
| port | ansluter till exempelvis port 22 eller 443 | tjänsten lyssnar och går att nå |
| ping | skickar ett ICMP-paket | servern lever (men säger inget om din webbplats) |
| certifikat | läser certifikatet och dess utgångsdatum | varnar i god tid innan det går ut |
| DNS | frågar efter A-posten | namnet pekar fortfarande på rätt server |
Certifikatet förtjänar extra uppmärksamhet. Let's Encrypt-certifikat gäller kort tid och förnyas automatiskt (lektion 7.3), men om förnyelsen misslyckas i tysthet märker du det först när besökarna får en varning. Let's Encrypt skickar sedan juni 2025 inga påminnelsemejl längre om certifikat som håller på att gå ut, och rekommenderar själva bevakning. En certifikatkontroll som varnar när mindre än 14 dagars giltighet återstår är alltså ingen lyx.
Ett vanligt program för att göra detta själv är Uptime Kuma, som du installerar i en container i lektion 9.4. Placera det helst inte på samma server som det ska bevaka, eller kombinera det med en andra, extern kontroll. Det finns också tjänster från tredje part som gör samma sak. Välj en som passar dig, och tänk på var de har sitt säte om larmen kan innehålla uppgifter om dina kunder.
Inifrån: det som snart går fel
Vissa problem ser du utifrån först när det är för sent. Dem mäter du på själva servern:
| Vad | Hur du ser det | Ett rimligt tröskelvärde |
|---|---|---|
| Diskutrymme | df -h | varna över 80 %, larma över 90 % |
| Inoder (antal filer) | df -i | samma; en disk kan vara "full" med miljontals små filer |
| Minne | free -h, meddelanden "Out of memory" i journalctl -k | varje OOM-meddelande är en signal |
| Load | uptime, top | under lång tid högre än antalet vCPU:er |
| Misslyckade tjänster | systemctl --failed (lektion 6.1) | varje misslyckad tjänst |
| Uppdateringar och omstart | /var/run/reboot-required, apt list --upgradable (lektion 4.2) | säkerhetsuppdatering äldre än två dagar |
| Säkerhetskopior | slutet av ditt skript för säkerhetskopiering (lektion 8.2) | varje körning som misslyckas eller uteblir |
Det här kan du göra med ett enkelt skript och en timer (lektion 6.3) som skickar ett larm när ett värde överskrids, eller med ett övervakningsprogram med en agent på servern (kända exempel med öppen källkod är Netdata och kombinationen Prometheus med node_exporter). Börja i liten skala: disk, misslyckade tjänster och säkerhetskopior fångar de flesta problem.
Graferna i din leverantörs kontrollpanel (processor, minne, nätverk, disk över allt från en dag till ett år) är ett bra komplement för att se trender: växer din disk med några procent varje månad vet du när den blir full. Hos WebOké finns de på VPS-sidan, och hos andra leverantörer på liknande ställen. De skickar oftast inga larm, så de ersätter inte bevakning.
Heartbeat: larma när ingenting händer
Vissa saker behöver du bevaka just för att en signal uteblir. Nattens säkerhetskopia är det bästa exemplet: om skriptet inte ens startar (timern avstängd, servern nere, skriptet trasigt) kommer det inte heller något felmeddelande.
Lösningen kallas heartbeat eller dead man's switch: din bevakning väntar sig en signal varje dag. I slutet skickar skriptet för säkerhetskopiering, bara om allt har lyckats, en liten http-förfrågan till en fast, hemlig URL hos din bevakning:
restic backup ... && restic check && curl -fsS -m 10 https://status.example.com/api/push/Xyz123abc?status=up >/dev/nullUteblir signalen en dag får du ett larm. Uptime Kuma har monitortypen Push för detta, och det finns också program du kan köra själv, som Healthchecks. På så sätt bevakar du med en enda rad om din säkerhetskopiering verkligen kördes.
Larm som når fram, och inte för många
Ett larm som ingen läser är ingen bevakning. Ordna tre saker:
- En larmkanal som du verkligen ser: en pushnotis i telefonen, en chattkanal, sms. Mejl går bra, men bara om din server kan skicka mejl på ett tillförlitligt sätt, och mejl missas lätt. Använd två kanaler för de viktigaste larmen.
- Inte beroende av det du bevakar. Om din server själv skickar mejlet om en full disk kommer det inte fram när disken är full. Bevakning utifrån och en heartbeat fångar upp det.
- Få, men befogade. Får du tio larm om dagen som du inte gör något åt börjar du ignorera dem, även det enda som spelar roll. Det kallas larmtrötthet. Ställ in tröskelvärdena så att ett larm betyder att du måste göra något. Låt ett larm gå först efter några misslyckade kontroller i rad (till exempel tre gånger), så att ett enda förlorat paket inte väcker dig.
Testa dina larm: stäng av en tjänst en stund och se om larmet kommer, och hur lång tid det tog.
Det här ska du inte göra
- Bevakningssidor som är öppna för alla med interna namn och adresser. En offentlig statussida går bra, men visa bara det som besökarna får veta.
- Ett administratörskonto i din bevakning utan starkt lösenord och 2FA. Den som kommer in i din bevakning kan stänga av larmen.
- Agenter med fler rättigheter än nödvändigt. En bevakningsagent behöver oftast inte vara root.
Sammanfattning
- Bevaka utifrån om det fungerar (http, port, certifikat, DNS), från en annan maskin, och inifrån om något snart går fel (disk, minne, tjänster, uppdateringar, säkerhetskopior).
- Certifikat förtjänar en egen kontroll: Let's Encrypt skickar sedan juni 2025 inga påminnelsemejl längre.
- En heartbeat larmar när en signal uteblir, perfekt för säkerhetskopior och schemalagda jobb.
- Välj en larmkanal som du verkligen ser, oberoende av själva servern, och ställ in tröskelvärdena så att varje larm kräver en åtgärd.
- Leverantörens grafer visar trender, men skickar oftast inga larm.
Quiz
Uppgift
Uppgift O8.3: Din bevakningslista. Gör en bevakningslista för din egen server: vilka kontroller utifrån (med vilket intervall och varifrån), vilka inifrån (med tröskelvärden), vilken eller vilka heartbeats, och via vilken kanal larmen kommer. Ställ in minst en extern http- eller certifikatkontroll och en heartbeat (till exempel för din säkerhetskopiering) och testa larmet genom att stänga av en tjänst en stund. Anteckna hur lång tid det tog innan larmet kom.
Uppgift O8.3: Din bevakningslista
Den här uppgiften gör du själv; ingen kontrollerar den. Bocka av vad du har gjort och markera uppgiften som klar.
Kontroll utifrån på en annan maskin (helst hos en annan leverantör), var 1 till 5 minut med några upprepningar. Certifikat 14 dagar, disk 80/90 %, systemctl --failed, heartbeat bara vid en lyckad säkerhetskopiering. Larm som inte kräver någon åtgärd: ta bort dem eller höj tröskeln.
Dina bockar och anteckningar sparas bara i den här webbläsaren; vi skickar dem ingenstans. Är du inloggad sparar vi i Mina kurser bara att du har gjort uppgiften.
Läs mer
- Ingen åtkomst till din VPS längre: vad gör du?
- 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
