Introduksjon til OpenTelemetry for nybegynnere

La oss diskutere OpenTelemetry – en leverandørnøytral standard måte å samle inn telemetridata på.

Å tilby bedre observerbarhet i en applikasjon er en stor utfordring for enhver utvikler fordi de trenger å fange opp telemetridata for applikasjonen. Cambridge-ordboken definerer telemetri som vitenskapen eller prosessen med å samle informasjon om objekter som er langt unna og sende informasjonen et sted elektronisk.

For eksempel genererer en brukers enkeltklikk eller økt på et nettsted mange forespørsler og sporing som flyter mellom nettverk, mikrotjenester, databaser, etc.

OpenTelemetry er en observerbarhetsplattform, et sett med velfaktorerte komponenter som kan brukes sammen eller a la carte. Videre har utviklere av rammeverk og biblioteker som vi alle bruker i dag, nå en standard måte å bake telemetridata inn i disse bibliotekene og rammeverkene, noe som gir sluttbrukerne mange direkte innsikt i hva disse rammene gjør under panseret .

For å forstå OpenTelemetry må du først vite hva distribuert sporing er.

Hva er distribuert sporing?

Etter hvert som applikasjonene våre blir mer komplekse og flere tjenester er involvert i å betjene brukertrafikk og fullføre transaksjoner, blir det mer og mer kritisk å forstå hvordan forespørsler går gjennom tjenestene våre og hvordan hver tjeneste bidrar til den totale ventetiden. Dette er hva distribuert sporing gjør. Den fanger opp ventetiden til brukerforespørsler og hvor lang tid det tar for hver mikrotjeneste i banen å returnere et svar.

Når en brukerforespørsel kommer inn, ønsker vi å lage et spor, dvs. den totale informasjonen som beskriver hvordan systemet vårt reagerer på en brukerforespørsel. Spor er sammensatt av spenn, og hvert spenn betyr et spesifikt forespørsel- og svarpar som er involvert i å betjene en brukerforespørsel. Det overordnede spennet beskriver ventetiden som observert av sluttbrukeren. Og underordnet spenn brukes til å forstå hvordan en bestemt tjeneste i det distribuerte systemet ble kalt og svarte med informasjon om ventetiden.

Hva er OpenTelemetry?

OpenTelemetri er et åpen kildekode-prosjekt arrangert av CNCF som gir en standard måte å generere telemetridata på. Den ble opprettet ved sammenslåingen av OpenTracingen standard for å generere sporingsdata, og OpenCensussom var en standard for generering av metriske data.

  Slik publiserer du Outlook-kalenderen din fra Outlook.com

OpenTelemetry tilbyr et enkelt sett med APIer, agenter, samletjenester og biblioteker for å fange opp distribuerte spor og beregninger fra applikasjonen din. OpenTelemetry standardiserer hvordan vi samler inn telemetridata og sender dem til en backend du velger. Dette gir deg en leverandørnøytral vei til instrumentering og gir deg fleksibiliteten til å endre back-end uten å instrumentere koden igjen.

Så du kan instrumentere applikasjonene dine ved å bruke en leverandøragnostisk agent mens du fortsatt sender dine beregninger og spor til en SaaS-leverandør som Datadog. Så hvis du vil bytte leverandør (f.eks. fra Datadog til Dynatrace), kan du gjøre det uten å endre applikasjonskoden.

OpenTelemetry-prosjektet har som mål å tilby et enkelt sett med API-biblioteker og -agenter for å fange opp beregninger og distribuerte spor fra applikasjonene dine. Dette gjelder på tvers av mange språk og plattformer. OpenTelemetry-prosjektet inkluderer også en valgfri samlertjeneste og har et dedikert oppbevaringssted for spesifikasjoner. For å være tydelig, er ikke OpenTelemetry Jaeger eller Prometheus, som er observerbare back-ends. Men det hjelper med å eksportere data til åpen kildekode og kommersielle backends.

Nedenfor er funksjonene som OpenTelemetry tilbyr:

  • Standardisering på innsamling av telemetridata som organisasjoner kan følge, noe som gjør det enkelt å flytte mellom leverandører
  • En leverandøragnostisk, åpen standard semantisk konvensjon for prosessen med datainnsamling
  • Samler som kan distribueres som en agent eller gatewayer eller mange forskjellige måter
  • Støtter flere kontekstformidlingsformater for migrering
  • En ende-til-ende-løsning for å generere, sende ut, samle inn, behandle og eksportere telemetridata
  • Mulighet for å sende data til ulike destinasjoner parallelt med full kontroll på det

OpenTelemetry-komponenter

Nedenfor er kjernekomponentene i OpenTelemetry:

  • Proto: Denne komponenten brukes til å definere for samlere, instrumenteringsbiblioteker, etc., som er språkuavhengige grensesnitttyper for OpenTelemetry.
  • Samler: Samlere er vant til å motta, behandle og eksportere telemetridata. Denne implementeringen av samlere må være leverandøragnostisk. Som standard eksporteres alle telemetridata av instrumenteringsbiblioteker på dette stedet.
  • Spesifikasjon: Denne komponenten beskriver kravene og forventningene til implementeringen på forskjellige språk bestående av APIer, SDKer og data. API genererer telemetridata, prosessering og eksportfunksjoner for implementering av API-ene levert av SDK-er. Data har de semantiske konvensjonene for å støtte alle typer leverandører uten å endre noen kode.
  • Instrumenteringsbiblioteker: Disse er tilgjengelige på flere språk som en del av OpenTelemetry-prosjektet. Disse bibliotekene brukes til å gi observerbarhet for andre biblioteker for å lage alle applikasjonene som observeres ved å ringe til OpenTelemetry API.
  5 beste skybaserte VAPT for små til mellomstore bedriftssider

OpenTelemetry-arkitektur

Bilde fra New Relic

På høyt nivå består OpenTelemetry av tre hoveddeler:

  • Et sett med APIer for å instrumentere applikasjoner, biblioteker og rammeverk.
  • SDK-en implementerer APIer.
  • En valgfri samler kan innta, samle og eksportere telemetridata uansett hvor du trenger det.

Formålet med API er å muliggjøre opprettelse av instrumentering for biblioteker og applikasjonskoden. API-en har fire hovedseksjoner: sporing, målere, en delt kontekst og semantiske konvensjoner.

  • Tracer API støtter å opprette, kommentere og fullføre spenn.
  • Meter API består av flere metriske instrumenter. Eksempler på disse instrumentene er observatører, verdiskrivere, tellere.
  • Du kan spore og utføre span-kontekst ved å aktivere kontekst-API-en og spre den konteksten både innenfor og eksternt til systemet ditt.
  • Alle retningslinjer og regler for hovedsaklig navngivning, som å navngi spenn, attributter, etiketter og metriske instrumenter, er til stede i de semantiske konvensjonene. Disse konvensjonene er implementert for å sikre konsistens på tvers av ulike språkimplementeringer og for eksterne instrumenter.

I en delt kontekst ligger kontekstimplementeringen mellom sporeren og måleren og gjør det mulig for alle ikke-observatørers metriske opptak å skje i sammenheng med et eksekverende span. En funksjon som lar SDK-er fange opp eksemplariske spenn for metriske verdier. Du kan tilpasse konteksten med propagatorer, som gjør det mulig å spre spennkonteksten inn og ut av systemet som muliggjør sann distribuert sporing.

Samleren er en viktig del av OpenTelemetry-arkitekturen. Det er en frittstående tjeneste som kan motta, behandle og eksportere telemetridata fra ulike kilder, inkludert OpenCensus, Zipkin, Jaeger og OpenTelemetry-protokollen. Ved å bruke samlere kan du eksportere spenn og beregninger til flere leverandører og telemetrisystemer med åpen kildekode.

  Hvordan koble HomePod til WiFi

OpenTelemetry-arkitekturen tilbyr en komplett telemetriløsning rett ut av esken. Du kan også gjøre tilpasning ved å bruke flere utvidelsespunkter etter behov.

Hvordan fungerer OpenTelemetry?

Installer OpenTelemetry-klienten inne i hver tjeneste i distribusjonen din. Klienten er SDK; SDK-en har på sin side et API. Applikasjonsrammeverket og bibliotekene dine bruker dette instrumenterings-APIet til å beskrive arbeidet de gjør. SDK-en eksporterer deretter de innsamlede observasjonene til en datapipelining-tjeneste kalt Collector.

OpenTelemetry har sin egen dataprotokoll, OTLP, men innsamleren kan oversette OTLP til ulike formater, bl.a. Zipkin, Jaegerog Prometheus. Spesielt gir ikke OpenTelemetry sin egen backend eller analyseverktøy; Dette er fordi det er en standardiseringsinnsats i hjertet av OpenTelemetry. Målet er å komme opp med et universelt språk for å beskrive driften av datamaskiner i et skymiljø. Målet er ikke å standardisere hvordan vi analyserer disse dataene. I stedet håper vi at OpenTelemetry vil bidra til å skyve verden av observerbarhet fremover ved å la nye analyseverktøy komme raskt i gang uten å gjenoppbygge hele dette økosystemet av telemetriprogramvare.

Når du sender mye data på tvers av systemet, er det mye å vurdere. Heldigvis har OpenTelemetry tenkt på alle tingene og har løsninger på hvert av disse spørsmålene. Først og fremst er OpenTelemetry fleksibel, og den håndterer flere kontekstformidlingsformater. Dette betyr at selv om det finnes en standard, er det fortsatt mulighet for valg innenfor den standarden. Så hvis du bruker noe som w3c-sporingskontekstformatet eller b3-utbredelse, er dette forskjellige standarder innenfor standarden som lar tjenestene dine koble sammen punktene.

Konklusjon

OpenTelemetry samler opp en rekke observasjoner, distribuerte sporingsmålinger og systemressurser er de viktigste. I stedet for å behandle disse som separate signaler, fletter OpenTelemetry dem sammen og gir indeksering og kontekst som lar deg samle og kryssindeksere alle disse signalene på baksiden.

I tillegg til datainnsamlingen tilbyr OpenTelemetry en databehandlings- og pipelining-fasilitet som lar deg endre dataformater, manipulere dataene dine og alle verktøyene du trenger for å bygge en robust telemetripipeline i et moderne system.

Så det var alt om OpenTelemetry, fortsett og prøv dette verktøyet.