paint-brush
OpenTelemetry дегеніміз не және ол сіздің сервер сапасын қалай жақсарта алады? бойынша@ymatigoosa
39,516 оқулар
39,516 оқулар

OpenTelemetry дегеніміз не және ол сіздің сервер сапасын қалай жақсарта алады?

бойынша Dmitrii Pakhomov8m2024/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 болып табылады — таратылған жүйелерді жөндеу және өнімділігін талдау үшін пайдалануға болатын заманауи құралдар жинағы.


Бұл мақала серверді оңтайландыру бойынша білімдерін кеңейтуді қалайтын АТ мамандарына арналған. Төменде біз OpenTelemetry деген не екенін, оның негізгі ұғымдарын және шешуге көмектесетін мәселелерді егжей-тегжейлі қарастырамыз. Егер сіз OpenTelemetry серверлік жүйелерді бақылауға және жөндеуге, олардың сенімділігі мен тиімділігін арттыруға деген көзқарасыңызды қалай өзгерте алатынына қызығушылық танытсаңыз — әрі қарай оқыңыз.


OpenTelemetry қысқаша тарихы

Ірі технологиялық компаниялар алғаш рет 2000-шы жылдардың аяғында таратылған ағаш кесу және бақылау мәселесіне тап болды. 2010 жылы Google мақала жариялады, Dapper, кең ауқымды бөлінген жүйелерді бақылау инфрақұрылымы , ол 2012 жылы шыққан Twitter-дің Zipkin іздеу құралының негізін қалады.


2014 жылы микросервистерді және басқа бұлтпен таратылатын жүйелерді дамытуды айтарлықтай жеңілдететін Kubernetes пайда болды. Бұл көптеген компаниялардың микросервистерде бөлінген тіркеу және бақылау мәселелеріне тап болуына әкелді. Бөлінген бақылауды стандарттау үшін CNCF қабылдаған OpenTracing стандарты және Google OpenCensus жобасы жасалды.


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 Бұл Zipkin бақылау жүйесі үшін бастапқыда әзірленген тақырыптар жинағы ( x-b3-* ). Ол OpenTracing-ге бейімделген және көптеген құралдар мен кітапханаларда қолданылған. B3-тарату trace_id / span_id және үлгі алу қажет екенін көрсететін жалаушаны тасымалдайды.


  2. W3C Trace Context W3C жұмыс тобы әзірлеген бұл стандарт мәтінмәнді таратудың әртүрлі тәсілдерін бір стандартқа біріктіреді және OpenTelemetry жүйесінде әдепкі болып табылады. Бұл стандарттарды қолданудың жақсы мысалы әртүрлі технологиялармен жүзеге асырылатын микросервистер арқылы өтетін сұраудың орындалуын бақылау және жөндеу дәлдігіне нұқсан келтірмей бақылау болып табылады.

Бақылау

Бақылау - бірнеше микросервистер арқылы сұрау жолының уақыт шкаласын жазу және кейіннен визуализациялау процесі.


[сурет көзі: https://opentelemetry.io/docs/demo/screenshots/]


Визуализацияда әрбір жолақ "аралық" деп аталады және бірегей "span_id" болады. Түбір аралығы «із» деп аталады және бүкіл сұрау үшін идентификатор ретінде қызмет ететін «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`-мен бірге үлгі алу жалауын жібереді. Бұл пайдаланушы сұрауын алатын бастапқы қызмет сұрауды егжей-тегжейлі бақылау қажет деп шешсе, барлық басқа жүйелер де осыған сәйкес келетінін қамтамасыз етеді. Әйтпесе, ресурстарды үнемдеу үшін барлық жүйелер сигналдарды ішінара экспорттауы немесе экспорттамауы керек. Бұл тәсіл «басты іріктеу» деп аталады — кездейсоқ немесе кейбір енгізу атрибуттары негізінде сұранысты өңдеудің басында қабылданған шешім.


Сонымен қатар, OpenTelemetry «Құйрық үлгісін» қолдайды, мұнда барлық қолданбалар әрқашан барлық сигналдарды егжей-тегжейлі экспорттайды, бірақ аралық буфер бар. Барлық деректерді жинағаннан кейін бұл буфер толық деректерді сақтауды немесе тек ішінара үлгіні сақтауды шешеді. Бұл әдіс әрбір сұрау санатының (сәтті/ұзақ/қате) репрезентативті үлгісіне мүмкіндік береді, бірақ қосымша инфрақұрылым орнатуды қажет етеді.


Жүк

Жолжүк механизмі сұрауды өңдеу кезінде барлық микросервистердің арасында автоматты түрде өтетін 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 (метрикалар мен жолдар үшін) немесе Kibana (журналдар үшін) сияқты жүйелерде бақылау тақталары ретінде ұсынылады. Бұл командаларға жүйенің денсаулығын жылдам бағалауға, мәселелер мен үрдістерді анықтауға және жасалған сигналдар негізінде ескертулерді орнатуға мүмкіндік береді.


Қолданбаны іске асыру

Қолданбамен біріктіру үшін қолданылатын бағдарламалау тіліне сәйкес OpenTelemetry SDK қосуыңыз немесе OpenTelemetry-ді тікелей қолдайтын кітапханалар мен фреймворктарды пайдалануыңыз қажет. OpenTelemetry көбінесе белгілі кітапханалардан кеңінен қолданылатын интерфейстерді жүзеге асырады, бұл ашылмалы ауыстыруларға мүмкіндік береді. Мысалы, Микрометр кітапханасы Java экожүйесінде метрика жинау үшін жиі пайдаланылады. OpenTelemetry SDK негізгі қолданба кодын өзгертпестен метрикалық экспорттауға мүмкіндік беретін Микрометр интерфейстерінің іске асырылуын қамтамасыз етеді. Сонымен қатар, OpenTelemetry ескі OpenTracing және OpenCensus интерфейстерін іске асыруды ұсынады, бұл OpenTelemetry-ге тегіс көшуді жеңілдетеді.

Қорытынды

АТ жүйелерінде 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

ТЕГТЕРДІ АЛУ

БҰЛ МАҚАЛА БАСҚАРҒАН...