Introduktion till OpenTelemetry för nybörjare

Låt oss diskutera OpenTelemetry – ett leverantörsneutralt standardsätt att samla in telemetridata.

Att erbjuda bättre observerbarhet i en applikation är en stor utmaning för alla utvecklare eftersom de behöver fånga in telemetridata för applikationen. Cambridge-ordboken definierar telemetri som vetenskapen eller processen att samla in information om objekt som är långt borta och skicka informationen någonstans elektroniskt.

Till exempel genererar en användares enstaka klick eller session på en webbplats många förfrågningar och spårning som flödar mellan nätverk, mikrotjänster, databaser, etc.

OpenTelemetry är en observerbarhetsplattform, en uppsättning välfaktoriserade komponenter som kan användas tillsammans eller a la carte. Dessutom har utvecklare av ramverk och bibliotek som vi alla använder idag ett standardsätt att baka in telemetridata i dessa bibliotek och ramverk, vilket ger slutanvändarna många direkta insikter om vad dessa ramverk gör under huven .

För att förstå OpenTelemetry måste du först veta vad distribuerad spårning är.

Vad är distribuerad spårning?

När våra applikationer blir mer komplexa och fler tjänster är involverade i att betjäna användartrafik och slutföra transaktioner, blir det mer och mer kritiskt att förstå hur förfrågningar går igenom våra tjänster och hur varje tjänst bidrar till den totala latenstiden. Detta är vad distribuerad spårning gör. Den fångar fördröjningen av användarförfrågningar och hur lång tid det tar för varje mikrotjänst i sökvägen att returnera ett svar.

När en användarförfrågan kommer in vill vi skapa ett spår, dvs den totala informationen som beskriver hur vårt system svarar på en användarförfrågan. Spår är sammansatta av spann och varje span anger ett specifikt förfrågan och svarspar som är involverade i att leverera en användarförfrågan. Det överordnade intervallet beskriver latensen som observerats av slutanvändaren. Och barnspann används för att förstå hur en viss tjänst i det distribuerade systemet anropades och svarade med sin latensinformation.

Vad är OpenTelemetry?

Öppna Telemetri är ett projekt med öppen källkod som drivs av CNCF som tillhandahåller ett standardsätt att generera telemetridata. Det skapades genom sammanslagningen av OpenTracingen standard för att generera spårdata, och OpenCensussom var en standard för att generera mätdata.

OpenTelemetry erbjuder en enda uppsättning API:er, agenter, samlartjänster och bibliotek för att fånga distribuerade spår och mätvärden från din applikation. OpenTelemetry standardiserar hur vi samlar in telemetridata och skickar den till en backend som du väljer. Detta ger dig en leverantörsneutral väg till instrumentering och ger dig flexibiliteten att ändra din back-end utan att instrumentera din kod igen.

Så du kan instrumentera dina applikationer med hjälp av en leverantörs-agnostisk agent samtidigt som du skickar dina mätvärden och spår till en SaaS-leverantör som Datadog. Om du sedan vill byta leverantör (t.ex. från Datadog till Dynatrace), kan du göra det utan att ändra din applikationskod.

OpenTelemetry-projektet syftar till att tillhandahålla en enda uppsättning API-bibliotek och agenter för att fånga mätvärden och distribuerade spår från dina applikationer. Detta gäller på många språk och plattformar. OpenTelemetry-projektet inkluderar också en valfri samlartjänst och har ett dedikerat arkiv för specifikationer. För att vara tydlig är OpenTelemetry inte Jaeger eller Prometheus, som är observerbara back-ends. Men det hjälper till att exportera data till öppen källkod och kommersiella backends.

Nedan är funktionerna som OpenTelemetry tillhandahåller:

  • Standardisering på insamling av telemetridata som organisationer kan följa, vilket gör det enkelt att flytta mellan leverantörer
  • En leverantörs-agnostisk semantisk konvention med öppen standard för processen för datainsamling
  • Samlare som kan användas som agent eller gateways eller på många olika sätt
  • Stöder flera format för kontextutbredning för migrering
  • En helhetslösning för att generera, sända ut, samla in, bearbeta och exportera telemetridata
  • Möjlighet att skicka data till olika destinationer parallellt med fullständig kontroll på det

OpenTelemetry-komponenter

Nedan är kärnkomponenterna i OpenTelemetry:

  • Proto: Denna komponent används för att definiera för samlare, instrumenteringsbibliotek, etc., vilka är språkoberoende gränssnittstyper för OpenTelemetry.
  • Samlare: Samlare används för att ta emot, bearbeta och exportera telemetridata. Denna implementering av samlare måste vara säljaragnostisk. Som standard exporteras all telemetridata av instrumenteringsbibliotek på denna plats.
  • Specifikation: Denna komponent beskriver kraven och förväntningarna på implementeringen på olika språk bestående av API:er, SDK:er och data. API genererar telemetridata, bearbetning och exportmöjligheter för att implementera API:er som tillhandahålls av SDK:er. Data har de semantiska konventionerna för att stödja alla typer av leverantörer utan att ändra någon kod.
  • Instrumentbibliotek: Dessa är tillgängliga på flera språk som en del av OpenTelemetry-projektet. Dessa bibliotek används för att tillhandahålla observerbarhet för andra bibliotek att göra alla applikationer som observeras genom att göra anrop till OpenTelemetry API.

OpenTelemetry Architecture

Bild från New Relic

På hög nivå består OpenTelemetry av tre huvuddelar:

  • En uppsättning API:er för att instrumentera applikationer, bibliotek och ramverk.
  • SDK:n implementerar API:er.
  • En valfri samlare kan mata in, aggregera och exportera telemetridata varhelst du behöver det.

Syftet med API:t är att möjliggöra skapandet av instrumentering för bibliotek och applikationskoden. API:et har fyra huvudsektioner: spårning, mätare, ett delat sammanhang och semantiska konventioner.

  • Tracer API stöder att skapa, kommentera och slutföra spann.
  • Mätarens API består av flera metriska instrument. Exempel på dessa instrument är observatörer, värdemätare, räknare.
  • Du kan spåra och köra span-kontext genom att aktivera kontext-API:et och sprida det sammanhanget både inom och externt till ditt system.
  • Alla riktlinjer och regler för huvudsakligen namngivning, såsom namngivning av spann, attribut, etiketter och metriska instrument, finns i de semantiska konventionerna. Dessa konventioner implementeras för att säkerställa överensstämmelse mellan olika språkimplementeringar och för externa instrument.

I ett delat sammanhang ligger kontextimplementeringen mellan spåraren och mätaren och gör det möjligt för alla icke-observatörs metriska inspelningar att ske inom ramen för ett exekverande spann. En funktion som gör att SDK:er kan fånga exemplariska spann för metriska värden. Du kan anpassa kontexten med propagatorer, som möjliggör spridning av spankontexten in i och ut ur systemet som möjliggör verklig distribuerad spårning.

Samlaren är en viktig del av OpenTelemetry-arkitekturen. Det är en fristående tjänst som kan ta emot, bearbeta och exportera telemetridata från olika källor, inklusive OpenCensus, Zipkin, Jaeger och OpenTelemetry-protokollet. Med hjälp av samlare kan du exportera spann och mätvärden till flera leverantörer och telemetrisystem med öppen källkod.

OpenTelemetry-arkitekturen erbjuder en komplett telemetrilösning direkt. Du kan också göra anpassning genom att använda flera förlängningspunkter efter behov.

Hur fungerar OpenTelemetry?

Installera OpenTelemetry-klienten inuti varje tjänst i din distribution. Klienten är SDK; SDK har i sin tur ett API. Dina applikationsramar och bibliotek använder detta instrumenterings-API för att beskriva det arbete de utför. SDK:n exporterar sedan de insamlade observationerna till en datapipeliningtjänst som kallas Collector.

OpenTelemetry har ett eget dataprotokoll, OTLP, men insamlaren kan översätta OTLP till olika format, bl.a. Zipkin, Jaegeroch Prometheus. Noterbart är att OpenTelemetry inte tillhandahåller sitt eget backend- eller analysverktyg; detta beror på att det är en standardiseringssatsning i hjärtat av OpenTelemetry. Målet är att komma fram till ett universellt språk för att beskriva hur datorer fungerar i en molnmiljö. Målet är inte att standardisera hur vi analyserar den datan. Istället hoppas vi att OpenTelemetry kommer att hjälpa till att driva världen av observerbarhet framåt genom att tillåta nya analysverktyg att komma igång snabbt utan att bygga om hela detta ekosystem av telemetrimjukvara.

När du skickar mycket data över systemet finns det mycket att tänka på. Lyckligtvis har OpenTelemetry tänkt på allt och har lösningar på var och en av dessa frågor. Först och främst är OpenTelemetry flexibel, och den hanterar flera format för kontextutbredning. Det betyder att även om det finns en standard så finns det fortfarande valmöjlighet inom den standarden. Så, om du använder något som w3c-spårningskontextformatet eller b3-utbredning, är dessa olika standarder inom standarden som gör att dina tjänster kan koppla ihop punkterna.

Slutsats

OpenTelemetry samlar in en mängd olika observationer, distribuerade spårningsmått och systemresurser är de viktigaste. Istället för att behandla dessa som separata signaler, flätar OpenTelemetry ihop dem och ger indexering och sammanhang som gör att du kan aggregera och korsindexera alla dessa signaler på baksidan.

Utöver datainsamlingen tillhandahåller OpenTelemetry en databehandlings- och pipelining-funktion som låter dig ändra dataformat, manipulera dina data och alla verktyg du behöver för att bygga en robust telemetripipeline i ett modernt system.

Så, det handlade om OpenTelemetry, fortsätt och prova detta verktyg.