39,583 читања
39,583 читања

Шта је ОпенТелеметри и како може да побољша ваш позадински квалитет?

од стране Dmitrii Pakhomov8m2024/06/19
Read on Terminal Reader
Read this story w/o Javascript

Предуго; Читати

ОпенТелеметри је моћан комплет алата за праћење и отклањање грешака у модерним позадинским системима. Интегрише праћење, евидентирање и прикупљање метрика, пружајући јединствен поглед на перформансе и поузданост апликације. Овај водич истражује његову историју, кључне концепте и имплементацију, што га чини кључним за оптимизацију микросервиса и дистрибуираних система.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Шта је ОпенТелеметри и како може да побољша ваш позадински квалитет?
Dmitrii Pakhomov HackerNoon profile picture
0-item

У прошлости, када смо говорили о бацкенд-у, обично смо мислили на једну велику апликацију са једном, великом базом података, а евидентирање је било довољно за праћење. Сада, захваљујући технологијама као што је Кубернетес , микроуслуге су постале стандард. Апликације су бројније и дистрибуиране, а традиционално евидентирање више није довољно за отклањање грешака и дијагностиковање проблема у нашим апликацијама.

Одлично решење за организовање надгледања је ОпенТелеметри — модеран комплет алата који се може користити за отклањање грешака и анализу перформанси дистрибуираних система.


Овај чланак је намењен ИТ професионалцима који желе да прошире своје знање у позадинској оптимизацији. У наставку ћемо детаљно описати шта је ОпенТелеметри, његове кључне концепте и проблеме које помаже у решавању. Ако вас занима како ОпенТелеметри може да промени ваш приступ праћењу и отклањању грешака позадинских система, побољшавајући њихову поузданост и ефикасност — читајте даље.


Кратка историја ОпенТелеметри

Велике технолошке компаније први пут су се суочиле са изазовом дистрибуираног евидентирања и праћења касних 2000-их. Гугл је 2010. објавио рад, Даппер, инфраструктура за праћење дистрибуираних система великих размера , који је поставио темеље за Твитер-ов алат за праћење, Зипкин, објављен 2012. године.


У 2014. појавио се Кубернетес, који је значајно поједноставио развој микросервиса и других система дистрибуираних у облаку. То је довело до тога да су многе компаније наишле на проблеме са дистрибуираним евидентирањем и праћењем у микросервисима. За стандардизацију дистрибуираног праћења креиран је ОпенТрацинг стандард, који је усвојио ЦНЦФ, и Гооглеов ОпенЦенсус пројекат.


Пројекти ОпенТрацинг и ОпенЦенсус су 2019. године најавили спајање под именом ОпенТелеметри. Ова платформа комбинује најбоље праксе акумулиране током много година, омогућавајући беспрекорну интеграцију праћења, евидентирања и метрике у било који систем, без обзира на њихову сложеност.


Данас ОпенТелеметри није само пројекат; то је индустријски стандард за прикупљање и преношење телеметријских података. Развија га и подржава заједница стручњака и водећих компанија на тржишту као што су Гоогле и Мицрософт. Пројекат наставља да се развија, стичући нове могућности за поједностављење процеса интеграције и коришћења.


Шта је унутра?

ОпенТелеметри је свеобухватан скуп пракси и алата који дефинишу које сигнале апликација може да генерише за интеракцију са спољним светом и како се ови сигнали могу прикупити и визуелизовати ради праћења стања апликација и система у целини. Три главна типа сигнала су праћење, евидентирање и прикупљање метрика .


** Хајде да детаљније погледамо сваку компоненту: \

Контексти

ОпенТелеметри уводи концепт оперативних контекста. Контекст првенствено укључује атрибуте као што су `trace_id` (идентификатор за тренутну операцију) и `span_id` (идентификатор за под-захтев, при чему сваки поновни покушај под-захтева има јединствени `span_id` ).


Поред тога, контекст може да садржи статичке информације, као што је име чвора где је апликација распоређена или име окружења (прод/ка). Ова поља, позната као ресурси у терминологији ОпенТелеметри, придружена су сваком дневнику, метрици или трагу ради лакше претраге. Контексти такође могу да укључују динамичке податке, као што је идентификатор тренутне крајње тачке ( `http_path: "GET /user/:id/info"` ), који се могу селективно приложити групама евиденција, метрика или трагова.


ОпенТелеметри контексти се могу преносити између различитих апликација користећи протоколе за ширење контекста. Ови протоколи се састоје од скупова заглавља који се додају сваком ХТТП или гРПЦ захтеву или заглавља порука за редове. Ово омогућава низводним апликацијама да реконструишу оперативни контекст из ових заглавља.


Ево неколико примера ширења контекста:

  1. Б3-Пропагација Ово је скуп заглавља ( x-b3-* ) првобитно развијен за Зипкин систем праћења. Прилагођен је у ОпенТрацинг и коришћен је од стране многих алата и библиотека. Б3-Пропагација носи trace_id / span_id и ознаку која показује да ли је узорковање неопходно.


  2. Контекст праћења В3Ц Развијен од стране В3Ц радне групе, овај стандард обједињује различите приступе ширењу контекста у један стандард и подразумевани је у ОпенТелеметри. Добар пример примене ових стандарда је праћење извршења захтева који пролази кроз микросервисе имплементиране различитим технологијама без угрожавања тачности праћења и отклањања грешака.

Трацинг

Праћење је процес снимања и накнадног визуелизације временске линије путање захтева кроз више микросервиса.


[извор слике: хттпс://опентелеметри.ио/доцс/демо/сцреенсхотс/]


У визуелизацији, свака трака се назива "спан" и има јединствени "спан_ид" . Основни распон се назива „траце“ и има „траце_ид“ , који служи као идентификатор за цео захтев.


Ова врста визуелизације вам омогућава да:

  • Анализирајте време извршавања захтева у различитим системима и базама података да бисте идентификовали уска грла која захтевају оптимизацију.
  • Откријте цикличне зависности између услуга.
  • Пронађите дупле захтеве. Користећи податке праћења, такође можете да направите додатну аналитику, као што је креирање мапе микросервиса или расподела времена у различитим системима током обраде операције. Чак и ако не користите податке праћења за визуелизацију временских линија, ОпенТелеметри и даље генерише trace_id и span_id за употребу у другим сигналима.


Дневници

Упркос својој привидној једноставности, евидентирање остаје једно од најмоћнијих алата за дијагностиковање проблема. ОпенТелеметри побољшава традиционално евидентирање додавањем контекстуалних информација. Конкретно, ако је присутан активан траг, атрибути `траце_ид` и `спан_ид` се аутоматски додају у евиденције, повезујући их са временском линијом праћења. Штавише, атрибути дневника могу укључивати статичке информације из контекста ОпенТелеметри, као што је идентификатор чвора, као и динамичке информације, као што је тренутни идентификатор ХТТП крајње тачке (`хттп_патх: "ГЕТ /усер/:ид"`).


Користећи `траце_ид`, можете пронаћи евиденције свих микросервиса повезаних са тренутним захтевом, док вам `спан_ид` омогућава да разликујете под-захтеве. На пример, у случају поновних покушаја, евиденције из различитих покушаја ће имати различите `спан_ид`. Коришћење ових идентификатора омогућава брзу анализу понашања целог система у реалном времену, убрзавајући дијагнозу проблема и повећавајући стабилност и поузданост.


метрике

Прикупљање метрика пружа квантитативне податке о перформансама система, као што су кашњење, стопе грешака, коришћење ресурса и још много тога. Праћење метрике у реалном времену омогућава вам да благовремено одговорите на промене у перформансама, спречите кварове и исцрпљивање ресурса и обезбедите високу доступност и поузданост апликације за кориснике.


Интеграција са метричким системима за складиштење и визуелизацију као што су Прометхеус и Графана олакшава визуелизацију ових података, значајно поједностављујући праћење.


[извор слике: хттпс://графана.цом/блог/2021/06/22/графана-дасхбоард-сховцасе-висуализатионс-фор-прометхеус-хоме-енерги-усаге-гитхуб-анд-море/]


Метриц Цоллецторс

ОпенТелеметри метрички сакупљачи су компатибилни са Прометхеус и ОпенМетрицс стандардима, омогућавајући лак прелазак на ОпенТелеметри решења без значајних промена. ОпенТелеметри СДК омогућава да се примери траце_ид извозе заједно са метрикама, што омогућава корелацију метрике са примерима евиденције и траговима.


Корелација сигнала

Заједно, евиденције, метрика и праћење стварају свеобухватан приказ стања система:

  • Дневници пружају информације о системским догађајима, омогућавајући брзу идентификацију и решавање грешака.
  • Метрике одражавају квалитативне и квантитативне показатеље учинка система, као што су времена одговора или стопе грешке.
  • Праћење допуњује овај поглед тако што показује путању извршења захтева кроз различите системске компоненте, помажући да се разумеју њихове међусобне везе. Јасна корелација између евиденција, трагова и метрика је карактеристична карактеристика ОпенТелеметри. На пример, Графана омогућава корисницима да виде одговарајуће метрике праћења и захтева приликом прегледа евиденције, што увелико повећава употребљивост и ефикасност платформе.



[извор слике: хттпс://графана.цом/блог/2020/03/31/хов-то-суццессфулли-цоррелате-метрицс-логс-анд-трацес-ин-графана/]


Поред три основне компоненте, ОпенТелеметри укључује концепте узорковања, пртљага и управљања контекстом операције.


Узорковање

У системима са високим оптерећењем, обим дневника и трагова постаје огроман, што захтева значајне ресурсе за инфраструктуру и складиштење података. Да би се решио овај проблем, ОпенТелеметри стандарди укључују узорковање сигнала — могућност извоза само дела трагова и евиденције. На пример, можете да извезете детаљне сигнале из процента захтева, дуготрајних захтева или захтева за грешку. Овај приступ омогућава довољно узорковања за изградњу статистике уз уштеду значајних ресурса.


Међутим, ако сваки систем самостално одлучи које захтеве ће детаљно пратити, на крају добијамо фрагментиран поглед на сваки захтев. Неки системи могу да извозе детаљне податке док други могу само делимично да извозе или не извозе уопште.


Да би решили овај проблем, ОпенТелеметри-јеви механизми ширења контекста преносе ознаку узорковања заједно са `траце_ид`/`спан_ид`. Ово осигурава да ако почетна услуга која прима кориснички захтев одлучи да захтев треба детаљно пратити, сви остали системи ће следити тај пример. У супротном, сви системи би требало да делимично или не извозе сигнале да би сачували ресурсе. Овај приступ се назива „Узорковање главе“ — одлука која се доноси на почетку обраде захтева, било насумично или на основу неких улазних атрибута.


Осим тога, ОпенТелеметри подржава „Узорковање репа“, где све апликације увек детаљно извозе све сигнале, али постоји међубафер. Након прикупљања свих података, овај бафер одлучује да ли ће задржати пуне податке или задржати само делимичан узорак. Овај метод омогућава репрезентативнији узорак сваке категорије захтева (успешно/дуго/грешка), али захтева додатно подешавање инфраструктуре.


Баггаге

Механизам за пртљаг омогућава да се произвољни парови кључ-вредност пренесу заједно са trace_id / span_id , аутоматски пролазећи између свих микросервиса током обраде захтева. Ово је корисно за преношење додатних информација потребних кроз путању захтева—као што су корисничке информације или подешавања окружења за извршавање.

Пример заглавља за пренос пртљага према В3Ц стандарду: tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE,userId=1c30032v5

Ево неколико примера коришћења пртљага:

  • Прослеђивање пословног контекста Информације као што су userId , productId или deviceId могу се проследити кроз све микросервисе. Апликације могу аутоматски да евидентирају ове информације, омогућавајући претрагу дневника према корисничком контексту за оригинални захтев.

  • Подешавања специфичних конфигурационих параметара за СДК-ове или инфраструктуру.

  • Заставице рутирања Ознаке које помажу балансаторима оптерећења да доносе одлуке о рутирању. Током тестирања, неки захтеви ће можда морати да се преусмере на лажне позадине. Пошто се пртљаг аутоматски преноси кроз све услуге, нема потребе за креирањем додатних протокола – само поставите правило за балансирање оптерећења.


Имајте на уму да иако је утицај на перформансе пртљага минималан, прекомерна употреба може значајно повећати оптерећење мреже и услуге. Пажљиво изаберите које податке заиста требате да прођете кроз пртљаг да бисте избегли проблеме са перформансама.

Имплементација инфраструктуре

Имплементација ОпенТелеметри на нивоу инфраструктуре укључује интеграцију ОпенТелеметри бацкенда у архитектуру апликације и конфигурисање инфраструктуре за агрегацију података.


Процес се састоји од четири фазе:


  1. Интеграција апликације У првој фази, ОпенТелеметри СДК-ови су директно интегрисани у апликације за прикупљање метрика, евиденција и трагова, обезбеђујући непрекидан ток података о перформансама сваке компоненте система.


  2. Конфигурисање извозника Прикупљени подаци се рутирају из апликација преко експортера у екстерне системе за даљу обраду, као што су системи евидентирања, праћења, праћења или анализе, у зависности од ваших потреба.


  3. Агрегација и складиштење Ова фаза може укључивати нормализацију података, њихово обогаћивање додатним информацијама и спајање података из различитих извора како би се створио јединствен поглед на стање система.


  4. Визуелизација података Коначно, обрађени подаци су представљени као контролне табле у системима као што су Графана (за метрике и трагове) или Кибана (за евиденције). Ово омогућава тимовима да брзо процене здравље система, идентификују проблеме и трендове и подесе упозорења на основу генерисаних сигнала.


Имплементација апликације

Да бисте се интегрисали са апликацијом, потребно је да повежете одговарајући ОпенТелеметри СДК за програмски језик који се користи или да користите библиотеке и оквире који директно подржавају ОпенТелеметри. ОпенТелеметри често имплементира широко коришћене интерфејсе из познатих библиотека, омогућавајући замене. На пример, библиотека Мицрометер се обично користи за прикупљање метрика у Јава екосистему. ОпенТелеметри СДК обезбеђује своје имплементације Мицрометер интерфејса, омогућавајући извоз метрике без промене главног кода апликације. Штавише, ОпенТелеметри нуди имплементације старијих ОпенТрацинг и ОпенЦенсус интерфејса, олакшавајући несметану миграцију на ОпенТелеметри.

Закључак

У ИТ системима, ОпенТелеметри може постати кључ за будућност поузданих и ефикасних позадина. Овај алат поједностављује отклањање грешака и надгледање, а такође отвара могућности за дубоко разумевање перформанси апликације и оптимизацију на новом нивоу. Придружите се ОпенТелеметри заједници да бисте помогли у обликовању будућности у којој је развој позадинског дела једноставнији и ефикаснији!

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks