Telemetrie-API's in .NET

Voltooid

Hoe kunt u het gedrag van een app onderzoeken voor het oplossen van problemen of optimalisatie van prestaties? Hoe meer gegevens u hebt over wat de app heeft gedaan, hoe eenvoudiger het is om problemen te diagnosticeren.

Stel dat u werkt voor een winkel voor buitenapparatuur. Uw teams bouwen hun microservices, klaar voor de testfase. U wilt ervoor zorgen dat uw cloudeigen app telemetrie verzendt over het gedrag ervan, zodat u problemen tijdens het testen, faseren en productie kunt diagnosticeren.

In deze les leert u meer over telemetrie en de verschillende soorten gegevens die u ermee kunt opnemen.

Wat is telemetrie?

In engineering is telemetrie de meting van gegevens en de automatische overdracht naar een centraal systeem voor bewaking. Een racewagen kan bijvoorbeeld gegevens over de prestaties vastleggen en terugsturen naar de paddock waar technici deze analyseren. Op dezelfde manier kan een ruimtecapsule informatie over omstandigheden in de capsule vastleggen en deze terugsturen naar de missiecontrole. In de afgelopen jaren wordt het gebruikelijk om telemetriegegevens vast te leggen en te analyseren in meer algemene systemen. Uw centrale verwarming kan bijvoorbeeld telemetrie naar de fabrikant verzenden om te helpen bij het oplossen van problemen.

Als u cloudeigen apps schrijft, is telemetrie handig wanneer:

  • U ontwikkelt microservices en wilt weten of ze zich gedragen zoals verwacht.
  • U test uw app en wilt weten wat er gebeurt wanneer een test mislukt.
  • U gaat uw app faseren en wilt weten hoe ze presteren.
  • U ondersteunt uw app in productie en wilt een uitzondering oplossen of de prestaties optimaliseren.

We kunnen een systeem beschrijven dat uitgebreide telemetrie verzendt als:

  • Waarneembaar: een waarneembaar systeem is een systeem waarmee u het gedrag van buiten het systeem kunt begrijpen.
  • Instrumented: Een geïnstrueerd systeem is een systeem waarmee alle gegevensontwikkelaars een probleem moeten oplossen.

OpenTelemetry is een framework en toolkit voor waarneembaarheid die u in uw app kunt gebruiken om telemetriegegevens te maken, te verwerken en te verzenden. U kunt deze eenvoudig toevoegen aan elke .NET-toepassing, inclusief microservices in een cloudeigen app. Het verzendt gegevens in formulieren die veelgebruikte waarneembaarheidshulpprogramma's zoals Jaeger en Prometheus kunnen gebruiken en analyseren.

Pijlers van waarneembaarheid

De aard van cloudeigen apps, die bestaan uit gedistribueerde microservices die gebruikmaken van verschillende technologieën, kunnen het moeilijk maken om waarneembare en goed geïnstrueerde code te bouwen. Alle teams moeten waarneembaarheid integreren in hun microservices, anders kan het lastig zijn om een deel van uw app te bewaken en problemen op te lossen.

Belangrijk

Om ervoor te zorgen dat uw hele app waarneembaar is, moet u ervoor zorgen dat alle ontwikkelteams rekening houden met de drie pijlers van waarneembaarheid in hun microservices: Logboekregistratie, metrische gegevens en tracering.

De drie pijlers van waarneembaarheid zijn drie verschillende typen records die het gedrag van software-integraties opslaan voor latere analyse:

  • Logboek: een tijdstempeltekstrecord van wat er is gebeurd tijdens de verwerking van een aanvraag.
  • Metrische waarde: een meting van een service die tijdens runtime is vastgelegd. Metrische waarden kunnen worden samengevoegd in statistieken over een proces, waaronder:
    • .NET Runtime-statistieken zoals het gebruikte geheugen of het aantal garbagecollection's dat is opgetreden.
    • ASP.NET of NuGet-pakketstatistieken, zoals het aantal voltooide aanvragen, de duur van de aanvraag of het aantal fouten.
    • Aangepaste statistieken die specifiek zijn voor uw app, zoals het aantal geplaatste orders.
  • Gedistribueerde tracering: een record van alle werkeenheden, ook wel Spans genoemd, die nodig zijn om een afzonderlijke aanvraag te verwerken. In een cloudeigen app kunnen veel microservices en backing-services worden betrokken bij één aanvraag en wordt een gedistribueerde tracering allemaal weergegeven terwijl ze samenwerken om het antwoord voor te bereiden.

Notitie

In OpenTelemetry worden alle gegevens die geen deel uitmaken van een gedistribueerde tracering of metrische gegevens beschouwd als een logboek, bijvoorbeeld gebeurtenissen.

Telemetrie gebruiken in .NET

.NET heeft ingebouwde typen die de drie pijlers vertegenwoordigen:

  • ILogger: Deze interface biedt een standaardinterface die u kunt gebruiken wanneer u gebeurtenissen uit .NET-code kunt registreren.
  • Meter: U kunt deze klasse gebruiken om een groep instrumenten te maken, die elk een waarde meet die is gekoppeld aan de prestaties of het gedrag van uw code. U kunt bijvoorbeeld een instrument toevoegen waarmee de verkoop van een product wordt geteld of een ander instrument waarmee de tijd wordt bepaald waarop een bericht in een wachtrij wacht. .NET biedt ook veel ingebouwde metrische gegevens.
  • Activiteit: U kunt deze klasse gebruiken om de traceringsgegevens vast te leggen. Begin met het maken van een ActivitySource object voor uw naamruimte. Roep vervolgens de StartActivity methode aan om gegevens op te nemen.

U kunt deze klassen gebruiken in elke .NET-code. In de volgende les ziet u hoe .NET Aspire het eenvoudiger maakt om OpenTelemetry-klassen te gebruiken in cloudeigen apps.

Meer informatie