paint-brush
Ki sa ki OpenTelemetry ak ki jan li ka amelyore kalite backend ou a? pa@ymatigoosa
39,154 lekti
39,154 lekti

Ki sa ki OpenTelemetry ak ki jan li ka amelyore kalite backend ou a?

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

Twò lontan; Pou li

OpenTelemetry se yon zouti pwisan pou kontwole ak debogaj sistèm backend modèn. Li entegre trase, anrejistreman, ak koleksyon mezi, bay yon gade inifye sou pèfòmans aplikasyon ak fyab. Gid sa a eksplore istwa li yo, konsèp kle yo, ak aplikasyon, sa ki fè li esansyèl pou optimize mikwosèvis ak sistèm distribiye yo.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Ki sa ki OpenTelemetry ak ki jan li ka amelyore kalite backend ou a?
Dmitrii Pakhomov HackerNoon profile picture
0-item

Nan tan lontan an, lè nou te pale sou backend la, anjeneral nou te refere a yon aplikasyon gwo ak yon sèl, gwo baz done, ak antre te ase pou siveyans. Kounye a, gras ak teknoloji tankou Kubernetes , mikwosèvis yo te vin estanda a. Aplikasyon yo gen plis anpil ak distribye, ak antre tradisyonèl yo pa ase ankò pou debogaj ak dyagnostik pwoblèm nan aplikasyon nou yo.

Yon solisyon ekselan pou òganize siveyans se OpenTelemetry - yon zouti modèn ki ka itilize pou debogaj ak analiz pèfòmans nan sistèm distribiye.


Atik sa a fèt pou pwofesyonèl IT k ap chèche elaji konesans yo nan optimize backend. Anba a, nou pral detaye kisa OpenTelemetry ye, konsèp kle li yo, ak pwoblèm li ede rezoud. Si w enterese nan ki jan OpenTelemetry ka chanje apwòch ou nan siveyans ak debogaj sistèm backend, amelyore fyab yo ak efikasite - li sou.


Yon Brèf Istwa OpenTelemetry

Gwo konpayi teknoloji yo te fè fas a defi pou distribiye anrejistreman ak trase nan fen ane 2000 yo. An 2010, Google te pibliye yon papye, Dapper, yon gwo-echèl distribiye sistèm trase enfrastrikti , ki te mete baz pou zouti trase Twitter a, Zipkin, ki te pibliye an 2012.


Nan 2014, Kubernetes parèt, siyifikativman senplifye devlopman nan mikwosèvis ak lòt sistèm nwaj distribye. Sa a te mennen nan anpil konpayi rankontre pwoblèm ak anrejistreman distribiye ak trase nan mikwosèvis. Pou estandadize trase distribiye, yo te kreye estanda OpenTracing, ki te adopte pa CNCF, ak pwojè OpenCensus Google la.


Nan 2019, pwojè OpenTracing ak OpenCensus te anonse yon fizyon sou non OpenTelemetry. Platfòm sa a konbine pi bon pratik akimile pandan plizyè ane, sa ki pèmèt entegrasyon trase, anrejistreman, ak mezi nan nenpòt sistèm, kèlkeswa konpleksite yo.


Jodi a, OpenTelemetry se pa sèlman yon pwojè; li se yon estanda endistri pou kolekte ak transmèt done telemetrik. Li devlope ak sipòte pa yon kominote espesyalis ak konpayi dirijan sou mache tankou Google ak Microsoft. Pwojè a ap kontinye evolye, jwenn nouvo kapasite pou senplifye pwosesis entegrasyon ak itilizasyon.


Ki sa ki andedan?

OpenTelemetry se yon seri pratik ak zouti konplè ki defini ki siyal yon aplikasyon ka jenere pou kominike avèk mond deyò a, ak ki jan siyal sa yo ka kolekte epi vizyalize pou kontwole eta aplikasyon yo ak sistèm nan an jeneral. Twa kalite prensipal siyal yo se trase, anrejistreman , ak koleksyon mezi .


**Ann gade pi pre chak eleman: \

Kontèks

OpenTelemetry prezante konsèp kontèks operasyon yo. Yon kontèks prensipalman gen ladan atribi tankou `trace_id` (idantifyan pou operasyon aktyèl la) ak `span_id` (idantifyan pou yon sub-demann, ak chak re-eser yon sou-demann ki gen yon inik `span_id` ).


Anplis de sa, yon kontèks ka genyen enfòmasyon estatik, tankou non ne kote aplikasyon an deplwaye oswa non anviwònman an (prod/qa). Jaden sa yo, ke yo rekonèt kòm resous nan tèminoloji OpenTelemetry, yo tache ak chak log, metrik, oswa tras pou fè rechèch pi fasil. Kontèks yo ka gen ladan tou done dinamik, tankou idantifyan pwen final aktyèl la ( `http_path: "GET /user/:id/info"` ), ki ka seleksyone tache ak gwoup mòso bwa, metrik, oswa tras.


Kontèks OpenTelemetry ka pase ant diferan aplikasyon lè l sèvi avèk pwotokòl pwopagasyon kontèks. Pwotokòl sa yo konpoze de seri header ke yo ajoute nan chak demann HTTP oswa gRPC oswa tèt yo nan mesaj pou ke moun kap kriye. Sa a pèmèt aplikasyon en pou rekonstwi kontèks operasyon an nan tèt sa yo.


Men kèk egzanp pwopagasyon kontèks:

  1. B3-Pwopagasyon Sa a se yon seri antèt ( x-b3-* ) ki te devlope orijinal pou sistèm trase Zipkin la. Li te adapte nan OpenTracing epi itilize pa anpil zouti ak bibliyotèk. B3-Propagation pote trace_id / span_id ak yon drapo ki endike si echantiyon nesesè.


  2. W3C Trace Context Devlope pa gwoup travay W3C a, estanda sa a inifye divès apwòch pwopagasyon kontèks nan yon sèl estanda epi li se default nan OpenTelemetry. Yon bon egzanp aplikasyon estanda sa yo se swiv ekzekisyon yon demann pase nan mikwosèvis aplike ak diferan teknoloji san yo pa konpwomèt siveyans ak presizyon debogaj.

Trase

Trase se pwosesis pou anrejistreman epi vizyalize delè chemen yon demann atravè plizyè mikwosèvis.


[Sous imaj: https://opentelemetry.io/docs/demo/screenshots/]


Nan vizyalizasyon an, chak ba yo rele yon "span" epi li gen yon "span_id" inik. Yo refere span rasin lan kòm yon "trace" epi li gen yon "trace_id" , ki sèvi kòm idantifyan pou tout demann lan.


Kalite vizyalizasyon sa a pèmèt ou:

  • Analize tan egzekisyon demann yo atravè diferan sistèm ak baz done pou idantifye blokaj ki bezwen optimize.
  • Detekte depandans siklik ant sèvis yo.
  • Jwenn demann kopi. Sèvi ak done trase, ou kapab tou konstwi analiz adisyonèl, tankou kreye yon kat mikwosèvis oswa distribye tan atravè diferan sistèm pandan pwosesis operasyon. Menm si ou pa sèvi ak tras done pou vizyalize delè, OpenTelemetry toujou jenere trace_id ak span_id pou itilize nan lòt siyal.


Jounal

Malgre senplisite aparan li, enregistrement rete youn nan zouti ki pi pwisan pou dyagnostik pwoblèm. OpenTelemetry amelyore enregistrement tradisyonèl lè li ajoute enfòmasyon kontèks. Espesyalman, si gen yon tras aktif, atribi `trace_id` ak `span_id` yo ajoute otomatikman nan mòso bwa yo, lyen yo ak delè tras la. Anplis, atribi boutèy demi lit yo ka gen ladan enfòmasyon estatik ki soti nan kontèks OpenTelemetry, tankou idantifyan node a, osi byen ke enfòmasyon dinamik, tankou idantifyan aktyèl HTTP pwen final (`http_path: "GET /user/:id"`).


Sèvi ak `trace_id`, ou ka jwenn mòso bwa ki soti nan tout mikwosèvis ki asosye ak demann aktyèl la, pandan y ap `span_id` pèmèt ou fè diferans ant sub-demann yo. Pou egzanp, nan ka a nan tantativ, mòso bwa ki soti nan tantativ diferan yo pral gen diferan `span_id`s. Sèvi ak idantifyan sa yo pèmèt analiz rapid nan konpòtman tout sistèm nan an tan reyèl, akselere dyagnostik pwoblèm ak amelyore estabilite ak fyab.


Metrik

Koleksyon metrik bay done quantitative sou pèfòmans sistèm, tankou latansi, pousantaj erè, itilizasyon resous, ak plis ankò. Siveyans an tan reyèl nan mezi pèmèt ou reponn san pèdi tan a chanjman pèfòmans, anpeche echèk ak fatig resous, epi asire disponiblite segondè ak fyab nan aplikasyon an pou itilizatè yo.


Entegrasyon ak depo metrik ak sistèm vizyalizasyon tankou Prometheus ak Grafana fè li pi fasil pou vizyalize done sa yo, siyifikativman senplifye siveyans.


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


Pèseptè metrik

Pèseptè metrik OpenTelemetry yo konpatib ak estanda Prometheus ak OpenMetrics, sa ki pèmèt yon tranzisyon fasil nan solisyon OpenTelemetry san chanjman enpòtan. OpenTelemetry SDK a pèmèt egzanp trace_id yo dwe ekspòte ansanm ak metrik, sa ki fè li posib korelasyon metrik ak egzanp log ak tras.


Korelasyon siyal

Ansanm, mòso bwa, mezi, ak trase kreye yon gade konplè sou eta sistèm nan:

  • Jounal yo bay enfòmasyon sou evènman sistèm yo, sa ki pèmèt pou idantifikasyon rapid ak rezolisyon erè yo.
  • Paramèt yo reflete endikatè pèfòmans kalitatif ak quantitative nan sistèm nan, tankou tan repons oswa pousantaj erè.
  • Trase konplete opinyon sa a lè li montre chemen egzekisyon demann lan atravè divès eleman sistèm, sa ki ede konprann relasyon yo. Korelasyon klè ant mòso bwa, tras, ak mezi se yon karakteristik diferan nan OpenTelemetry. Pou egzanp, Grafana pèmèt itilizatè yo wè tras ki koresponn lan ak mezi demann lè yo gade yon boutèy demi lit, anpil amelyore itilizasyon ak efikasite platfòm la.



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


Anplis twa eleman debaz yo, OpenTelemetry gen ladan konsèp Sampling, Bagaj, ak jesyon kontèks operasyon.


Pran echantiyon

Nan sistèm gwo chaj, volim mòso bwa ak tras vin menmen, ki mande resous sibstansyèl pou enfrastrikti ak depo done. Pou adrese pwoblèm sa a, estanda OpenTelemetry yo enkli echantiyon siyal - kapasite nan ekspòte sèlman yon pòsyon nan tras ak mòso bwa. Pou egzanp, ou ka ekspòte siyal detaye soti nan yon pousantaj nan demann, demann ki dire lontan, oswa demann erè. Apwòch sa a pèmèt pou pran echantiyon ase pou konstwi estatistik pandan y ap ekonomize resous enpòtan.


Sepandan, si chak sistèm poukont deside ki demann yo kontwole an detay, nou fini ak yon View fragmenté nan chak demann. Gen kèk sistèm ki ka ekspòte done detaye pandan ke lòt yo ka sèlman pasyèlman ekspòte oswa pa ekspòte ditou.


Pou rezoud pwoblèm sa a, mekanis pwopagasyon kontèks OpenTelemetry yo transmèt yon drapo echantiyon ansanm ak `trace_id`/`span_id`. Sa a asire ke si sèvis inisyal la k ap resevwa demann itilizatè a deside ke demann lan ta dwe kontwole an detay, tout lòt sistèm yo pral swiv kostim. Sinon, tout sistèm yo ta dwe pasyèlman oswa pa ekspòte siyal pou konsève resous yo. Yo rele apwòch sa a "Echantiyon Tèt" - yon desizyon ki pran nan kòmansman pwosesis demann, swa owaza oswa ki baze sou kèk atribi opinyon.


Anplis, OpenTelemetry sipòte "Tail Sampling," kote tout aplikasyon yo toujou ekspòte tout siyal yo an detay, men yon tanpon entèmedyè egziste. Apre kolekte tout done yo, tanpon sa a deside si yo kenbe done yo konplè oswa kenbe sèlman yon echantiyon pasyèl. Metòd sa a pèmèt pou yon echantiyon pi reprezantatif nan chak kategori demann (siksè/long/erè) men mande pou konfigirasyon enfrastrikti adisyonèl.


Bagaj

Mekanis Bagaj la pèmèt pè kle-valè abitrè yo transmèt ansanm ak trace_id / span_id , otomatikman pase ant tout mikwosèvis pandan pwosesis demann. Sa a itil pou transmèt enfòmasyon adisyonèl ki nesesè nan tout chemen demann lan—tankou enfòmasyon itilizatè yo oswa anviwònman exécution.

Egzanp yon header pou transmèt bagaj selon estanda W3C: tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE,userId=1c30032v5

Men kèk egzanp sou itilizasyon Bagaj:

  • Yo ka pase enfòmasyon sou Kontèks Biznis tankou userId , productId , oswa deviceId atravè tout mikwosèvis yo. Aplikasyon yo ka otomatikman konekte enfòmasyon sa yo, sa ki pèmèt pou rechèch boutèy demi lit pa kontèks itilizatè pou demann orijinal la.

  • Paramèt Konfigirasyon Espesifik Anviwònman pou SDK oswa enfrastrikti.

  • Drapo routage Drapo ki ede balansè chaj pran desizyon routage. Pandan tès la, gen kèk demann yo ta ka bezwen dirije nan mock backends. Piske bagaj yo transmèt otomatikman atravè tout sèvis yo, pa gen okenn nesesite pou kreye pwotokòl adisyonèl—jis mete yon règ sou balans chaj la.


Remake byen ke pandan ke enpak pèfòmans Bagaj la minim, itilizasyon twòp ka ogmante siyifikativman chaj rezo a ak sèvis. Ak anpil atansyon chwazi ki done ou reyèlman bezwen pase nan Bagaj pou evite pwoblèm pèfòmans.

Aplikasyon enfrastrikti

Aplike OpenTelemetry nan nivo enfrastrikti enplike entegre backend OpenTelemetry nan achitekti aplikasyon an ak konfigirasyon enfrastrikti a pou agrégation done.


Pwosesis la konsiste de kat etap:


  1. Entegrasyon Aplikasyon Nan premye etap la, OpenTelemetry SDK yo dirèkteman entegre nan aplikasyon pou kolekte metrik, mòso bwa, ak tras, asire yon koule kontinyèl nan done sou pèfòmans chak eleman sistèm nan.


  2. Konfigirasyon Ekspòtè Done yo kolekte soti nan aplikasyon yo atravè ekspòtatè yo ale nan sistèm ekstèn pou plis pwosesis, tankou anrejistreman, siveyans, trase, oswa sistèm analiz, tou depann de bezwen ou yo.


  3. Agregasyon ak Depo Etap sa a ka enplike nòmalizasyon done yo, anrichi yo ak enfòmasyon adisyonèl, ak fusion done ki soti nan diferan sous pou kreye yon gade inifye sou eta sistèm nan.


  4. Vizyalizasyon Done Finalman, done trete yo prezante kòm tablodbò nan sistèm tankou Grafana (pou metrik ak tras) oswa Kibana (pou mòso bwa). Sa a pèmèt ekip yo byen vit evalye sante sistèm nan, idantifye pwoblèm ak tandans, epi mete alèt ki baze sou siyal pwodwi yo.


Aplikasyon aplikasyon

Pou entegre ak yon aplikasyon, ou bezwen konekte SDK OpenTelemetry ki apwopriye a pou langaj pwogramasyon an itilize oswa anplwaye bibliyotèk ak kad ki sipòte dirèkteman OpenTelemetry. OpenTelemetry souvan aplike koòdone lajman itilize nan bibliyotèk li te ye, sa ki pèmèt ranplasman drop-in. Pou egzanp, bibliyotèk Mikromètr la souvan itilize pou koleksyon mezi nan ekosistèm Java a. OpenTelemetry SDK a bay aplikasyon li yo nan koòdone Mikwomèt, ki pèmèt ekspòtasyon metrik san yo pa chanje kòd aplikasyon prensipal la. Anplis, OpenTelemetry ofri aplikasyon ki pi gran OpenTracing ak OpenCensus entèfas, fasilite yon migrasyon lis nan OpenTelemetry.

Konklizyon

Nan sistèm IT, OpenTelemetry ka vin kle nan lavni nan backend serye ak efikas. Zouti sa a senplifye debogaj ak siveyans epi tou ouvè opòtinite pou yon konpreyansyon pwofon sou pèfòmans aplikasyon ak optimize nan yon nouvo nivo. Antre nan kominote OpenTelemetry pou ede fòme yon avni kote devlopman backend pi senp epi pi efikas!