Dienst · Software-ontwikkeling

Observability en monitoring laten inrichten.

Software die uit een handvol diensten bestaat, laat zich niet meer debuggen door in de logs te kijken. Wij richten meetwaarden, logregels en traces zo in dat u een verzoek van begin tot eind kunt volgen, en zetten de alarmering op wat uw gebruikers merken in plaats van op wat een machine toevallig meldt.

OpenTelemetryTracingAlertingFoutbudget

Wat wij hierin wel en niet doen.

Er wordt in de meeste organisaties niet te weinig gemeten, maar te veel en te los. Drie dashboards die elkaar tegenspreken, twee alarmkanalen waarvan er een op stil staat, en een logbestand dat zo groot is geworden dat niemand er meer in zoekt. De vraag die op het moment van een storing telt — waar in de keten gaat dit mis — is dan nog steeds niet te beantwoorden zonder drie mensen erbij te halen.

Voor het gereedschap zelf bestaan goede producten: Grafana met Prometheus, Loki en Tempo, Datadog, Elastic, New Relic, Honeycomb, Sentry, en de ingebouwde diensten van Azure, AWS en GCP. Draait daar bij u al iets en past het, dan adviseren we u dat te houden. Wij vervangen zelden een platform als losstaande oplossing; een tweede leverancier ernaast maakt het beeld meestal juist verder versnipperd.

Wat wij wel doen is de laag ertussen: instrumentatie in uw software zodat er iets te meten valt, een traceerspoor dat over systeemgrenzen heen blijft lopen, en alarmering die aan een dienst hangt in plaats van aan een server. Dat doen we vaak als onderdeel van een moderniseringstraject, naast het inrichten van DevSecOps in de pijplijn, of los wanneer de storingen zich opstapelen en niemand kan aanwijzen waarom.

Drie soorten opdrachten die wij hierin krijgen.

De meeste trajecten beginnen bij een van deze drie en groeien door zodra het eerste beeld er is. In het eerste gesprek zeggen we welke variant bij uw landschap het meeste oplevert, en welke u beter kunt uitstellen.

Eerste traject · vast sprintbudget

De vier signalen per dienst inrichten

Doorlooptijd, foutpercentage, verkeer en verzadiging — per dienst, met de spreiding erbij en niet alleen het gemiddelde. Een gemiddelde van tweehonderd milliseconde kan betekenen dat iedereen tweehonderd wacht, of dat een op de honderd acht seconden wacht; dat laatste is waar uw klachten vandaan komen. Wij leggen die meting vast in de software, brengen ze samen op een dashboard dat over uw dienstverlening gaat, en halen de alarmen weg die over losse technische waarden gaan.

Vier gouden signalenPercentielenDashboard per dienstAlarmopschoning
Middelgroot traject · vast sprintbudget

Tracing over systeemgrenzen heen

Een verzoek dat door vier diensten gaat, krijgt bij binnenkomst een spoor dat het overal mee naartoe neemt. In uw eigen code, in de wachtrijen ertussen en in de aanroepen naar externe partijen. Wij bouwen dat met OpenTelemetry, zodat u niet aan een leverancier vastzit, en zorgen dat logregels en meetwaarden hetzelfde spoor dragen. Vanaf dat moment is de vraag “waar bleef dit verzoek hangen” een klik in plaats van een middag.

OpenTelemetrySpoor over wachtrijenGekoppelde logregelsExterne aanroepen
Groter traject · vast sprintbudget

Foutbudgetten en dienstafspraken

Een doelwaarde per dienst — hoeveel verzoeken mogen falen of te lang duren voordat het een probleem is — en een budget dat daaruit volgt. Dat maakt van “het is traag” een getal waar een gesprek over te voeren is, en het geeft uw team een eerlijke grens tussen nieuwe functies bouwen en stabiliteit repareren. Inclusief rapportage richting uw opdrachtgever of, wanneer u zelf levert, richting uw klanten.

Doelwaarden per dienstFoutbudgetRapportageEscalatiepad

Wat u aan het einde van een traject heeft.

Een werkende opstelling die op uw eigen platform draait, met de kennis in uw team om hem uit te breiden zonder ons erbij te halen.

  • Instrumentatie in uw softwareMeetwaarden, logregels en traces vanuit de code zelf, via OpenTelemetry, zodat u van platform kunt wisselen zonder alles opnieuw te bouwen.
  • Dashboards per dienstEen overzicht per dienst met de vier signalen en de spreiding, plus een startpagina die in een oogopslag laat zien of er iets aan de hand is.
  • Alarmering die kloptAlarmen op wat uw gebruikers merken, met een duidelijke ontvanger, een escalatiepad en een korte beschrijving van wat de ontvanger als eerste moet doen.
  • Een bewaarbeleid met de kosten erbijPer soort gegeven vastgelegd hoe lang het blijft staan en waarom, inclusief steekproef op traces met de afspraak dat alles wat faalt volledig bewaard blijft.
  • Draaiboeken voor de meest voorkomende storingenPer terugkerend patroon een korte pagina: hoe herkent u het, waar kijkt u als eerste, en wat is de ingreep die het eerder heeft opgelost.
  • Overdracht aan uw teamTwee werksessies waarin uw ontwikkelaars zelf een dienst instrumenteren en een alarm inrichten, zodat het uitbreiden niet bij ons blijft liggen.

Wanneer dit de moeite waard is.

Vier situaties die wij telkens terugzien bij organisaties die ons hiervoor benaderen. Herkent u er een, dan is er waarschijnlijk iets te winnen.

Zoeken duurt te lang

Elke storing is een zoektocht

Er gaat iets stuk en er zitten drie mensen in drie systemen te kijken, zonder te weten of ze het over hetzelfde verzoek hebben. De hersteltijd wordt niet bepaald door de reparatie maar door het vinden. Dat is precies wat een doorlopend traceerspoor wegneemt.

Alarmmoeheid

Niemand kijkt nog naar de meldingen

Er komen zoveel waarschuwingen binnen dat het kanaal is gedempt. Op het moment dat er echt iets is, valt dat niet meer op tussen de ruis. Het probleem is bijna nooit de hoeveelheid maar de aard: er wordt gealarmeerd op machines in plaats van op dienstverlening.

Verbetering is niet aantoonbaar

Elke discussie gaat op gevoel

U wilt onderbouwen dat een investering in stabiliteit iets heeft opgeleverd, maar er is geen meting van voor die tijd. Zonder cijfers wordt elke verbetering een mening, en een mening houdt geen stand in een gesprek over waar het budget heen gaat.

Meerdere diensten

Het is geen applicatie meer maar een landschap

Wat begon als een applicatie is uitgegroeid tot een handvol diensten met wachtrijen en externe koppelingen ertussen. Het gereedschap dat bij een applicatie werkte, geeft nu een beeld per onderdeel en niet van het geheel.

Hoe zo’n traject loopt.

1

Kennismaking en intake

Een gesprek over wat er nu draait, wat er al gemeten wordt en waar de laatste paar storingen vandaan kwamen. We vragen naar de systemen ertussen — wachtrijen, externe koppelingen, geplande taken — want daar zitten de blinde vlekken meestal. Ook brengen we in kaart welke koppelingen onderdeel worden van het spoor.

2

Nulmeting en scope

We meten wat er vandaag is: welke diensten leveren al signalen, welke helemaal niet, en wat kost de huidige opslag. Daarnaast lopen we de laatste storingen na en vragen per storing wat iemand had willen zien. Aan het einde ligt er een scope die begint bij de dienst waar de meeste tijd verloren gaat, niet bij de dienst die het makkelijkst te instrumenteren is.

3

Instrumenteren in sprints

We werken in tweewekelijkse sprints en leveren per sprint een dienst op die volledig is aangesloten: meetwaarden, logregels met spoor, en traces die doorlopen naar wat erachter zit. Uw eigen ontwikkelaars werken mee, want instrumentatie die door een ander is aangebracht, wordt zelden onderhouden.

4

Alarmering en draaiboeken

Pas als er genoeg gemeten wordt, richten we de alarmering in. Per alarm leggen we vast wie hem krijgt, wat de eerste handeling is en wanneer er wordt geescaleerd. Tegelijk ruimen we de bestaande alarmen op; dat levert in de praktijk vaker rust op dan het toevoegen van nieuwe.

5

Overdracht en nazorg

Twee werksessies met uw team, een korte periode waarin wij meekijken bij echte storingen, en daarna een evaluatie waarin we de hersteltijd afzetten tegen de nulmeting. Als u daarna onderhoud bij ons wilt beleggen kan dat, maar het is geen voorwaarde.

Veelgestelde vragen over observability en monitoring.

Wat ontwikkelteams, IT-managers en verantwoordelijken voor beschikbaarheid ons meestal vragen voordat zo’n traject begint.

Wat is het verschil tussen monitoring en observability?
Monitoring beantwoordt vragen die u vooraf heeft bedacht: staat de dienst aan, is de schijf vol, hoeveel verzoeken kwamen er binnen. Observability gaat over de vragen die u pas tijdens een storing bedenkt, en die u dan zonder nieuwe code moet kunnen beantwoorden. Het verschil zit vooral in de rijkdom van wat u vastlegt: genoeg context per gebeurtenis om achteraf te kunnen filteren op iets waar u vooraf geen dashboard voor had gemaakt. In de praktijk heeft u beide nodig, en de meeste organisaties hebben het eerste wel en het tweede niet.
Welke vier signalen bedoelen jullie precies?
Doorlooptijd, foutpercentage, hoeveelheid verkeer en verzadiging. Die vier beschrijven samen of uw dienstverlening het doet en of ze op haar tenen loopt. Het aantrekkelijke eraan is dat de eerste drie over uw gebruiker gaan en niet over uw infrastructuur. Een schijf die voor tachtig procent vol is, is geen probleem; een doorlooptijd die verdubbelt is dat wel. Alarmeren op de eerste categorie levert nachten op waarin er niets aan de hand was, en dat is precies hoe alarmmoeheid ontstaat.
Vervangen jullie ons huidige platform?
Meestal niet, en we raden het zelden aan. Grafana, Datadog, Elastic, New Relic en de diensten van uw cloudleverancier doen wat ze moeten doen; het probleem zit vrijwel altijd in wat er aan de kant van uw software wordt aangeleverd. Wij richten die kant in. Wilt u wel wisselen, dan is instrumenteren via OpenTelemetry de verstandigste volgorde: dat maakt uw meetgegevens onafhankelijk van het platform, zodat de overstap daarna een configuratiekwestie is en geen tweede verbouwing.
Wat kost de opslag, en hoe houden we dat in de hand?
De rekening van observability zit bijna volledig in hoeveel u bewaart en hoe lang. De aanpak die standhoudt, is per soort gegeven kiezen. Meetwaarden zijn klein en mogen lang blijven staan, want die vertellen u hoe iets zich over maanden ontwikkelt. Logregels zijn groot en vooral nuttig in de dagen erna. Traces zijn het grootst, en daarvan is een steekproef genoeg, met de afspraak dat alles wat faalt wel volledig wordt bewaard. Die drie keuzes samen schelen in de praktijk een veelvoud zonder dat u iets inlevert.
Werkt dit ook als onze software niet uit losse diensten bestaat?
Ja, en het is dan eenvoudiger. Bij een enkele applicatie zit de winst minder in tracing en meer in het samenbrengen van wat er al is: meetwaarden per functie, logregels met genoeg context om te filteren, en alarmering die aan de dienst hangt. Wij richten dat op dezelfde manier in, alleen valt de stap over systeemgrenzen weg. Groeit u later door naar meerdere diensten, dan staat het fundament er al.
Hoe gaat dit samen met onze beveiliging?
Dezelfde vastlegging die u helpt bij een storing, is wat u nodig heeft om na een beveiligingsincident te reconstrueren wat er is gebeurd. Dat is geen extra project maar hetzelfde werk met een tweede opbrengst, en het sluit direct aan op kwetsbaarhedenbeheer. Wel letten we op wat er in de logregels terechtkomt: persoonsgegevens en geheimen horen daar niet in, en dat is een keuze die u bij het instrumenteren maakt en niet achteraf repareert.
Wie moet dit bij ons oppakken?
Iemand die dienst draait als er iets stukgaat. Observability die wordt ingericht door een ander dan wie ermee werkt, wordt zelden gebruikt: de dashboards beantwoorden dan vragen die de bouwer had en niet de vragen die om drie uur ’s nachts opkomen. Wij werken daarom samen met uw eigen ontwikkelaars en beheerders, en de overdracht is onderdeel van het traject en geen bijlage aan het einde.
Hoe snel merken we er iets van?
De eerste winst zit meestal in het samenbrengen van wat er al is en in het opschonen van de alarmering; dat merkt u binnen de eerste sprints. Tracing over systeemgrenzen vraagt aanpassingen in de software en loopt langer door, dienst voor dienst. We beginnen bewust bij de dienst waar de meeste tijd verloren gaat, zodat de eerste oplevering ook meteen de meest merkbare is.
Kunnen jullie dit ook voor ingekochte software?
Voor het deel dat wij kunnen bereiken wel: verkeer dat er binnenkomt en uitgaat, beschikbaarheid, doorlooptijd van aanroepen, en de wachtrijen ertussen. Wat er binnen zo’n pakket gebeurt, hangt af van wat de leverancier zelf beschikbaar stelt. In de praktijk is dat genoeg om vast te stellen of een probleem bij u of bij hen ligt, en dat is meestal precies de vraag die u wilt kunnen beantwoorden.
Wat is een foutbudget en hebben wij dat nodig?
Een foutbudget is de ruimte tussen uw doelwaarde en honderd procent. Spreekt u af dat negenennegentig komma negen procent van de verzoeken slaagt, dan is die laatste tiende procent uw budget. Zolang het niet op is, mag er nieuwe functionaliteit uit; raakt het op, dan gaat de aandacht eerst naar stabiliteit. Dat is nuttig zodra er discussie is tussen doorbouwen en repareren, en overbodig zolang die discussie er niet is. Wij raden het aan bij de derde variant, niet bij de eerste.
Werken jullie met OpenTelemetry of met iets van de leverancier?
Standaard met OpenTelemetry. Dat is de open standaard voor meetwaarden, logregels en traces, en vrijwel elk platform kan hem lezen. Het voordeel is dat de instrumentatie in uw code niet aan een leverancier vastzit: wisselt u van platform, dan wijst u de stroom ergens anders heen. Alleen wanneer u al diep in een leverancier-eigen aanpak zit en er geen wisselplannen zijn, kan het verstandiger zijn daarop door te bouwen.

Praat met ons over uw monitoring.

Een kennismaking van een half uur, vrijblijvend. Vertel wat er de laatste keer misging en hoe lang het duurde voordat iemand wist waar het zat — dan zeggen we waar wij zouden beginnen, ook als we uiteindelijk niet samenwerken.

Edit Content