Vad är observerbarhet?

Slutförd

Innan du går in på koden ska vi ta ett steg tillbaka och prata om observerbarhet. Du måste ha verktyg som hjälper dig att förstå systemets interna tillstånd baserat på vad som visas externt.

Varför implementera observerbarhet?

Det finns flera orsaker till att observerbarhet är en viktig aspekt av att utveckla och förbättra molnbaserade program:

  • Förstå systemets beteende: Observerbarhet ger insikter om hur programmet fungerar och var flaskhalsar eller fel uppstår.
  • Felsökning och felsökning: När problem uppstår kan observabilitetsverktyg ge detaljerad information om vad som hände i systemet vid tidpunkten för problemet.
  • Kontinuerlig förbättring: Observerbarhet är inte bara för att identifiera och lösa problem – det används också för kontinuerliga förbättringar. Genom att övervaka systemets prestanda över tid kan du identifiera möjligheter att optimera din kod, förbättra systemets prestanda och kvantitativt förbättra upplevelsen för dina användare.
  • Proaktiv problemidentifiering: Med rätt observabilitetsverktyg på plats kan du ofta identifiera problem innan användarna ens ser dem.

Att implementera observerbarhet i molnbaserade program är inte bara en bra idé, det är en nödvändighet för att underhålla, optimera och kontinuerligt förbättra dina program. Det gör det möjligt för utvecklare att leverera tillförlitliga, högpresterande program och ger de insikter som behövs för att driva ett välgrundat beslutsfattande.

De tre grundpelarna för observerbarhet

Det finns tre huvudpelare för observerbarhet:

  • Loggar: Loggar innehåller detaljerade poster över händelser som inträffar i ett program eller system. I din app kan du använda Microsoft.Extensions.Logging infrastruktur för att logga händelser.
  • Mått: Mått refererar till numeriska mått och räknare som ger insikt i ett systems prestanda och hälsa. Exempel är begärandefrekvenser, svarstider, processor-/minnesanvändning och felfrekvenser. I din app kan du ha specifika mått som du behöver spåra.
  • Distribuerad spårning: Den här processen omfattar spårning av en begäran när den sprids via alla mikrotjänster i din molnbaserade app. Varje tjänst loggar spårningsdata som begärande-ID:er som gör att du kan korrelera händelser mellan tjänster. Distribuerad spårning är också användbart för felsökning av prestandaproblem och fel i komplexa system.

Tillsammans ger dessa tre pelare omfattande observerbarhet i ett system.

Datakällor för telemetri

I företagets molnbaserade app finns det flera telemetrikällor som du kan välja att samla in:

  • Programloggar: Program genererar loggar som ger detaljerad information om dess åtgärd och fel om de inträffar. Loggning är en omfattande källa till telemetridata.
  • Databaser: Databaser kan tillhandahålla telemetridata om de frågor som de bearbetar, körningstider och eventuella fel som inträffar.
  • HTTP-begäranden och svar: HTTP-begäranden och svar mellan dina mikrotjänster ger omfattande och värdefulla telemetridata. Dessa data innehåller begärande- och svarshuvuden, brödtextinnehåll, statuskoder och tidsinformation.
  • Prestandadata på klientsidan: I molnbaserade appar med en klientdel kan du samla in prestandadata på klientsidan. Dessa data kan omfatta sidträffar, inläsningstider och interaktionstider för användargränssnittet.
  • Infrastrukturmått: Om ditt program finns i en molnmiljö kan du samla in infrastrukturmått som CPU-användning, minnesanvändning, nätverkstrafik och disk-I/O-åtgärder.

Genom att samla in och analysera dessa telemetridata kan du få värdefulla insikter om programmets prestanda och hälsa.

Implementera observerbarhet

Om du vill lägga till observerbarhet i ditt molnbaserade program gör du följande:

  • Lägg till loggning.
  • Aktivera mått och definiera anpassade mått som ska avbildas.
  • Aktivera distribuerad spårning med OpenTelemetry och Zipkin.
  • Instrumentera din app igen med OpenTelemetry och genom att lägga till telemetri i koden.
  • Analysera telemetridata med Prometheus, Grafana eller Application Insights.

Introduktion till OpenTelemetry

Hur bidrar OpenTelemetry till att lägga till observerbarhet i din app och varför finns det så stort stöd för den i .NET? OpenTelemetry är ett ramverk för observerbarhet med öppen källkod. Det ger ett standard, leverantörsoberoende sätt att generera telemetridata.

OpenTelemetry standardiserar hur telemetridata samlas in och överförs till serverdelsplattformar. Den överbryggar synlighetsluckor genom att tillhandahålla ett gemensamt instrumenteringsformat för alla dina mikrotjänster. Du behöver inte ominstrumentera kod eller installera olika proprietära agenter varje gång en serverdelsplattform ändras.

Eftersom det är en öppen standard har den stöd för många andra verktyg utanför .NET. OpenTelemetry har konfigurerats för att använda tillägg som gör det möjligt för exportörer att skapa telemetridata till alla olika verktyg. Det innebär att du kan använda samma verktyg för att övervaka mikrotjänster oavsett vilket språk de skrivs i.

OpenTelemetry hjälper dig att samla in och övervaka alla tre grundpelarna för observerbarhet: loggar, mått och spårningar. Du ser hur du utför dessa uppgifter i följande enheter.