Byggde övervakning med dödmansgrepp som pingar bara så länge minne och disk är i gott skick, så att en försämrad värd larmar genom att tystna — och upptäckte sex variabelnamn som sa ”free” där kontrollen korrekt mätte ”available”, en storleksordning isär på en maskin med 464 MB.
Arbetet utfört: september 2026
en värd som larmar genom att tystna
Situation. En värd på 464 MB som kör en git‑forge, en databas och en webbserver har två realistiska sätt att dö: minnet tar slut, eller disken tar slut. Inget av dem förvarnar. Båda går att förutse helt och hållet några timmar i förväg om något håller utkik, och ingenting gjorde det.
Uppgift. Värden behövde ett larm som fungerar när värden inte gör det — vilket utesluter allt som måste skicka ett meddelande i felögonblicket.
Handling. Svaret är ett dödmansgrepp på en timer. Var femtonde minut, med slumpmässig förskjutning, mäter ett litet skript tillgängligt minne och ledigt diskutrymme och pingar en extern tjänst bara om båda ligger över sina tröskelvärden. Tystnaden är larmet. En maskin som har fått slut på minne, tappat nätverket eller slutat starta ger exakt samma signal som en som inte är frisk, vilket är rätt beteende och skälet till att den här formen valdes framför en agent som rapporterar en status. Det som mäts är tillgängligt minne, inte ledigt minne, och den distinktionen blev den mest lärorika delen av arbetet: skriptet hade läst rätt kolumn hela tiden medan sex variabelnamn runt omkring sa ”free”. På en frisk Linux‑maskin ligger det lediga minnet nära noll eftersom kärnan använder outnyttjat minne som cache, så en läsare som jämförde de namnen mot ett tröskelvärde på tio procent skulle se tolv megabyte ledigt på en maskin med 464 MB, dra slutsatsen att kontrollen var trasig och rätta den med en ändring på ett tecken, som förvandlar ett fungerande larm till ett som löser ut permanent och tystas inom en vecka.
Resultat. Värden har nu ett larm vars felläge är att det löser ut, och namngivningen som skulle ha förstört det har rättats. Dödmansgreppets verkliga begränsning står i dess egen dokumentation: det bevisar att maskinen är frisk, inte att webbplatsen svarar, och det är olika frågor.
Se tillbaka på Byggde krypterade säkerhetskopior utanför värden med restic, med gallring enligt lagringstid, en integritetskontroll och en månatlig automatiserad återläsningsövning, granskade sedan återställningsförmågan och skrev ner luckorna i stället för att låta dem upptäckas under en incident. Läs vidare: Minskade exponeringen i systemd‑sandlådan för varje enhet som plattformen installerar — en tjänst för dödmansgrepp från 9,6 UNSAFE till 1,5, en internetexponerad git‑forge från 8,3 EXPOSED till 1,5 — och lade till en parserkontroll vid konvergering efter att ha hittat ett felstavat direktiv som tyst ignorerades i tre enhetsmallar. Eller ta en titt på hela portföljen.
En del av en längre historik — och den finns i sin helhet här.
Varje post är skriven på samma sätt: situationen, uppgiften, vad vi gjorde och vad som förändrades.