![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
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.
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,
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.
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: \
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:
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è.
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 se pwosesis pou anrejistreman epi vizyalize delè chemen yon demann atravè plizyè mikwosèvis.
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:
trace_id
ak span_id
pou itilize nan lòt siyal.
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.
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.
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.
Ansanm, mòso bwa, mezi, ak trase kreye yon gade konplè sou eta sistèm nan:
Anplis twa eleman debaz yo, OpenTelemetry gen ladan konsèp Sampling, Bagaj, ak jesyon kontèks operasyon.
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.
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.
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:
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.
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.
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.
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.
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.
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!