![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Hapo awali, tulipozungumza juu ya nyuma, kwa kawaida tulirejelea programu moja kubwa yenye hifadhidata moja, kubwa, na ukataji miti ulikuwa wa kutosha kwa ufuatiliaji. Sasa, kutokana na teknolojia kama Kubernetes , huduma ndogo zimekuwa kiwango. Maombi ni mengi zaidi na yanasambazwa, na ukataji miti wa kitamaduni hautoshi tena kwa utatuzi na kutambua matatizo katika programu zetu.
Suluhisho bora la kupanga ufuatiliaji ni OpenTelemetry - zana ya kisasa ambayo inaweza kutumika kwa utatuzi na uchambuzi wa utendaji wa mifumo iliyosambazwa.
Nakala hii imekusudiwa wataalamu wa IT wanaotaka kupanua maarifa yao katika uboreshaji wa hali ya nyuma. Hapo chini, tutafafanua OpenTelemetry ni nini, dhana zake muhimu, na shida zinazosaidia kutatua. Iwapo una nia ya jinsi OpenTelemetry inaweza kubadilisha mbinu yako ya ufuatiliaji na utatuzi wa mifumo ya nyuma, kuimarisha uaminifu na ufanisi wao - endelea.
Kampuni kubwa za teknolojia zilikabiliwa na changamoto ya ukataji miti na ufuatiliaji uliosambazwa mwishoni mwa miaka ya 2000. Mnamo 2010, Google ilichapisha karatasi,
Mnamo 2014, Kubernetes iliibuka, ikirahisisha sana ukuzaji wa huduma ndogo na mifumo mingine inayosambazwa na wingu. Hii ilisababisha kampuni nyingi kukumbana na maswala ya ukataji miti uliosambazwa na ufuatiliaji katika huduma ndogo. Ili kusawazisha ufuatiliaji uliosambazwa, kiwango cha OpenTracing, kilichopitishwa na CNCF, na mradi wa OpenCensus wa Google uliundwa.
Mnamo mwaka wa 2019, miradi ya OpenTracing na OpenCensus ilitangaza muunganisho chini ya jina OpenTelemetry. Mfumo huu unachanganya mbinu bora zilizokusanywa kwa miaka mingi, ikiruhusu ujumuishaji usio na mshono wa ufuatiliaji, ukataji miti na vipimo kwenye mfumo wowote, bila kujali uchangamano wao.
Leo, OpenTelemetry sio mradi tu; ni kiwango cha sekta ya kukusanya na kusambaza data ya telemetry. Inatengenezwa na kuungwa mkono na jumuiya ya wataalamu na makampuni yanayoongoza sokoni kama vile Google na Microsoft. Mradi unaendelea kubadilika, kupata uwezo mpya wa kurahisisha mchakato wa ujumuishaji na utumiaji.
OpenTelemetry ni seti ya kina ya mazoea na zana zinazofafanua ni ishara gani programu inaweza kutoa ili kuingiliana na ulimwengu wa nje, na jinsi mawimbi haya yanaweza kukusanywa na kuonyeshwa ili kufuatilia hali ya programu na mfumo kwa ujumla. Aina tatu kuu za mawimbi ni ufuatiliaji, ukataji miti na ukusanyaji wa vipimo .
**Hebu tuangalie kwa karibu kila sehemu: \
OpenTelemetry inaleta dhana ya muktadha wa operesheni. Muktadha kimsingi hujumuisha sifa kama vile `trace_id`
(kitambulisho cha operesheni ya sasa) na `span_id`
(kitambulisho cha ombi dogo, na kila jaribio la ombi dogo likiwa na `span_id`
ya kipekee).
Zaidi ya hayo, muktadha unaweza kuwa na maelezo tuli, kama vile jina la nodi ambapo programu imetumwa au jina la mazingira (prod/qa). Sehemu hizi, zinazojulikana kama rasilimali katika istilahi za OpenTelemetry, zimeambatishwa kwa kila kumbukumbu, kipimo au ufuatiliaji kwa urahisi wa utafutaji. Muktadha unaweza pia kujumuisha data inayobadilika, kama vile kitambulisho cha mwisho wa sasa ( `http_path: "GET /user/:id/info"`
), ambayo inaweza kuambatishwa kwa kuchagua kwa vikundi vya kumbukumbu, vipimo, au ufuatiliaji.
Miktadha ya OpenTelemetry inaweza kupitishwa kati ya programu tofauti kwa kutumia itifaki za uenezi wa muktadha. Itifaki hizi zinajumuisha seti za vichwa ambazo huongezwa kwa kila ombi la HTTP au gRPC au vichwa vya ujumbe wa foleni. Hii inaruhusu programu za mkondo kuunda upya muktadha wa operesheni kutoka kwa vichwa hivi.
Hapa kuna mifano ya uenezi wa muktadha:
B3-Uenezi Hii ni seti ya vichwa ( x-b3-*
) vilivyotengenezwa awali kwa ajili ya mfumo wa ufuatiliaji wa Zipkin. Ilibadilishwa kuwa OpenTracing na kutumiwa na zana na maktaba nyingi. B3-Propagation hubeba trace_id
/ span_id
na bendera inayoonyesha ikiwa sampuli ni muhimu.
W3C Trace Context Iliyoundwa na kikundi kazi cha W3C, kiwango hiki huunganisha mbinu mbalimbali za uenezaji wa muktadha katika kiwango kimoja na ndicho chaguomsingi katika OpenTelemetry. Mfano mzuri wa kutumia viwango hivi ni kufuatilia utekelezaji wa ombi kupitia huduma ndogo ndogo zinazotekelezwa na teknolojia tofauti bila kuathiri usahihi wa ufuatiliaji na utatuzi.
Kufuatilia ni mchakato wa kurekodi na baadaye kuibua kalenda ya matukio ya njia ya ombi kupitia huduma ndogo ndogo.
Katika taswira, kila upau unaitwa "span" na ina "span_id" ya kipekee. Muda wa mizizi unajulikana kama "trace" na ina "trace_id" , ambayo hutumika kama kitambulisho cha ombi zima.
Aina hii ya taswira hukuruhusu:
trace_id
na span_id
kwa matumizi katika mawimbi mengine.
Licha ya unyenyekevu wake dhahiri, ukataji miti unabaki kuwa moja ya zana zenye nguvu zaidi za kugundua shida. OpenTelemetry huongeza ukataji miti wa kitamaduni kwa kuongeza maelezo ya muktadha. Hasa, ikiwa ufuatiliaji unaoendelea upo, sifa za `trace_id` na `span_id` huongezwa kiotomatiki kwenye kumbukumbu, zikiziunganisha kwenye rekodi ya matukio. Zaidi ya hayo, sifa za kumbukumbu zinaweza kujumuisha maelezo tuli kutoka kwa muktadha wa OpenTelemetry, kama vile kitambulishi cha nodi, pamoja na maelezo yanayobadilika, kama vile kitambulisho cha sasa cha mwisho cha HTTP (`http_path: "GET /user/:id"`).
Kwa kutumia `trace_id`, unaweza kupata kumbukumbu kutoka kwa huduma zote ndogo zinazohusishwa na ombi la sasa, huku `span_id` hukuruhusu kutofautisha kati ya maombi madogo. Kwa mfano, katika kesi ya kujaribu tena, kumbukumbu kutoka kwa majaribio tofauti zitakuwa na `span_id`s tofauti. Kutumia vitambulishi hivi huwezesha uchanganuzi wa haraka wa tabia ya mfumo mzima katika muda halisi, kuharakisha utambuzi wa tatizo na kuimarisha uthabiti na kutegemewa.
Mkusanyiko wa vipimo hutoa data ya kiasi kuhusu utendaji wa mfumo, kama vile muda wa kusubiri, viwango vya makosa, matumizi ya rasilimali na zaidi. Ufuatiliaji wa wakati halisi wa vipimo hukuruhusu kujibu mara moja mabadiliko ya utendakazi, kuzuia kushindwa na kuisha kwa rasilimali, na kuhakikisha upatikanaji wa juu na kutegemewa kwa programu kwa watumiaji.
Ujumuishaji na mifumo ya uhifadhi wa vipimo na taswira kama vile Prometheus na Grafana hurahisisha kuibua data hii, na hivyo kurahisisha ufuatiliaji kwa kiasi kikubwa.
Vikusanyaji vipimo vya OpenTelemetry vinaoana na viwango vya Prometheus na OpenMetrics, kuwezesha mpito rahisi hadi suluhu za OpenTelemetry bila mabadiliko makubwa. SDK ya OpenTelemetry huruhusu mifano ya trace_id kutumwa pamoja na vipimo, na hivyo kufanya iwezekane kuoanisha vipimo kwa mifano ya kumbukumbu na ufuatiliaji.
Kwa pamoja, kumbukumbu, vipimo na ufuatiliaji huunda mwonekano wa kina wa hali ya mfumo:
Kando na vipengele vitatu vya msingi, OpenTelemetry inajumuisha dhana za Sampuli, Mizigo, na usimamizi wa muktadha wa uendeshaji.
Katika mifumo ya mizigo ya juu, kiasi cha kumbukumbu na athari inakuwa kubwa, inayohitaji rasilimali kubwa kwa miundombinu na kuhifadhi data. Ili kushughulikia suala hili, viwango vya OpenTelemetry vinajumuisha sampuli za mawimbi - uwezo wa kuhamisha sehemu tu ya ufuatiliaji na kumbukumbu. Kwa mfano, unaweza kuhamisha mawimbi ya kina kutoka kwa asilimia ya maombi, maombi ya muda mrefu au maombi ya hitilafu. Mbinu hii inaruhusu sampuli za kutosha kujenga takwimu huku tukihifadhi rasilimali muhimu.
Hata hivyo, ikiwa kila mfumo utaamua kwa kujitegemea maombi yapi ya kufuatilia kwa kina, tunaishia na mwonekano uliogawanyika wa kila ombi. Baadhi ya mifumo inaweza kuuza nje data ya kina ilhali mingine inaweza kusafirisha kwa sehemu au kutosafirisha kabisa.
Ili kutatua tatizo hili, mbinu za uenezi za muktadha za OpenTelemetry hutuma alama ya sampuli pamoja na `trace_id`/`span_id`. Hii inahakikisha kwamba ikiwa huduma ya awali inayopokea ombi la mtumiaji itaamua kwamba ombi linapaswa kufuatiliwa kwa undani, mifumo mingine yote itafuata mkondo huo. Vinginevyo, mifumo yote inapaswa kusafirisha kwa sehemu au isihamishe ishara ili kuhifadhi rasilimali. Mbinu hii inaitwa "Sampuli ya Kichwa" - uamuzi uliofanywa mwanzoni mwa uchakataji wa ombi, ama kwa nasibu au kulingana na sifa fulani za ingizo.
Kando na hilo, OpenTelemetry inaauni "Sampuli ya Mkia," ambapo programu zote husafirisha ishara zote kwa undani kila wakati, lakini bafa ya kati ipo. Baada ya kukusanya data zote, bafa hii huamua ikiwa itahifadhi data kamili au kubaki sampuli ya sehemu tu. Mbinu hii inaruhusu sampuli wakilishi zaidi ya kila aina ya ombi (imefaulu/nde/hitilafu) lakini inahitaji usanidi wa ziada wa miundombinu.
Utaratibu wa Mizigo huruhusu jozi za thamani ya vitufe kiholela kupitishwa pamoja na trace_id
/ span_id
, kupita kiotomatiki kati ya huduma zote ndogo wakati wa kuchakata ombi. Hii ni muhimu kwa kutuma maelezo ya ziada yanayohitajika katika njia yote ya ombi-kama vile maelezo ya mtumiaji au mipangilio ya mazingira ya wakati wa utekelezaji.
Mfano wa kichwa cha kupitisha mizigo kulingana na kiwango cha W3C: tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE,userId=1c30032v5
Hapa kuna mifano ya matumizi ya mizigo:
Kupitisha Maelezo ya Muktadha wa Biashara kama vile userId
, productId
, au deviceId
inaweza kupitishwa kupitia huduma zote ndogo ndogo. Programu zinaweza kuweka maelezo haya kiotomatiki, ikiruhusu utafutaji wa kumbukumbu kulingana na muktadha wa mtumiaji kwa ombi asili.
Mipangilio ya Vigezo Maalum vya Usanidi kwa SDK au miundombinu.
Bendera za Uelekezaji zinazosaidia kupakia visawazishaji kufanya maamuzi ya uelekezaji. Wakati wa majaribio, baadhi ya maombi yanaweza kuhitaji kuelekezwa ili kukejeli nyuma. Kwa kuwa mizigo hupitishwa kiotomatiki kupitia huduma zote, hakuna haja ya kuunda itifaki za ziada - weka tu sheria kwenye mizani ya mzigo.
Kumbuka kwamba ingawa athari ya utendaji wa Mizigo ni ndogo, matumizi mengi yanaweza kuongeza kwa kiasi kikubwa mtandao na mzigo wa huduma. Chagua kwa uangalifu ni data gani unayohitaji kupita kwenye Mizigo ili kuepuka matatizo ya utendaji.
Utekelezaji wa OpenTelemetry katika kiwango cha miundombinu unahusisha kuunganisha viambajengo vya OpenTelemetry kwenye usanifu wa programu na kusanidi miundombinu ya ujumlishaji wa data.
Mchakato huo una hatua nne:
Ujumuishaji wa Programu Katika hatua ya kwanza, SDK za OpenTelemetry huunganishwa moja kwa moja katika programu za kukusanya vipimo, kumbukumbu na ufuatiliaji, kuhakikisha mtiririko unaoendelea wa data kuhusu utendakazi wa kila kipengele cha mfumo.
Kusanidi Wasafirishaji Data iliyokusanywa hupitishwa kutoka kwa programu kupitia wauzaji bidhaa hadi kwa mifumo ya nje kwa usindikaji zaidi, kama vile ukataji miti, ufuatiliaji, ufuatiliaji, au mifumo ya uchanganuzi, kulingana na mahitaji yako.
Ujumlisho na Uhifadhi Hatua hii inaweza kuhusisha kusawazisha data, kuiboresha kwa maelezo ya ziada, na kuunganisha data kutoka kwa vyanzo tofauti ili kuunda mwonekano mmoja wa hali ya mfumo.
Taswira ya Data Hatimaye, data iliyochakatwa inawasilishwa kama dashibodi katika mifumo kama Grafana (ya vipimo na ufuatiliaji) au Kibana (kwa kumbukumbu). Hii inaruhusu timu kutathmini kwa haraka afya ya mfumo, kutambua matatizo na mitindo, na kuweka arifa kulingana na mawimbi yaliyotolewa.
Ili kuunganishwa na programu, unahitaji kuunganisha OpenTelemetry SDK inayofaa kwa lugha ya programu inayotumika au uajiri maktaba na mifumo inayotumia OpenTelemetry moja kwa moja. OpenTelemetry mara nyingi hutumia miingiliano inayotumika sana kutoka kwa maktaba zinazojulikana, ikiruhusu uingizwaji wa kuingia. Kwa mfano, maktaba ya Micrometer hutumiwa kwa kawaida kwa mkusanyiko wa vipimo katika mfumo ikolojia wa Java. OpenTelemetry SDK hutoa utekelezaji wake wa violesura vya Micrometer, kuwezesha usafirishaji wa metriki bila kubadilisha msimbo mkuu wa programu. Zaidi ya hayo, OpenTelemetry inatoa utekelezaji wa violesura vya zamani vya OpenTracing na OpenCensus, kuwezesha uhamiaji laini hadi OpenTelemetry.
Katika mifumo ya TEHAMA, OpenTelemetry inaweza kuwa ufunguo wa mustakabali wa viambajengo vya kuaminika na vyema. Zana hii hurahisisha utatuzi na ufuatiliaji na pia hufungua fursa za uelewa wa kina wa utendaji wa programu na uboreshaji katika kiwango kipya. Jiunge na jumuiya ya OpenTelemetry ili kusaidia kuunda siku zijazo ambapo maendeleo ya nyuma ni rahisi na yenye ufanisi zaidi!