Wat is waarneembaarheid?

Voltooid

Voordat u in de code duikt, gaan we een stap terug en bespreken we de waarneembaarheid. U moet hulpprogramma's hebben waarmee u inzicht krijgt in de interne status van een systeem op basis van wat extern zichtbaar is.

Waarom waarneembaarheid implementeren?

Er zijn verschillende redenen waarom waarneembaarheid een cruciaal aspect is van het ontwikkelen en verbeteren van cloudeigen toepassingen:

  • Inzicht in systeemgedrag: Waarneembaarheid biedt inzicht in hoe uw toepassing presteert en waar knelpunten of fouten optreden.
  • Foutopsporing en probleemoplossing: wanneer er problemen optreden, kunnen waarneembaarheidsprogramma's gedetailleerde informatie geven over wat er in het systeem is gebeurd op het moment van het probleem.
  • Continue verbetering: Waarneembaarheid is niet alleen bedoeld voor het identificeren en oplossen van problemen. Het wordt ook gebruikt voor continue verbetering. Door de systeemprestaties in de loop van de tijd te bewaken, kunt u mogelijkheden identificeren om uw code te optimaliseren, de systeemprestaties te verbeteren en de ervaring voor uw gebruikers kwantitatief te verbeteren.
  • Proactieve probleemdetectie: Met de juiste waarneembaarheidshulpprogramma's kunt u vaak problemen detecteren voordat uw gebruikers ze zelfs zien.

Het implementeren van waarneembaarheid in cloudtoepassingen is niet alleen een best practice, het is een noodzaak voor het onderhouden, optimaliseren en continu verbeteren van uw toepassingen. Het stelt ontwikkelaars in staat om betrouwbare, krachtige toepassingen te leveren en biedt de inzichten die nodig zijn om weloverwogen besluitvorming te stimuleren.

De drie pijlers van waarneembaarheid

Er zijn drie belangrijke pijlers van waarneembaarheid:

  • Logboeken: Logboeken bevatten gedetailleerde records van gebeurtenissen die plaatsvinden binnen een toepassing of systeem. In uw app kunt u infrastructuur gebruiken Microsoft.Extensions.Logging om gebeurtenissen te registreren.
  • Metrische gegevens: Metrische gegevens verwijzen naar numerieke metingen en tellers die inzicht bieden in de prestaties en status van een systeem. Voorbeelden hiervan zijn aanvraagsnelheden, reactietijden, CPU/geheugengebruik en foutpercentages. In uw app hebt u mogelijk specifieke metingen die u moet bijhouden.
  • Gedistribueerde tracering: dit proces omvat het traceren van een aanvraag wanneer deze wordt doorgegeven via alle microservices in uw cloudeigen app. Elke service registreert traceringsgegevens zoals aanvraag-id's waarmee u gebeurtenissen in verschillende services kunt correleren. Gedistribueerde tracering is ook handig voor het opsporen van prestatieproblemen en fouten in complexe systemen.

Samen bieden deze drie pijlers uitgebreide waarneembaarheid in een systeem.

Bronnen van gegevens voor telemetrie

In de cloudeigen app van uw bedrijf zijn er verschillende bronnen van telemetrie die u kunt kiezen om te verzamelen:

  • Toepassingslogboeken: Toepassingen genereren logboeken die gedetailleerde informatie bieden over de bewerking en fouten als deze optreden. Logboekregistratie is een uitgebreide bron van telemetriegegevens.
  • Databases: Databases kunnen telemetriegegevens bieden over de query's die ze verwerken, uitvoeringstijden en eventuele fouten die optreden.
  • HTTP-aanvragen en -antwoorden: de HTTP-aanvragen en -antwoorden tussen uw microservices bieden uitgebreide en waardevolle telemetriegegevens. Deze gegevens omvatten de aanvraag- en antwoordheaders, hoofdtekst, statuscodes en tijdsinstellingen.
  • Prestatiegegevens aan de clientzijde: In cloudeigen apps met een front-end kunt u de prestatiegegevens aan de clientzijde verzamelen. Deze gegevens kunnen paginatreffers, laadtijden en interactietijden voor de gebruikersinterface omvatten.
  • Metrische gegevens over de infrastructuur: als uw toepassing wordt gehost in een cloudomgeving, kunt u metrische gegevens over de infrastructuur verzamelen, zoals CPU-gebruik, geheugengebruik, netwerkverkeer en I/O-bewerkingen voor schijven.

Door deze telemetriegegevens te verzamelen en te analyseren, kunt u waardevolle inzichten verkrijgen in de prestaties en status van uw toepassing.

Waarneembaarheid implementeren

Als u waarneembaarheid wilt toevoegen aan uw cloudeigen toepassing, voert u de volgende stappen uit:

  • Logboekregistratie toevoegen.
  • Schakel metrische gegevens in en definieer aangepaste metrische gegevens om vast te leggen.
  • Schakel gedistribueerde tracering in met OpenTelemetry en Zipkin.
  • Instrumenteer uw app opnieuw met OpenTelemetry en door telemetrie toe te voegen aan uw code.
  • Analyseer de telemetriegegevens met Prometheus, Grafana of Application Insights.

Inleiding tot OpenTelemetry

Hoe helpt OpenTelemetry bij het toevoegen van waarneembaarheid aan uw app en waarom is er zo'n diepe ondersteuning voor deze app in .NET? OpenTelemetry is een opensource-waarneembaarheidsframework. Het biedt een standaard, leverancieragnostische manier om telemetriegegevens te genereren.

OpenTelemetry standaardiseert de manier waarop telemetriegegevens worden verzameld en verzonden naar back-endplatforms. Het overbrugt de zichtbaarheid van hiaten door een gemeenschappelijke indeling van instrumentatie te bieden voor al uw microservices. U hoeft code niet opnieuw te instrumenteren of verschillende eigen agents te installeren telkens wanneer een back-endplatform wordt gewijzigd.

Omdat het een open standaard is, ondersteunt het veel andere hulpprogramma's buiten .NET. OpenTelemetry is geconfigureerd voor het gebruik van extensies waarmee exporteurs telemetriegegevens kunnen maken voor alle verschillende hulpprogramma's. Dit betekent dat u dezelfde hulpprogramma's kunt gebruiken om microservices te bewaken, ongeacht de taal waarin ze zijn geschreven.

Met OpenTelemetry kunt u alle drie de pijlers van waarneembaarheid verzamelen en bewaken: logboeken, metrische gegevens en traceringen. In de volgende eenheden ziet u hoe u deze taken kunt uitvoeren.