paint-brush
Chii chinonzi OpenTelemetry uye Sei Inogona Kuvandudza Yako Kumashure Hunhu? by@ymatigoosa
39,155 kuverenga
39,155 kuverenga

Chii chinonzi OpenTelemetry uye Sei Inogona Kuvandudza Yako Kumashure Hunhu?

by Dmitrii Pakhomov8m2024/06/19
Read on Terminal Reader
Read this story w/o Javascript

Kurebesa; Kuverenga

OpenTelemetry chishandiso chine simba chekutarisa uye kugadzirisa zvemazuva ano backend masisitimu. Inobatanidza kutsvaga, kutema matanda, uye metrics kuunganidza, ichipa maonero akabatana ekuita kwekushandisa uye kuvimbika. Gwaro iri rinoongorora nhoroondo yaro, pfungwa dzakakosha, uye kuita, zvichiita kuti ive yakakosha pakugadzirisa mamicroservices uye masisitimu akagoverwa.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Chii chinonzi OpenTelemetry uye Sei Inogona Kuvandudza Yako Kumashure Hunhu?
Dmitrii Pakhomov HackerNoon profile picture
0-item

Kare, pataitaura nezve backend, taiwanzoreva kune imwe hombe application ine imwechete, hombe dhatabhesi, uye kutema miti kwaikwana kuongororwa. Ikozvino, nekuda kwehunyanzvi hwekuita seKubernetes , microservices dzave chiyero. Zvikumbiro zvawanda uye zvakagoverwa, uye matanda echinyakare haachakwane pakugadzirisa uye kuongorora matambudziko mumashandisirwo edu.

Mhinduro yakanakisa yekuronga yekutarisa ndeye OpenTelemetry - yemazuva ano turusititi inogona kushandiswa kugadzirisa uye kuongororwa kwekuita kwemasisitimu akagoverwa.


Ichi chinyorwa chakagadzirirwa vadzidzisi veIT vari kutsvaga kuwedzera ruzivo rwavo mu backend optimization. Pazasi, isu tinotsanangura kuti OpenTelemetry chii, pfungwa dzayo dzakakosha, uye matambudziko anobatsira kugadzirisa. Kana iwe uchifarira kuti OpenTelemetry inogona sei kushandura maitiro ako ekutarisa uye kugadzirisa backend masisitimu, kuwedzera kuvimbika kwavo uye kushanda nesimba - verenga enderera.


Nhoroondo Pfupi yeOpenTelemetry

Makambani makuru etekinoroji akatanga kutarisana nedambudziko rekugovaniswa kwematanda uye kutsvaga mukupera kwema2000s. Muna 2010, Google yakaburitsa bepa, Dapper, Yakakura-Yakaparadzirwa Masisitimu Ekutsvaga Infrastructure , iyo yakateya hwaro hwe Twitter's tracking tool, Zipkin, yakaburitswa muna 2012.


Muna 2014, Kubernetes yakabuda, ichirerutsa zvakanyanya kuvandudza kwema microservices uye mamwe masystem-akaparadzirwa makore. Izvi zvakakonzera kuti makambani mazhinji asangane nenyaya nekugovaniswa kwematanda uye kutsvaga mumamicroservices. Kumisa kuteera kwakagoverwa, chiyero cheOpenTracing, chakagamuchirwa neCNCF, uye chirongwa cheGoogle cheOpenCensus chakagadzirwa.


Muna 2019, mapurojekiti eOpenTracing uye OpenCensus akazivisa kubatanidzwa pasi pezita reOpenTelemetry. Iyi puratifomu inosanganisa maitiro akanakisa akaunganidzwa mumakore mazhinji, achibvumira kusanganisa kusanganisa kwekutevera, kutema miti, uye metrics mune chero system, zvisinei nekuoma kwavo.


Nhasi, OpenTelemetry haisi chirongwa chete; ndiyo chiyero cheindasitiri chekuunganidza uye kutumira telemetry data. Inogadzirwa uye inotsigirwa nenharaunda yenyanzvi uye makambani anotungamira pamusika seGoogle neMicrosoft. Iyo purojekiti inoramba ichishanduka, ichiwana hunyanzvi hutsva hwekurerutsa kusanganisa uye kushandisa maitiro.


Chii Mukati?

OpenTelemetry ndeye yakazara seti yemaitiro uye maturusi anotsanangura kuti zvii zviratidzo zvinogona kuburitswa neapplication kuti idyidzane nenyika yekunze, uye kuti masaini aya anogona kuunganidzwa uye kuoneswa kuti atarise mamiriro ekushandisa uye system yese. Iwo matatu makuru marudzi emasaini ari kuronda, kutema matanda , uye metrics kuunganidza .


**Ngatitarisei zvakanyanya chikamu chimwe nechimwe:\

Contexts

OpenTelemetry inosvitsa pfungwa yemamiriro ekushanda. Chirevo chechirevo chinonyanyo sanganisira zvinhu zvakaita `trace_id` (chiziviso chekushanda kwazvino) uye `span_id` (chiziviso chechikumbiro chidiki, nekuyedzwa kwega kwega kwechikumbiro chidiki chine `span_id` yakasiyana).


Pamusoro pezvo, mamiriro ezvinhu anogona kuve neruzivo rwakamira, senge zita renode uko kushandiswa kunoiswa kana zita renzvimbo (prod/qa). Aya minda, anozivikanwa sezviwanikwa muOpenTelemetry terminology, akasungirirwa kune yega yega log, metric, kana kuteedzera kuti iite nyore kutsvaga. Mamiriro ezvinhu anogonawo kusanganisira data rine simba, sechiratidzo chemagumo ekupedzisira ( `http_path: "GET /user/:id/info"` ), inogona kusungirirwa kumapoka ematanda, metrics, kana traces.


OpenTelemetry mamiriro anogona kupfuudzwa pakati pezvishandiso zvakasiyana uchishandisa mamiriro ekuparadzira mapuroteni. Aya maprotocol ane seti yemusoro inowedzerwa kune yega yega HTTP kana gRPC chikumbiro kana misoro yemameseji emitsara. Izvi zvinobvumira zvikumbiro zvepasi kuti zvigadzirise mamiriro ekushanda kubva kune iyi misoro.


Heino mimwe mienzaniso yekuparadzira mamiriro ezvinhu:

  1. B3-Propagation Iyi seti yemisoro ( x-b3-* ) yakatanga kugadzirirwa Zipkin tracing system. Yakagadziridzwa kuita OpenTracing uye yakashandiswa nemidziyo yakawanda nemaraibhurari. B3-Propagation inotakura trace_id / span_id uye mureza unoratidza kana sampling ichidikanwa.


  2. W3C Trace Context Yakagadzirwa neboka rinoshanda reW3C, chiyero ichi chinobatanidza nzira dzakasiyana dzekuparadzira mamiriro kuita chiyero chimwe uye ndiyo yakasarudzika muOpenTelemetry. Muenzaniso wakanaka wekushandisa aya mazinga ndeyekutevera kuitiswa kwechikumbiro ichipfuura nemamicroservices anoitwa neakasiyana matekinoroji pasina kukanganisa kutarisa uye kugadzirisa.

Tracing

Kutsvaga ndiyo maitiro ekurekodha uye wozoona nguva yenzira yekukumbira kuburikidza nemamicroservices akawanda.


[mufananidzo kunobva: https://opentelemetry.io/docs/demo/screenshots/]


Mukuona, bhaa yega yega inonzi "span" uye ine yakasarudzika "span_id" . Root span inodaidzwa se "trace" uye ine "trace_id" , iyo inoshanda sechiratidzo chechikumbiro chese.


Iyi mhando yekuona inokubvumira kuti:

  • Ongorora iyo nguva yekuitwa kwezvikumbiro kune akasiyana masisitimu uye dhatabhesi kuti uone mabhodhoro anoda optimization.
  • Ziva zvinoenderana ne cyclic pakati pemasevhisi.
  • Tsvaga zvikumbiro zvakapetwa. Uchishandisa data rekutsvaga, iwe unogona zvakare kuvaka imwe analytics, senge kugadzira microservices mepu kana kugovera nguva mumasisitimu akasiyana panguva yekushanda. Kunyangwe ukasashandisa data rekutsvaga kuona nguva, OpenTelemetry ichiri kugadzira trace_id uye span_id yekushandisa mune mamwe masaini.


Logs

Pasinei nekureruka kwaro kuri pachena, kutema miti kunoramba kuri chimwe chezvishandiso zvine simba zvekuongorora matambudziko. OpenTelemetry inosimudzira matanda echinyakare nekuwedzera ruzivo rwemamiriro ezvinhu. Kunyanya, kana mucherechedzo uripo, `trace_id` uye `span_id` mavara anongowedzerwa kulog, achiabatanidza neawa yakatarwa. Zvakare, hunhu hwemalog hunogona kusanganisira static ruzivo kubva kuOpenTelemetry mamiriro, senge node identifier, pamwe neruzivo rwesimba, seyazvino HTTP endpoint identifier (`http_path: "GET /user/:id"`).


Uchishandisa iyo `trace_id`, unogona kuwana matanda kubva kune ese mamicroservices ane chekuita nechikumbiro chazvino, nepo `span_id` ichikubvumidza kusiyanisa pakati pezvikumbiro diki. Semuyenzaniso, kana iri nyaya yekuedzazve, matanda kubva mukuedza kwakasiyana achave akasiyana `span_id`s. Kushandisa zviziviso izvi kunogonesa kuongororwa nekukurumidza kwemaitiro ehurongwa hwese munguva chaiyo, kukurumidza kuongororwa dambudziko uye kuwedzera kugadzikana uye kuvimbika.


Metrics

Metrics kuunganidzwa inopa huwandu hwe data pakuita kwesystem, senge latency, mhosho, mashandisiro ezviwanikwa, nezvimwe. Chaiyo-nguva yekutarisa metrics inobvumidza iwe kuti upindure nekukurumidza kuchinja kwekuita, kudzivirira kutadza uye kupera kwezviwanikwa, uye kuve nechokwadi chekuwanikwa kwepamusoro uye kuvimbika kwechishandiso chevashandisi.


Kubatanidzwa ne metric kuchengetedza uye kuona masisitimu sePrometheus neGrafana kunoita kuti zvive nyore kuona iyi data, zvakanyanya kurerutsa kutarisa.


[mufananidzo kunobva: https://grafana.com/blog/2021/06/22/grafana-dashboard-showcase-visualizations-for-prometheus-home-energy-usage-github-and-more/]


Metric Collectors

OpenTelemetry metric vateresi inoenderana nePrometheus uye OpenMetrics zviyero, zvichigonesa shanduko iri nyore kune OpenTelemetry mhinduro pasina shanduko yakakosha. Iyo OpenTelemetry SDK inobvumira trace_id mienzaniso kuendeswa kunze kwenyika pamwe chete nemametrics, zvichiita kuti zvikwanise kubatanidza metrics nemienzaniso yelogi uye zviteshi.


Signal Correlation

Pamwe chete, matanda, metrics, uye kutsvaga zvinogadzira maonero akazara emamiriro ehurongwa:

  • Marogi anopa ruzivo nezve zviitiko zvehurongwa, achibvumira kukurumidza kuzivikanwa uye kugadzirisa zvikanganiso.
  • Metrics anoratidza hunhu uye huwandu hwekuita zviratidzo zvehurongwa, senge nguva dzekupindura kana kukanganisa mazinga.
  • Kutsvaga kunozadzisa maonero aya nekuratidza nzira yekukumbira kuburikidza neakasiyana masisitimu zvikamu, zvichibatsira kunzwisisa hukama hwavo. Iko kuwirirana kwakajeka pakati pematanda, kuteedzera, uye metrics chinhu chakasiyana cheOpenTelemetry. Semuyenzaniso, Grafana inobvumira vashandisi kuti vaone inoenderana inoteedzera uye yekukumbira metrics kana vachiona logi, ichiwedzera zvakanyanya kushandiswa kwepuratifomu uye kushanda kwayo.



[mufananidzo kunobva: https://grafana.com/blog/2020/03/31/how-to-successfully-correlate-metrics-logs-and-traces-in-grafana/]


Pamusoro pezvinhu zvitatu zvakakosha, OpenTelemetry inosanganisira pfungwa dzeSampling, Baggage, uye mashandiro emamiriro ekugadzirisa.


Sampling

Mune yakakwirira-mutoro masisitimu, huwandu hwematanda uye zviteshi zvinova zvakakura, zvinoda zvakakura zviwanikwa zvezvivakwa uye kuchengetedza data. Kugadzirisa nyaya iyi, OpenTelemetry zviyero zvinosanganisira chiratidzo sampling - kugona kutumira kunze chete chikamu chemateki uye matanda. Semuenzaniso, unogona kutumira masaini akadzama kubva muzana yezvikumbiro, zvikumbiro zvenguva refu, kana zvikumbiro zvekukanganisa. Iyi nzira inobvumira sampling yakakwana yekuvaka manhamba uchichengetedza zvakakosha zviwanikwa.


Nekudaro, kana sisitimu yega yega ikasarudza yakazvimiririra kuti ndechipi chikumbiro chekutarisa zvakadzama, tinopedzisira tave nekupatsanurwa maonero echikumbiro chega chega. Mamwe masisitimu anogona kutumira data rakadzama nepo mamwe achingoendesa kunze kana kusaendesa kunze zvachose.


Kugadzirisa dambudziko iri, mashandiro eOpenTelemetry ekushambadza mamiriro ezvinhu anofambisa mureza wesampling pamwe ne `trace_id`/`span_id`. Izvi zvinova nechokwadi chekuti kana sevhisi yekutanga inogamuchira chikumbiro chemushandisi ikafunga kuti chikumbiro chinofanirwa kutariswa zvakadzama, mamwe masisitimu anozotevera. Zvikasadaro, masisitimu ese anofanirwa kuita zvishoma kana kusatumira masaini kuchengetedza zviwanikwa. Iyi nzira inodaidzwa kuti "Musoro Sampling" - sarudzo yakaitwa pakutanga kwekukumbira kugadzirisa, zvingave zvisina tsarukano kana zvichibva pane mamwe maitiro ekuisa.


Kunze kwezvo, OpenTelemetry inotsigira "Tail Sampling," uko maapplication ese anogara achiendesa masaini ese zvakadzama, asi yepakati buffer iripo. Mushure mekuunganidza data rese, iyi buffer inosarudza kuchengetedza iyo yakazara data kana kungochengeta chikamu chikamu. Iyi nzira inobvumira imwe inomiririra sampuli yechikamu chega chega chekukumbira (yakabudirira / kureba / kukanganisa) asi inoda kumwe kumisikidzwa kwezvivakwa.


Baggage

Iyo Baggage michina inobvumira kupokana kiyi-value pairi kuti ifambiswe pamwe chete trace_id / span_id , ichipfuura otomatiki pakati peese mamicroservices panguva yekukumbira. Izvi zvinobatsira kuendesa rumwe ruzivo rwunodiwa munzira yese yekukumbira-senge ruzivo rwemushandisi kana runtime nharaunda marongero.

Muenzaniso wemusoro wekutumira mikwende zvinoenderana nechiyero cheW3C: tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE,userId=1c30032v5

Heino mimwe mienzaniso yekushandiswa kweBaggage:

  • Kupfuura Bhizinesi Context Ruzivo senge userId , productId , kana deviceId inogona kupfuudzwa kuburikidza nese microservices. Zvishandiso zvinokwanisa kurodha ruzivo urwu, zvichibvumira kutsvaga kwelogi nemushandisi wechikumbiro chepakutanga.

  • Yakanyanya Configuration Parameters Zvirongwa zveSDKs kana zvivakwa.

  • Routing Mireza Mireza inobatsira kurodha mabharanzi kuita sarudzo dzekufambisa. Panguva yekuyedzwa, zvimwe zvikumbiro zvingangoda kuendeswa kunoseka backends. Sezvo mukwende uchifambiswa otomatiki kuburikidza nesevhisi yese, hapana chikonzero chekugadzira mamwe maprotocol-ingoisa mutemo pane inotakura mitoro.


Ziva kuti kunyangwe kuita kweBaggage kuri kushoma, kushandisa zvakanyanya kunogona kuwedzera zvakanyanya network uye sevhisi mutoro. Nekuchenjera sarudza kuti ndeipi data yaunoda chaizvo kupfuura nepaBaggage kudzivirira nyaya dzekuita.

Infrastructure Implementation

Kuita OpenTelemetry padanho rezvivakwa kunosanganisira kubatanidza OpenTelemetry backends muchimiro chekushandisa uye kugadzirisa zvivakwa zvekuunganidza data.


Iyo nzira ine matanho mana:


  1. Kubatanidzwa Kwechikumbiro Muchikamu chekutanga, OpenTelemetry SDKs dzakabatanidzwa zvakananga mumashandisirwo ekuunganidza metrics, matanda, uye zviteshi, kuve nechokwadi chekuenderera kuyerera kwedata nezve mashandiro echikamu chega chega.


  2. Kugadzirisa Vatengesi Vekunze Yakaunganidzwa data inofambiswa kubva kumashandisirwo kuburikidza nevanotumira kunze kune ekunze masisitimu kuti iwedzere kugadziriswa, senge kutema matanda, kutarisa, kutsvaga, kana analytics masisitimu, zvichienderana nezvaunoda.


  3. Aggregation uye Kuchengeta Iyi nhanho inogona kusanganisira yakajairika data, kuipfumisa nerumwe ruzivo, uye kubatanidza data kubva kwakasiyana masosi kugadzira maonero akabatana emamiriro ehurongwa.


  4. Kutariswa Kwedata Pakupedzisira, data rakagadziridzwa rinounzwa semadhibhodhi mumasisitimu akaita seGrafana (yemetrics uye trace) kana Kibana (yematanda). Izvi zvinobvumira zvikwata kukurumidza kuongorora hutano hwehurongwa, kuona nyaya uye mafambiro, uye kumisikidza zviziviso zvichibva pamasaini anogadzirwa.


Kuitwa Kwekushandisa

Kuti ubatanidze nechishandiso, unofanirwa kubatanidza iyo yakakodzera OpenTelemetry SDK yemutauro wechirongwa uri kushandiswa kana kushandisa maraibhurari nemafuremu anotsigira zvakananga OpenTelemetry. OpenTelemetry inowanzo shandisa nzvimbo dzinoshandiswa zvakanyanya kubva kumaraibhurari anozivikanwa, ichibvumira kudonhedza-in kutsiva. Semuenzaniso, raibhurari yeMicrometer inowanzoshandiswa kuunganidza metrics muJava ecosystem. Iyo OpenTelemetry SDK inopa mashandisirwo ayo eMicrometer interfaces, ichigonesa metric kutumira kunze kwekuchinja iyo huru yekushandisa kodhi. Zvakare, OpenTelemetry inopa mashandisirwo ekare OpenTracing uye OpenCensus interfaces, kufambisa kutama kwakanaka kuenda kuOpenTelemetry.

Mhedziso

MuIT masisitimu, OpenTelemetry inogona kuve kiyi kune ramangwana reakavimbika uye anoshanda backends. Ichi chishandiso chinorerutsa kugadzirisa uye kutarisa uye zvakare chinovhura mikana yekunzwisisa kwakadzama kwekuita kweapp uye optimization pane imwe nhanho. Joinha nharaunda yeOpenTelemetry kuti ubatsire kuumba ramangwana uko kusimudzira kumashure kuri nyore uye kunoshanda zvakanyanya!