Introducere în OpenTelemetry pentru începători

Să discutăm despre OpenTelemetry – o modalitate standard neutră de furnizor de a colecta date de telemetrie.

Oferirea unei observabilități mai bune într-o aplicație este o mare provocare pentru orice dezvoltator, deoarece trebuie să capteze datele de telemetrie ale aplicației. Dicționarul Cambridge definește telemetria ca știința sau procesul de colectare a informațiilor despre obiecte aflate la distanță și de trimitere electronică a informațiilor undeva.

De exemplu, un singur clic sau sesiune a unui utilizator pe un site web generează o mulțime de solicitări și de urmărire care circulă între rețele, microservicii, baze de date etc.

OpenTelemetry este o platformă de observabilitate, un set de componente bine factorizate care pot fi folosite împreună sau la carte. În plus, dezvoltatorii de cadre și biblioteci pe care le folosim astăzi cu toții au acum o modalitate standard de a integra datele de telemetrie în acele biblioteci și cadre, oferind utilizatorilor finali multe perspective imediate despre ceea ce fac acele cadre sub capotă. .

Pentru a înțelege OpenTelemetry, mai întâi trebuie să știți ce este urmărirea distribuită.

Ce este urmărirea distribuită?

Pe măsură ce aplicațiile noastre devin mai complexe și mai multe servicii sunt implicate în deservirea traficului utilizatorilor și finalizarea tranzacțiilor, devine din ce în ce mai esențial să înțelegem cum solicitările traversează serviciile noastre și cum contribuie fiecare serviciu la latența generală. Aceasta este ceea ce face urmărirea distribuită. Captează latența solicitărilor utilizatorilor și cât durează fiecare microserviciu din cale pentru a returna un răspuns.

Când vine o solicitare de utilizator, dorim să creăm o urmă, adică totalitatea informațiilor care descrie modul în care sistemul nostru răspunde la o solicitare a utilizatorului. Urmele sunt compuse din intervale, iar fiecare interval semnifică o pereche specifică de solicitare și răspuns implicată în deservirea unei cereri de utilizator. Intervalul părinte descrie latența așa cum este observată de utilizatorul final. Și intervalul de copii este folosit pentru a înțelege cum a fost apelat un anumit serviciu din sistemul distribuit și a răspuns cu informațiile despre latența lor.

Ce este OpenTelemetry?

OpenTelemetry este un proiect open-source găzduit de CNCF care oferă o modalitate standard de a genera date de telemetrie. A fost creat prin fuziunea dintre OpenTracingun standard pentru generarea datelor de urmărire și OpenCensuscare a fost un standard pentru generarea datelor de valori.

  Cele 7 tipuri de semnătură sonoră pentru căști și cum să vă alegeți preferatul

OpenTelemetry oferă un singur set de API-uri, agenți, servicii de colectare și biblioteci pentru a captura urme și valori distribuite din aplicația dvs. OpenTelemetry standardizează modul în care colectăm datele de telemetrie și le trimitem la un back-end la alegere. Acest lucru vă oferă o cale de instrumentare neutră pentru furnizor și vă oferă flexibilitatea de a vă schimba back-end-ul fără a instrumenta codul din nou.

Așadar, vă puteți instrumenta aplicațiile folosind un agent independent de furnizor, trimițând în același timp valorile și urmele către un furnizor SaaS precum Datadog. Apoi, dacă doriți să schimbați furnizorul (de exemplu, de la Datadog la Dynatrace), o puteți face fără a modifica codul aplicației.

Proiectul OpenTelemetry își propune să ofere un singur set de biblioteci și agenți API-uri pentru a captura valori și urme distribuite din aplicațiile dvs. Acest lucru se aplică în multe limbi și platforme. Proiectul OpenTelemetry include, de asemenea, un serviciu de colectare opțional și are un depozit dedicat pentru specificații. Pentru a fi clar, OpenTelemetry nu este Jaeger sau Prometheus, care sunt back-end observabile. Dar ajută la exportul de date către back-end-uri open-source și comerciale.

Mai jos sunt caracteristicile oferite de OpenTelemetry:

  • Standardizare privind colectarea datelor de telemetrie pe care organizațiile le pot urmări, ceea ce face ușoară mutarea între furnizori
  • O convenție semantică cu standard deschis, independentă de furnizor, pentru procesul de colectare a datelor
  • Colector care poate fi implementat ca agent sau gateway-uri sau în multe moduri diferite
  • Suportă mai multe formate de propagare a contextului pentru migrare
  • O soluție end to end pentru a genera, emite, colecta, procesa și exporta date de telemetrie
  • Facilitate de a trimite date către diverse destinații în paralel, cu control complet asupra acestora

Componente OpenTelemetry

Mai jos sunt componentele de bază ale OpenTelemetry:

  • Proto: Această componentă este utilizată pentru a defini pentru colectori, biblioteci de instrumente etc., care sunt tipuri de interfețe independente de limbaj pentru OpenTelemetry.
  • Colector: Colectorii sunt obișnuiți să primească, să proceseze și să exporte date de telemetrie. Această implementare a colectorilor trebuie să fie independentă de furnizor. În mod implicit, toate datele de telemetrie sunt exportate de bibliotecile de instrumente din această locație.
  • Specificație: această componentă descrie cerințele și așteptările implementării în diferite limbi, constând din API-uri, SDK-uri și date. API generează datele de telemetrie, capabilitățile de procesare și export pentru implementarea API-urilor furnizate de SDK-uri. Datele au convențiile semantice pentru a sprijini toate tipurile de furnizori fără a schimba niciun cod.
  • Biblioteci de instrumente: acestea sunt disponibile în mai multe limbi ca parte a proiectului OpenTelemetry. Aceste biblioteci sunt folosite pentru a oferi observabilitate altor biblioteci pentru a realiza toate aplicațiile observate prin apeluri la OpenTelemetry API.
  O introducere în programarea asincronă în Rust

Arhitectura OpenTelemetry

Imagine de la New Relic

La nivel înalt, OpenTelemetry constă din trei piese principale:

  • Un set de API-uri pentru instrumente de aplicații, biblioteci și cadre.
  • SDK-ul implementează API-uri.
  • Un colector opțional poate ingera, agrega și exporta date de telemetrie oriunde aveți nevoie.

Scopul API-ului este de a permite crearea de instrumente pentru biblioteci și codul aplicației. API-ul are patru secțiuni principale: urmărire, contoare, un context partajat și convenții semantice.

  • Tracer API acceptă crearea, adnotarea și completarea intervalelor.
  • API-ul contorului constă din mai multe instrumente metrice. Exemple de aceste instrumente sunt observatorii, înregistratoarele de valori, contoarele.
  • Puteți urmări și executa contextul span activând API-ul context și propagați acel context atât în ​​interiorul, cât și în exteriorul sistemului dvs.
  • Toate liniile directoare și regulile pentru denumirea în principal, cum ar fi denumirea intervalelor, atributelor, etichetelor și instrumentelor metrice, sunt prezente în convențiile semantice. Aceste convenții sunt implementate pentru a asigura coerența între implementările diferitelor limbi și pentru instrumente externe.

Într-un context partajat, implementarea contextului se află între trasor și contor și permite ca toate înregistrările de metrice non-observator să aibă loc în contextul unui interval de execuție. O funcție care permite SDK-urilor să capteze intervale exemplare pentru valorile valorilor. Puteți personaliza contextul cu propagatoare, care permit propagarea contextului span în și în afara sistemului, care permite urmărirea distribuită adevărată.

Colectorul este o parte esențială a arhitecturii OpenTelemetry. Este un serviciu independent care poate primi, procesa și exporta date de telemetrie din diverse surse, inclusiv OpenCensus, Zipkin, Jaeger și protocolul OpenTelemetry. Folosind colectori, puteți exporta intervale și valori către mai mulți furnizori și sisteme de telemetrie open-source.

  Cum să găsiți lucruri ascunse pe iPhone

Arhitectura OpenTelemetry oferă o soluție completă de telemetrie imediată. De asemenea, puteți personaliza prin utilizarea mai multor puncte de extensie, în funcție de nevoi.

Cum funcționează OpenTelemetry?

În interiorul fiecărui serviciu din implementarea dvs., instalați clientul OpenTelemetry. Clientul este SDK-ul; SDK-ul, la rândul său, are un API. Cadrele și bibliotecile dvs. de aplicații folosesc acest API de instrumentare pentru a descrie munca pe care o desfășoară. SDK-ul exportă apoi observațiile colectate către un serviciu de pipeline de date numit Collector.

OpenTelemetry are propriul protocol de date, OTLP, dar colectorul poate traduce OTLP în diferite formate, inclusiv Zipkin, Jaegerși Prometeu. În special, OpenTelemetry nu oferă propriul back-end sau instrument de analiză; acest lucru se datorează faptului că este un efort de standardizare în centrul OpenTelemetry. Scopul este de a veni cu un limbaj universal pentru a descrie operațiunile computerelor într-un mediu cloud. Scopul nu este de a standardiza modul în care analizăm aceste date. În schimb, sperăm că OpenTelemetry va contribui la promovarea lumii observabilității, permițând noilor instrumente de analiză să înceapă rapid, fără a reconstrui întregul ecosistem de software de telemetrie.

Când trimiteți o mulțime de date în sistem, sunt multe de luat în considerare. Din fericire, OpenTelemetry s-a gândit la toate lucrurile și are soluții la fiecare dintre aceste întrebări. În primul rând, OpenTelemetry este flexibil și se ocupă de mai multe formate de propagare a contextului. Aceasta înseamnă că, deși există un standard, există totuși opțiunea de alegere în cadrul acelui standard. Deci, dacă utilizați ceva precum formatul de context de urmărire w3c sau propagarea b3, acestea sunt standarde diferite în cadrul standardului care permit serviciilor dvs. să conecteze punctele.

Concluzie

OpenTelemetry colectează o varietate de observații, valorile de urmărire distribuite și resursele de sistem fiind cele mai importante. În loc să le trateze ca semnale separate, OpenTelemetry le împletește și oferă indexare și context care vă permite să agregați și să indexați încrucișați toate aceste semnale pe partea din spate.

În plus față de colectarea datelor, OpenTelemetry oferă o facilitate de procesare și pipeline de date care vă permite să schimbați formatele de date, să vă manipulați datele și toate instrumentele de care aveți nevoie pentru a construi o conductă robustă de telemetrie într-un sistem modern.

Deci, asta a fost totul despre OpenTelemetry, mergeți mai departe și încercați acest instrument.