39,585 хониш
39,585 хониш

OpenTelemetry чист ва он чӣ гуна метавонад сифати пуштибонии шуморо беҳтар кунад?

аз ҷониби ymatigoosa...8m2024/06/19
Read on Terminal Reader
Read this story w/o Javascript

Хеле дароз; Хондан

OpenTelemetry як абзори пурқувват барои назорат ва ислоҳи системаҳои муосири пуштибонӣ мебошад. Он пайгирӣ, сабт ва ҷамъоварии ченакҳоро муттаҳид намуда, назари ягонаи иҷроиш ва эътимоднокии барномаро таъмин мекунад. Ин дастур таърих, мафҳумҳои калидӣ ва татбиқи онро меомӯзад, ки онро барои оптимизатсияи хидматрасониҳои хурд ва системаҳои тақсимшуда муҳим мегардонад.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - OpenTelemetry чист ва он чӣ гуна метавонад сифати пуштибонии шуморо беҳтар кунад?
Dmitrii Pakhomov HackerNoon profile picture
0-item

Дар гузашта, вақте ки мо дар бораи пуштибонӣ сӯҳбат мекардем, мо одатан ба як замимаи калон бо пойгоҳи ягонаи калон муроҷиат мекардем ва сабти ном барои мониторинг кофӣ буд. Ҳоло, ба шарофати технологияҳо ба монанди Kubernetes , хидматрасониҳои хурд стандартӣ шуданд. Барномаҳо бештар ва паҳн шудаанд ва сабти анъанавӣ дигар барои ислоҳ ва ташхиси мушкилот дар замимаҳои мо кофӣ нест.

Як ҳалли олӣ барои ташкили мониторинг OpenTelemetry аст - як абзори муосир, ки метавонад барои ислоҳи хатогиҳо ва таҳлили иҷрои системаҳои тақсимшуда истифода шавад.


Ин мақола барои мутахассисони IT пешбинӣ шудааст, ки мехоҳанд дониши худро дар оптимизатсияи пуштибонӣ васеъ кунанд. Дар зер мо муфассалтар хоҳем гуфт, ки OpenTelemetry чист, мафҳумҳои калидии он ва мушкилоте, ки он ба ҳалли он кӯмак мекунад. Агар шумо ба он таваҷҷӯҳ дошта бошед, ки чӣ гуна OpenTelemetry метавонад муносибати шуморо ба мониторинг ва ислоҳи системаҳои пуштибонӣ, баланд бардоштани эътимоднокӣ ва самаранокии онҳоро тағир диҳад - хонед.


Таърихи мухтасари OpenTelemetry

Ширкатҳои бузурги технологӣ бори аввал дар охири солҳои 2000-ум бо мушкилоти тақсимот ва пайгирӣ дучор шуданд. Дар соли 2010, Google мақолае нашр кард, Dapper, инфрасохтори пайгирии системаҳои паҳншудаи миқёси калон , ки барои абзори пайгирии Twitter Zipkin, ки соли 2012 ба табъ расида буд, замина гузошт.


Дар соли 2014, Kubernetes пайдо шуд, ки рушди микросервисҳо ва дигар системаҳои тақсимшудаи абрро ба таври назаррас содда кард. Ин боиси он гардид, ки бисёре аз ширкатҳо бо мушкилот бо сабти тақсимшуда ва пайгирӣ дар хидматрасониҳои микросервис дучор оянд. Барои стандартикунонии пайгирии тақсимшуда, стандарти OpenTracing, ки аз ҷониби CNCF қабул шудааст ва лоиҳаи OpenCensus Google сохта шудааст.


Дар соли 2019 лоиҳаҳои OpenTracing ва OpenCensus якҷояшавии бо номи OpenTelemetry эълон карданд. Ин платформа таҷрибаҳои беҳтарини дар тӯли солҳои зиёд ҷамъшударо муттаҳид мекунад ва имкон медиҳад ҳамгироии бефосилаи пайгирӣ, сабт ва ченакҳоро ба ҳама гуна система, новобаста аз мураккабии онҳо.


Имрӯз, OpenTelemetry танҳо як лоиҳа нест; ин стандарти саноатӣ барои ҷамъоварӣ ва интиқоли маълумоти телеметрӣ мебошад. Он аз ҷониби ҷомеаи мутахассисон ва ширкатҳои пешбари бозор ба монанди Google ва Microsoft таҳия ва дастгирӣ карда мешавад. Лоиҳа таҳаввулро идома дода, қобилиятҳои навро барои содда кардани раванди ҳамгироӣ ва истифода ба даст меорад.


Дарун чист?

OpenTelemetry маҷмӯи ҳамаҷонибаи таҷрибаҳо ва абзорҳоест, ки муайян мекунанд, ки кадом сигналҳоро барои муошират бо ҷаҳони беруна тавлид кардан мумкин аст ва чӣ гуна ин сигналҳоро барои назорат кардани ҳолати барномаҳо ва дар маҷмӯъ система ҷамъоварӣ ва визуалӣ кардан мумкин аст. Се намуди асосии сигналҳо пайгирӣ, сабткунӣ ва ҷамъоварии ченакҳо мебошанд.


** Биёед ҳар як ҷузъро бодиққат дида бароем: \

Контекстҳо

OpenTelemetry консепсияи контексти амалиётро муаррифӣ мекунад. Контекст пеш аз ҳама атрибутҳоро дар бар мегирад, аз қабили `trace_id` (идентификатор барои амалиёти ҷорӣ) ва `span_id` (идентификатор барои зердархост бо ҳар як такрори зердархост дорои `span_id` ).


Илова бар ин, контекст метавонад дорои маълумоти статикӣ бошад, ба монанди номи гиреҳ, ки дар он барнома ҷойгир карда шудааст ё номи муҳити зист (prod/qa). Ин майдонҳо, ки ҳамчун захираҳо дар истилоҳоти OpenTelemetry маъруфанд, барои осонтар ҷустуҷӯ кардан ба ҳар як гузориш, метр ё пайгирӣ замима карда мешаванд. Контекстҳо инчунин метавонанд маълумоти динамикиро дар бар гиранд, ба монанди идентификатори нуқтаи ниҳоии ҷорӣ ( `http_path: "GET /user/:id/info"` ), ки метавонанд ба таври интихобӣ ба гурӯҳҳои гузоришҳо, ченакҳо ё пайгирӣ замима шаванд.


Контекстҳои OpenTelemetry метавонанд байни барномаҳои гуногун бо истифода аз протоколҳои паҳнкунии контекст интиқол дода шаванд. Ин протоколҳо аз маҷмӯи сарлавҳаҳо иборатанд, ки ба ҳар як дархости HTTP ё gRPC ё сарлавҳаҳои паёмҳо барои навбат илова карда мешаванд. Ин ба барномаҳои поёноб имкон медиҳад, ки контексти амалиётро аз ин сарлавҳаҳо барқарор кунанд.


Инҳоянд чанд намунаи таблиғи контекст:

  1. B3-Propagation Ин маҷмӯи сарлавҳаҳо ( x-b3-* ) аст, ки аслан барои системаи пайгирии Zipkin таҳия шудааст. Он ба OpenTracing мутобиқ карда шуда, аз ҷониби бисёр асбобҳо ва китобхонаҳо истифода мешуд. B3-Пропагатсия trace_id / span_id ва парчамро нишон медиҳад, ки оё интихоб зарур аст.


  2. W3C Trace Context. Аз ҷониби гурӯҳи кории W3C таҳия шудааст, ин стандарт равишҳои гуногуни паҳнкунии контекстро дар як стандарти ягона муттаҳид мекунад ва дар OpenTelemetry пешфарз аст. Намунаи хуби татбиқи ин стандартҳо пайгирии иҷрои дархосте мебошад, ки тавассути хидматрасониҳои микросервисҳо, ки бо технологияҳои гуногун амалӣ карда мешаванд, бе осеб расонидан ба дақиқии мониторинг ва ислоҳи ислоҳот.

Пайгирӣ

Пайгирӣ раванди сабт ва баъдан визуализатсияи ҷадвали роҳи дархост тавассути хидматҳои сершумор мебошад.


[манбаи тасвир: https://opentelemetry.io/docs/demo/screenshots/]


Дар визуализатсия, ҳар як сатр "span" номида мешавад ва дорои "span_id" -и беназир аст. Фосилаи реша ҳамчун "trace" номида мешавад ва дорои "trace_id" мебошад, ки ҳамчун идентификатор барои тамоми дархост хидмат мекунад.


Ин намуди визуализатсия ба шумо имкон медиҳад:

  • Барои муайян кардани монеаҳо, ки ба оптимизатсия ниёз доранд, вақти иҷрои дархостҳоро дар системаҳо ва пойгоҳи додаҳо таҳлил кунед.
  • Муайян кардани вобастагии даврӣ байни хидматҳо.
  • Дарёфти дархостҳои такрорӣ. Бо истифода аз маълумоти пайгирӣ, шумо инчунин метавонед таҳлилҳои иловагӣ созед, ба монанди эҷоди харитаи хидматрасонии хурд ё тақсимоти вақт дар системаҳои гуногун ҳангоми коркарди амалиёт. Ҳатто агар шумо маълумоти пайгириро барои визуалии ҷадвалҳои вақт истифода набаред, OpenTelemetry то ҳол trace_id ва span_id барои истифода дар дигар сигналҳо тавлид мекунад.


Сабтҳо

Сарфи назар аз соддагии зоҳирии худ, сабткунӣ яке аз воситаҳои пурқувват барои ташхиси мушкилот боқӣ мемонад. OpenTelemetry сабти анъанавиро тавассути илова кардани маълумоти контекстӣ такмил медиҳад. Махсусан, агар пайгирии фаъол мавҷуд бошад, атрибутҳои `trace_id` ва `span_id` ба таври худкор ба гузоришҳо илова карда мешаванд ва онҳоро ба ҷадвали пайгирӣ пайваст мекунанд. Гузашта аз ин, атрибутҳои гузориш метавонанд иттилооти статикиро аз контексти OpenTelemetry, ба монанди идентификатори гиреҳ ва инчунин иттилооти динамикӣ, ба монанди идентификатори охирини HTTP (`http_path: "GET /user/:id"`) дар бар гиранд.


Бо истифода аз `trace_id`, шумо метавонед гузоришҳоро аз ҳама хидматрасониҳои хурди марбут ба дархости ҷорӣ пайдо кунед, дар ҳоле ки 'span_id' ба шумо имкон медиҳад, ки байни зердархостҳо фарқ кунед. Масалан, дар мавриди кӯшишҳои такрорӣ, гузоришҳо аз кӯшишҳои гуногун дорои `span_id`-ҳои гуногун хоҳанд буд. Истифодаи ин идентификаторҳо имкон медиҳад, ки таҳлили зуди рафтори тамоми система дар вақти воқеӣ, суръатбахшии ташхиси мушкилот ва баланд бардоштани субот ва эътимоднокӣ гардад.


Метрикҳо

Ҷамъоварии ченакҳо маълумоти миқдорӣ дар бораи иҷрои система, ба монанди таъхир, сатҳи хатогиҳо, истифодаи захираҳо ва ғайраро таъмин мекунад. Мониторинги воқеии ченакҳо ба шумо имкон медиҳад, ки ба тағйироти иҷроиш фаврӣ вокуниш нишон диҳед, нокомиҳо ва тамомшавии захираҳоро пешгирӣ кунед ва дастрасии баланд ва эътимоднокии барномаро барои корбарон таъмин кунед.


Интегратсия бо системаҳои нигоҳдории метрикӣ ва визуализатсия ба монанди Prometheus ва Grafana тасаввуроти ин маълумотро осонтар мекунад ва мониторингро ба таври назаррас содда мекунад.


[манбаи тасвир: https://grafana.com/blog/2021/06/22/grafana-dashboard-showcase-visualizations-for-prometheus-home-energy-usage-github-and-more/]


Коллекторҳои метрикӣ

Коллекторҳои метрикии OpenTelemetry бо стандартҳои Prometheus ва OpenMetrics мувофиқ буда, имкон медиҳад, ки бидуни тағироти назаррас ба ҳалли осони OpenTelemetry гузаред. OpenTelemetry SDK имкон медиҳад, ки намунаҳои trace_id дар якҷоягӣ бо ченакҳо содир карда шаванд, ки ин имкон медиҳад, ки ченакҳоро бо мисолҳо ва пайраҳаҳо муқоиса кунед.


Муносибати сигнал

Якҷоя, гузоришҳо, ченакҳо ва пайгирӣ назари ҳамаҷонибаи ҳолати системаро эҷод мекунанд:

  • Журналҳо маълумотро дар бораи рӯйдодҳои система таъмин мекунанд, ки имкон медиҳанд, ки хатогиҳо зуд муайян карда шаванд.
  • Метрикҳо нишондиҳандаҳои сифатӣ ва миқдорӣ дар системаро инъикос мекунанд, ба монанди вақти посух ё сатҳи хатогиҳо.
  • Пайравӣ ин нуқтаи назарро бо нишон додани роҳи иҷрои дархост тавассути ҷузъҳои гуногуни система, кӯмак мекунад, ки робитаи байниҳамдигарии онҳоро дарк кунад. Муносибати возеҳ байни гузоришҳо, пайҳо ва ченакҳо хусусияти фарқкунандаи OpenTelemetry мебошад. Масалан, Grafana ба корбарон имкон медиҳад, ки ҳангоми дидани гузориш пайгирӣ ва дархости мувофиқро бубинанд, ки қобили истифода ва самаранокии платформаро хеле беҳтар мекунад.



[манбаи тасвир: https://grafana.com/blog/2020/03/31/how-to-successfully-correlate-metrics-logs-and-traces-in-grafana/]


Илова ба се ҷузъи асосӣ, OpenTelemetry мафҳумҳои намунагирӣ, бағоҷ ва идоракунии контексти амалиётро дар бар мегирад.


Намунагирӣ

Дар системаҳои пурбор, ҳаҷми гузоришҳо ва пайраҳаҳо хеле калон мешавад, ки барои инфрасохтор ва нигоҳдории маълумот захираҳои назаррасро талаб мекунад. Барои ҳалли ин масъала, стандартҳои OpenTelemetry намунагирии сигналро дар бар мегиранд - қобилияти содироти танҳо як қисми пайҳо ва гузоришҳо. Масалан, шумо метавонед сигналҳои муфассалро аз фоизи дархостҳо, дархостҳои дарозмуддат ё дархостҳои хато содир кунед. Ин равиш имкон медиҳад, ки интихоби кофӣ барои эҷоди омор ҳангоми сарфаи захираҳои назаррас.


Аммо, агар ҳар як система мустақилона қарор қабул кунад, ки кадом дархостҳо ба таври муфассал назорат карда шаванд, мо бо назари тақсимшудаи ҳар як дархост ба даст меорем. Баъзе системаҳо метавонанд маълумоти муфассалро содир кунанд, дар ҳоле ки дигарон метавонанд қисман содир кунанд ё тамоман содир накунанд.


Барои ҳалли ин мушкилот, механизмҳои паҳнкунии контексти OpenTelemetry парчами интихобро дар якҷоягӣ бо `trace_id`/`span_id` интиқол медиҳанд. Ин кафолат медиҳад, ки агар хидмати аввалияе, ки дархости корбарро қабул мекунад, қарор кунад, ки дархост бояд ба таври муфассал назорат карда шавад, ҳамаи системаҳои дигар ба ин мувофиқат хоҳанд кард. Дар акси ҳол, ҳама системаҳо бояд сигналҳоро қисман ё содир накунанд, то захираҳоро ҳифз кунанд. Ин равиш "Sampling Head" номида мешавад - қарорест, ки дар оғози коркарди дархост ё ба таври тасодуфӣ ё дар асоси баъзе атрибутҳои воридотӣ қабул карда мешавад.


Ғайр аз он, OpenTelemetry "Sampling Tail" -ро дастгирӣ мекунад, ки дар он ҳама барномаҳо ҳамеша ҳама сигналҳоро ба таври муфассал содир мекунанд, аммо буфери фосилавӣ вуҷуд дорад. Пас аз ҷамъоварии ҳама маълумот, ин буфер тасмим мегирад, ки маълумоти пурраро нигоҳ дорад ё танҳо қисман намунаро нигоҳ дорад. Ин усул имкон медиҳад, ки намунаи бештари ҳар як категорияи дархост (бомуваффақият/дароз/хато) пайдо шавад, аммо танзими иловагии инфрасохторро талаб мекунад.


Бағоҷ

Механизми бағоҷ имкон медиҳад, ки ҷуфтҳои ихтиёрии калид-арзиш дар якҷоягӣ бо trace_id / span_id интиқол дода шаванд, ки ҳангоми коркарди дархост ба таври худкор байни ҳама хидматҳои хурд гузаранд. Ин барои интиқоли маълумоти иловагии лозимӣ дар тамоми роҳи дархост муфид аст, ба монанди маълумоти корбар ё танзимоти муҳити корӣ.

Намунаи сарлавҳа барои интиқоли бағоҷ мувофиқи стандарти W3C: tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE,userId=1c30032v5

Инҳоянд чанд намунаи истифодаи бағоҷ:

  • Гузаронидани иттилооти контексти тиҷорӣ ба монанди userId , productId ё deviceId метавонад тавассути ҳама хидматрасониҳои хурд гузаронида шавад. Барномаҳо метавонанд ин маълумотро ба таври худкор сабти ном кунанд, ки барои ҷустуҷӯи гузоришҳо аз рӯи контексти корбар барои дархости аслӣ имкон медиҳад.

  • Танзимоти мушаххаси конфигуратсия барои SDK ё инфрасохтор.

  • Парчамҳои масир Парчамҳое, ки ба тавозуни сарборӣ дар қабули қарорҳои масир кӯмак мекунанд. Ҳангоми санҷиш, шояд баъзе дархостҳо бояд ба ақибҳои тақаллубӣ равона карда шаванд. Азбаски бағоҷ ба таври худкор тавассути тамоми хидматҳо интиқол дода мешавад, лозим нест, ки протоколҳои иловагӣ эҷод кунед - танҳо дар баланси бор қоида муқаррар кунед.


Дар хотир доред, ки гарчанде ки таъсири бағоҷ ҳадди ақалл аст, истифодаи аз ҳад зиёд метавонад сарбории шабака ва хидматро ба таври назаррас афзоиш диҳад. Бодиққат интихоб кунед, ки кадом маълумотро ба шумо воқеан бояд тавассути бағоҷ гузаронед, то мушкилоти иҷроишро пешгирӣ кунед.

Амалисозии инфрасохтор

Татбиқи OpenTelemetry дар сатҳи инфрасохтор ҳамгироии пуштибонии OpenTelemetry ба меъмории барнома ва танзими инфрасохторро барои ҷамъоварии маълумот дар бар мегирад.


Раванд аз чор марҳила иборат аст:


  1. Интегратсияи барномаҳо Дар марҳилаи аввал, OpenTelemetry SDK-ҳо мустақиман ба барномаҳо барои ҷамъоварии ченакҳо, гузоришҳо ва паймоишҳо ворид карда мешаванд, ки ҷараёни пайвастаи маълумотро дар бораи кори ҳар як ҷузъи система таъмин мекунанд.


  2. Танзими содиркунандагон Маълумоти ҷамъшуда вобаста ба эҳтиёҷоти шумо аз барномаҳо тавассути содиркунандагон ба системаҳои беруна барои коркарди минбаъда, аз қабили системаҳои сабткунӣ, мониторинг, пайгирӣ ё таҳлилӣ интиқол дода мешавад.


  3. Ҷамъоварӣ ва нигоҳдорӣ Ин марҳила метавонад ба эътидол овардани маълумот, ғанӣ гардонидани он бо иттилооти иловагӣ ва якҷоя кардани маълумот аз манбаъҳои гуногун барои эҷоди назари ягонаи ҳолати система дар бар гирад.


  4. Дар ниҳоят, маълумоти коркардшуда ҳамчун панели идоракунӣ дар системаҳо ба монанди Grafana (барои ченакҳо ва пайҳо) ё Кибана (барои гузоришҳо) пешниҳод карда мешаванд. Ин ба гурӯҳҳо имкон медиҳад, ки саломатии системаро зуд арзёбӣ кунанд, мушкилот ва тамоюлҳоро муайян кунанд ва дар асоси сигналҳои тавлидшуда огоҳӣ таъсис диҳанд.


Амалисозии ариза

Барои ҳамгироӣ бо барнома, шумо бояд OpenTelemetry SDK-и мувофиқро барои забони барномасозии истифодашаванда пайваст кунед ё китобхонаҳо ва чаҳорчӯбаҳоеро истифода баред, ки мустақиман OpenTelemetry -ро дастгирӣ мекунанд. OpenTelemetry аксар вақт интерфейсҳои ба таври васеъ истифодашавандаро аз китобхонаҳои маълум амалӣ мекунад, ки имкон медиҳад, ки иваз кардани афтанда. Масалан, китобхонаи Micrometer одатан барои ҷамъоварии ченакҳо дар экосистемаи Java истифода мешавад. OpenTelemetry SDK татбиқи интерфейсҳои Micrometer-ро таъмин мекунад, ки имкон медиҳад содироти метрикӣ бидуни тағир додани рамзи асосии барнома. Ғайр аз он, OpenTelemetry татбиқи интерфейсҳои кӯҳнаи OpenTracing ва OpenCensusро пешниҳод мекунад, ки ба муҳоҷирати ҳамвор ба OpenTelemetry мусоидат мекунад.

Хулоса

Дар системаҳои IT, OpenTelemetry метавонад калиди ояндаи пуштибони боэътимод ва муассир гардад. Ин асбоб ислоҳ ва мониторингро содда мекунад ва инчунин барои дарки амиқи иҷрои барномаҳо ва оптимизатсия дар сатҳи нав имкониятҳоро мекушояд. Ба ҷомеаи OpenTelemetry ҳамроҳ шавед, то дар ташаккули ояндае, ки дар он рушди пуштибонӣ соддатар ва муассиртар аст, мусоидат кунед!

L O A D I N G
. . . comments & more!

About Author

Dmitrii Pakhomov HackerNoon profile picture
Dmitrii Pakhomov@ymatigoosa
10 yeas of experience of building mission critical Fintech system handling extremely high load

ТЕГИ овезон кунед

ИН МАКОЛА ДАР...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks