Telemetri-API:er i .NET
Hur kan du undersöka beteendet för en app för felsökning eller prestandaoptimering? Ju mer data du har om vad appen gjorde, desto enklare är det att diagnostisera problem.
Anta att du arbetar för en återförsäljare av utomhusutrustning. Dina team skapar sina mikrotjänster, redo för testfasen. Du vill se till att din molnbaserade app genererar telemetri om dess beteende så att du kan diagnostisera problem under testning, mellanlagring och produktion.
I den här lektionen får du lära dig mer om telemetri och de olika typer av data som du kan registrera med den.
Vad är telemetri?
Inom teknik är telemetri mätning av data och dess automatiska överföring till ett centralt system för övervakning. Till exempel kan en racerbil registrera data om dess prestanda och skicka tillbaka den till paddocken där ingenjörer analyserar den. På samma sätt kan en rymdkapsel registrera information om förhållandena i kapseln och skicka tillbaka den till uppdragskontrollen. Under de senaste åren har det blivit vanligt att registrera och analysera telemetridata i vanligare system. Centralvärmen kan till exempel skicka telemetri till tillverkaren för felsökning.
Om du skriver molnbaserade appar är telemetri användbart när:
- Du utvecklar mikrotjänster och vill veta om de beter sig som förväntat.
- Du testar din app och vill veta vad som händer när de misslyckas med ett test.
- Du mellanlagringar din app och vill veta hur de fungerar.
- Du stöder din app i produktion och vill felsöka ett undantag eller optimera prestanda.
Vi kan beskriva ett system som genererar omfattande telemetri som:
- Observerbart: Ett observerbart system är ett system som gör att du kan förstå dess beteende utifrån.
- Instrumenterat: Ett instrumenterat system är ett system som genererar alla data som utvecklare behöver för att felsöka ett problem.
OpenTelemetry är ett observerbarhetsramverk och verktyg som du kan använda i din app för att skapa, bearbeta och generera telemetridata. Du kan enkelt lägga till det i alla .NET-program, inklusive mikrotjänster i en molnbaserad app. Den genererar data i former som vanliga observerbarhetsverktyg som Jaeger och Prometheus kan använda och analysera.
Grundpelare för observerbarhet
Typen av molnbaserade appar, som består av distribuerade mikrotjänster som använder olika tekniker, kan göra det svårt att skapa observerbar och korrekt instrumenterad kod. Alla team måste integrera observerbarhet i sina mikrotjänster, annars kan det vara svårt att övervaka och felsöka delar av appen.
Viktigt!
För att säkerställa att hela appen är observerbar bör du se till att alla utvecklingsteam överväger de tre grundpelarna för observerbarhet i sina mikrotjänster: loggning, mått och spårning.
De tre grundpelarna för observerbarhet är tre olika typer av poster som lagrar beteendet för programvaruintegreringar för senare analys:
- Logg: en tidsstämplad textpost över vad som hände under bearbetningen av en begäran.
- Mått: ett mått för en tjänst som samlas in vid körning. Måttvärden kan aggregeras i statistik om en process, inklusive:
- .NET Runtime-statistik, till exempel det minne som används eller antalet skräpsamlingar som har inträffat.
- ASP.NET- eller NuGet-paketstatistik, till exempel antalet slutförda begäranden, varaktigheter för begäranden eller antal fel.
- Anpassad statistik som är specifik för din app, till exempel antalet beställningar som görs.
- Distribuerad spårning: en post för alla arbetsenheter, som ofta kallas Spans, som behövs för att hantera en enskild begäran. I en molnbaserad app kan många mikrotjänster och säkerhetskopieringstjänster vara inblandade i en enda begäran och en distribuerad spårning skulle visa dem alla när de samarbetar för att förbereda svaret.
Kommentar
I OpenTelemetry anses alla data som inte ingår i en distribuerad spårning eller ett mått vara en logg, till exempel händelser.
Använda telemetri i .NET
.NET har inbyggda typer som representerar de tre pelarna:
- ILogger: Det här gränssnittet innehåller ett standardgränssnitt som du kan använda när du vill logga händelser från valfri .NET-kod.
- Mätare: Du kan använda den här klassen för att skapa en grupp instrument, som var och en mäter ett värde som är associerat med kodens prestanda eller beteende. Du kan till exempel lägga till ett instrument som räknar försäljningen av en produkt, eller något annat som mäter hur lång tid ett meddelande väntade i en kö. .NET innehåller också många inbyggda mått.
- Aktivitet: Du kan använda den här klassen för att registrera spårningsinformationen. Börja med att skapa ett
ActivitySource
objekt för ditt namnområde. AnropaStartActivity
sedan metoden för att börja spela in data.
Du kan använda dessa klasser i valfri .NET-kod. I nästa lektion får du se hur .NET Aspire gör det enklare att använda OpenTelemetry-klasser i molnbaserade appar.
Läs mer
- .NET Aspire-telemetri
- .NET-observerbarhet med OpenTelemetry
- Vilka diagnostikverktyg är tillgängliga i .NET Core?