Het monitoren van een VPN-peer vraagt vier feiten, en geen ervan is een bestemming. Of de tunnel actief is, wanneer hij voor het laatst verkeer uitwisselde, welke sleutels erbij betrokken zijn en hoeveel er is verplaatst, is genoeg voor beschikbaarheid. Alles daarboven is een registratie over een persoon, en dat hoort een bewuste beslissing te zijn in plaats van een bijeffect van het openen van een statuspagina. Begin bij de vraag die je moet beantwoorden en kies dan de kleinste uitvoer die haar beantwoordt.

Bepaal de vraag vóór de tool

Schrijf eerst de operationele vraag op: is deze peer verbonden, en verplaatst hij verkeer? Die vraag vraagt een livebeeld, en een livebeeld heeft geen bewaarprobleem. Een tweede vraag, of de peer afgelopen dinsdag om 02:00 verbonden was, vraagt een opgeslagen reeks en dus een bewaarbeslissing. Die twee scheiden is het hele ontwerp, want het livebeeld is goedkoop terwijl de opgeslagen reeks een gesprek over gegevensbescherming wordt.

Houd de gezondheidscontrole ook gescheiden van de statusuitvoer. Een recente handshake bewijst dat de tunnel heeft onderhandeld, niet dat de private applicatie erachter werkt, dus test de applicatie via een geautoriseerde controle in plaats van het uit tellers af te leiden. Als de controle faalt en de handshake recent is, zit het probleem voorbij de tunnel.

Lees de drie velden die haar beantwoorden

De gewone statusuitvoer van WireGuard bevat de interface, de publieke sleutel, het eindpunt, de laatste handshake en de overdrachtstellers. Voor aanwezigheid zijn de publieke sleutel en de laatste handshake nodig; voeg de bytetellers toe als het moet, om beweging te zien. Het eindpunt is niet nodig voor aanwezigheid en is het eerste veld dat moet vervallen, omdat het identificeert waar een apparaat vandaan verbindt. De man-pagina beschrijft elk veld dat de tool afdrukt, en is kort genoeg om één keer te lezen:

wg show
wg show wg0 latest-handshakes

Lees die getallen als leeftijden in plaats van als booleans. Een handshake is alleen actueel ten opzichte van het eigen sleutelvernieuwingsinterval van het protocol, en een teller die niet is bewogen kan een inactieve peer betekenen in plaats van een kapotte. Houd beide in hetzelfde beeld zodat leeftijd en beweging samen worden gelezen.

Kies een interval dat je kunt verdedigen

Elke statusmeting is een registratie, dus het interval is een bewaarbeslissing met een monitoringslabel. Een meting elke tien seconden geeft fijn detail en vermenigvuldigt de opgeslagen rijen, terwijl een meting per minuut meestal genoeg is voor beschikbaarheid tegen een zesde van de kosten. Kies het interval op basis van de beloofde responstijd en niet op basis van wat de tool kan. Schrijf het getal dan naast het dashboard.

Voor OpenVPN schrijft de statusvoorziening een bestand op een geconfigureerd interval. In de serverconfiguratie ziet dat er zo uit status /var/log/openvpn-status.log 60, waarbij het getal aan het eind de seconden tussen herschrijvingen is, en het bestand wordt vervangen in plaats van aangevuld. Dat detail telt: een vervangen bestand heeft geen geschiedenis, terwijl een verzamelaar die aanvult er een maakt.

Bevestig dat de verzamelaar het interval ook respecteert. Een tool die elke seconde meet en één rij per minuut opslaat, leest nog steeds elke seconde.

Houd de labels stabiel en de koppeling beperkt

Een publieke sleutel identificeert een apparaatrelatie zelfs zonder naam, dus behandel de sleutel als persoonsgegeven in plaats van als ondoorzichtige identificatie. Label peers met stabiele interne identificaties die herverbindingen overleven, en houd de koppeling van identificatie naar persoon op een beperkte plek. Een dashboard dat een tijdreeks schrijft is een opgeslagen registratie, ook wanneer de VPN geen eigen bestand bijhoudt. Als het dashboard de enige opslag is, geldt de bewaarregel daar.

Bekijk ook het exportpad, want een gekopieerde CSV overleeft het systeem dat hem heeft gemaakt. Geaggregeerde beschikbaarheid is vaak genoeg voor een rapport: het aandeel peers met een handshake binnen het venster beantwoordt de operationele vraag zonder te vermelden wie wanneer verbonden was.

Documenteer wat je verzamelt en wat niet

Schrijf de verzamelbeschrijving in gewone taal: welke velden, van welke interface, op welk interval, opgeslagen waar, hoe lang bewaard en wie het mag lezen. Zet haar naast de runbook in plaats van in een beleidsopslag die niemand tijdens een incident opent. De beschrijving moet ook zeggen wat de monitoring niet kan zien, want dat is wat voorkomt dat iemand aanneemt dat de afwezigheid van surfgegevens de afwezigheid van registraties betekent.

Bekijk het bewaarvenster telkens wanneer de monitoring verandert, want een nieuw veld verlengt stilzwijgend wat wordt bewaard. Verwijder daarna wat de beschrijving zegt dat je verwijdert, en verifieer dat de verwijdering echt heeft plaatsgevonden.

Gerelateerde artikelen