![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Geçmişde, arka tarapy barada aýdanymyzda, adatça bir, uly maglumat bazasy bolan bir uly programma ýüz tutýardyk we gözegçilik üçin hasaba alyş ýeterlikdi. Indi Kubernetes ýaly tehnologiýalaryň kömegi bilen mikroservisler standart boldy. Goýmalar has köp we paýlanýar, adaty ýazgylar indi programmalarymyzdaky näsazlyklary düzetmek we anyklamak üçin ýeterlik däl.
Gözegçiligi guramak üçin ajaýyp çözgüt, OpenTelemetry - paýlanan ulgamlary düzetmek we öndürijilik derňewi üçin ulanyp boljak häzirki zaman gurallar toplumy.
Bu makala, arkadaky optimizasiýa boýunça bilimlerini giňeltmek isleýän IT hünärmenleri üçin niýetlenendir. Aşakda, OpenTelemetry-nyň nämedigini, esasy düşünjelerini we çözmäge kömek edýän meselelerini jikme-jik düşündireris. “OpenTelemetry” -iň arka ulgamlaryna gözegçilik etmek we düzetmek, ygtybarlylygyny we netijeliligini ýokarlandyrmak baradaky çemeleşmäňizi nädip üýtgedip biljekdigi bilen gyzyklanýan bolsaňyz, okaň.
Uly tehnologiýa kompaniýalary ilkinji gezek 2000-nji ýyllaryň ahyrynda paýlanan hasaba alyş we yzarlamak kynçylygy bilen ýüzbe-ýüz boldular. 2010-njy ýylda Google bir kagyz çap etdi,
2014-nji ýylda mikroservisleriň we bulut paýlaýan beýleki ulgamlaryň ösüşini ep-esli aňsatlaşdyrýan Kubernetes ýüze çykdy. Bu köp kompaniýanyň paýlanan hasaba alyş we mikroservisde yzarlamak bilen baglanyşykly meselelere duçar bolmagyna sebäp boldy. Paýlanan yzarlamany standartlaşdyrmak üçin CNCF tarapyndan kabul edilen OpenTracing standarty we Google-yň OpenCensus taslamasy döredildi.
2019-njy ýylda OpenTracing we OpenCensus taslamalary OpenTelemetry ady bilen birleşmegi yglan etdi. Bu platforma, çylşyrymlylygyna garamazdan yzarlamak, hasaba alyş we ölçeg ölçeglerini islendik ulgama bökdençsiz birleşdirmäge mümkinçilik berýän köp ýyllaryň dowamynda toplanan iň oňat tejribeleri özünde jemleýär.
Häzirki wagtda “OpenTelemetry” diňe bir taslama däl; telemetriýa maglumatlary ýygnamak we geçirmek üçin pudaklaýyn standartdyr. Google we Microsoft ýaly hünärmenler we bazaryň öňdebaryjy kompaniýalary tarapyndan döredilýär we goldanýar. Taslama, integrasiýa we ulanmak prosesini ýönekeýleşdirmek üçin täze mümkinçiliklere eýe bolup, ösmegini dowam etdirýär.
“OpenTelemetry”, daşarky dünýä bilen täsirleşmek üçin bir programmanyň haýsy signallary döredip biljekdigini we bu signallaryň nädip ýygnalyp, wizuallaşdyrylyp bilinjekdigini kesgitleýän amaly we gurallaryň toplumydyr. Signallaryň üç esasy görnüşi yzarlamak, hasaba alyş we ölçeg ýygnamakdyr .
** Geliň, her bir komponente has içgin seredeliň: \
“OpenTelemetry” iş şertleri düşünjesini hödürleýär. Kontekstde ilkinji nobatda `trace_id`
(häzirki amal üçin kesgitleýji) we `span_id`
(kiçi haýyş üçin kesgitleýji, kiçi haýyşyň her synanyşygynda özboluşly `span_id`
) ýaly häsiýetler bar.
Mundan başga-da, kontekstde programmanyň ýerleşdirilen düwün ady ýa-da daşky gurşawyň ady (prod / qa) ýaly statiki maglumatlar bolup biler. “OpenTelemetry” terminologiýasyndaky çeşmeler diýlip atlandyrylýan bu meýdanlar, has aňsat gözlemek üçin her gündelige, ölçege ýa-da yzlara birikdirilýär. Kontekstler gündelik nokatlaryň kesgitleýjisi ( `http_path: "GET /user/:id/info"`
) ýaly dinamiki maglumatlary hem öz içine alyp biler, bu ýazgylar, ölçegler ýa-da yzlar toparyna saýlanyp bilner.
“OpenTelemetry” kontekstleri kontekst ýaýratmak protokollaryny ulanyp dürli programmalaryň arasynda geçirilip bilner. Bu teswirnamalar, her HTTP ýa-da gRPC haýyşyna ýa-da nobatlar üçin habar sözbaşylaryna goşulýan sözbaşy toplumlaryndan durýar. Bu, aşaky programmalara bu sözbaşylardan iş kontekstini täzeden gurmaga mümkinçilik berýär.
Kontekstiň ýaýramagynyň käbir mysallary:
B3-ýaýratmak Bu, Zipkin yzarlaýyş ulgamy üçin başda işlenip düzülen sözbaşylar toplumy ( x-b3-*
). OpenTracing-a uýgunlaşdyryldy we köp gurallar we kitaphanalar tarapyndan ulanyldy. B3-ýaýradyş, trace_id
/ span_id
we nusga almagyň zerurdygyny görkezýän baýdak göterýär.
W3C yz konteksti W3C iş topary tarapyndan işlenip düzülen bu ülňü, dürli kontekst ýaýratmak çemeleşmelerini bir standartda birleşdirýär we OpenTelemetry-da esasy zat. Bu ülňüleri ulanmagyň gowy mysaly, gözegçilik we düzediş takyklygyna zyýan bermezden dürli tehnologiýalar bilen ýerine ýetirilen mikroservislerden geçýän haýyşyň ýerine ýetirilişini yzarlamakdyr.
Gözlemek, birnäçe mikroservis arkaly haýyşyň ýolunyň wagtyny ýazga almak we soňundan göz öňüne getirmekdir.
Wizuallaşdyrmada her çyzgy "aralyk" diýilýär we özboluşly "span_id" bolýar. Kök aralygy "yz" diýlip atlandyrylýar we ähli haýyş üçin kesgitleýji bolup hyzmat edýän "yz_id" bar.
Görkezişiň bu görnüşi size:
trace_id
we span_id
döredýär.
Görnüşinden ýönekeýligine garamazdan, hasaba alyş problemalary anyklamak üçin iň güýçli gurallaryň biri bolmagynda galýar. “OpenTelemetry” kontekstli maglumatlary goşmak bilen adaty hasaba alyş işini güýçlendirýär. Hususan-da, işjeň yz bar bolsa, “yz_id” we “span_id” atributlary awtomatiki usulda surnallara goşulýar we olary yz tertibi bilen baglanyşdyrýar. Mundan başga-da, gündelik atributlary düwün kesgitleýji ýaly OpenTelemetry kontekstindäki statiki maglumatlary, şeýle hem häzirki HTTP ahyrky kesgitleýjisi ýaly dinamiki maglumatlary öz içine alyp biler ("http_path:" GET / user /: id "").
"Trace_id" -i ulanyp, häzirki haýyş bilen baglanyşykly ähli mikroservislerden surnallary tapyp bilersiňiz, "span_id" bolsa kiçi haýyşlary tapawutlandyrmaga mümkinçilik berýär. Mysal üçin, gaýtadan synanyşan ýagdaýynda, dürli synanyşyklaryň ýazgylary dürli “span_id” bolar. Bu kesgitleýjileri ulanmak, tutuş ulgamyň özüni alyp barşyny hakyky wagtda derňemäge, meseläni anyklamagy çaltlaşdyrmaga we durnuklylygy we ygtybarlylygy ýokarlandyrmaga mümkinçilik berýär.
Metriki ýygyndy, gijä galmak, ýalňyşlyk derejesi, çeşmeleriň ulanylyşy we ş.m. ýaly ulgamyň işleýşi barada mukdar maglumatlary berýär. Ölçeglere hakyky wagtda gözegçilik etmek öndürijilik üýtgemelerine derrew jogap bermäge, şowsuzlyklaryň we çeşmeleriň tükenmeginiň öňüni almaga we ulanyjylar üçin programmanyň ýokary elýeterliligini we ygtybarlylygyny üpjün etmäge mümkinçilik berýär.
“Prometheus” we “Grafana” ýaly ölçeg saklaýyş we wizuallaşdyryş ulgamlary bilen integrasiýa, gözegçiligi ep-esli aňsatlaşdyryp, bu maglumatlary göz öňüne getirmegi aňsatlaşdyrýar.
“OpenTelemetry” ölçeg kollektorlary, “Prometheus” we “OpenMetrics” standartlaryna laýyk gelýär, bu möhüm üýtgeşmeler bolmazdan, OpenTelemetry çözgütlerine aňsat geçmäge mümkinçilik berýär. “OpenTelemetry SDK” trace_id mysallaryny ölçegler bilen birlikde eksport etmäge mümkinçilik berýär, bu ölçegleri logiki mysallar we yzlar bilen baglanyşdyrmaga mümkinçilik berýär.
Surnallar, ölçegler we yzarlamalar bilelikde ulgamyň ýagdaýyna giňişleýin görnüş döredýär:
Üç esasy komponentden başga-da, OpenTelemetry nusga almak, goşlar we amal kontekstini dolandyrmak düşünjelerini öz içine alýar.
Loadükli ulgamlarda, infrastruktura we maglumatlary saklamak üçin ep-esli serişdeleri talap edýän surnallaryň we yzlaryň göwrümi gaty ulalýar. Bu meseläni çözmek üçin “OpenTelemetry” standartlary signal nusgalaryny öz içine alýar - yzlaryň we surnallaryň diňe bir bölegini eksport etmek ukyby. Mysal üçin, islegleriň, uzak wagtlap haýyşlaryň ýa-da säwlikleriň göteriminden jikme-jik signallary eksport edip bilersiňiz. Bu çemeleşme, möhüm çeşmeleri tygşytlamak bilen statistika gurmak üçin ýeterlik nusga almaga mümkinçilik berýär.
Şeýle-de bolsa, haýsy ulgam haýsy jikme-jikliklere gözegçilik etmelidigini özbaşdak çözýän bolsa, her haýyşyň bölekleýin görnüşi bilen tamamlanarys. Käbir ulgamlar jikme-jik maglumatlary eksport edip biler, beýlekileri diňe bölekleýin eksport edip ýa-da asla eksport edip bilmez.
Bu meseläni çözmek üçin, OpenTelemetry-yň kontekstini ýaýratmak mehanizmleri, “trace_id” / “span_id” bilen birlikde nusga alma baýdagyny iberýär. Bu, ulanyjy haýyşyny alýan ilkinji hyzmat, haýyşyň jikme-jik gözegçilik edilmelidigi barada karar berse, beýleki ulgamlaryň hemmesiniň hem şoňa eýerjekdigini kepillendirýär. Otherwiseogsam, ähli ulgamlar serişdeleri tygşytlamak üçin signallary bölekleýin ýa-da eksport etmeli däldir. Bu çemeleşme "Baş nusga alma" diýilýär - haýyşy gaýtadan işlemegiň başynda tötänleýin ýa-da käbir giriş atributlaryna esaslanýan karar.
Mundan başga-da, OpenTelemetry "Guýruk nusgasyny" goldaýar, bu ýerde ähli programmalar ähli signallary jikme-jik eksport edýär, ýöne aralyk bufer bar. Datahli maglumatlary ýygnandan soň, bufer doly maglumatlary saklamalymy ýa-da diňe bölekleýin nusga saklamalymy diýen karara gelýär. Bu usul, her haýyş kategoriýasynyň has üstünlikli nusgasyny almaga mümkinçilik berýär (üstünlikli / uzyn / ýalňyşlyk), ýöne goşmaça infrastruktura gurulmagyny talap edýär.
Bagaage mehanizmi, açar bahaly jübütleri trace_id
/ span_id
bilen bilelikde geçirmäge mümkinçilik berýär, haýyş işlenende ähli mikroservisleriň arasynda awtomatiki geçýär. Bu, ulanyjy maglumaty ýa-da iş wagtynyň gurşaw sazlamalary ýaly talap ýolunda zerur goşmaça maglumatlary geçirmek üçin peýdalydyr.
W3C standartyna laýyklykda goşlary ibermek üçin sözbaşynyň mysaly: tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE,userId=1c30032v5
Bagaage ulanylyşynyň käbir mysallary:
userId
, productId
” ýa-da deviceId
ýaly işewürlik kontekstindäki maglumatlary ähli mikroservislerden geçirip bolýar. Programmalar, asyl haýyş üçin ulanyjy kontekstinde gündelik gözleglere mümkinçilik berýän bu maglumatlary awtomatiki hasaba alyp biler.
SDK ýa-da infrastruktura üçin ýörite konfigurasiýa parametrleri sazlamalary.
Marşrutlaşdyryş baýdaklary Balanslary ýüklemäge kömek edýän baýdaklar marşrut kararlaryny kabul edýär. Synag wagtynda, käbir haýyşlary arka taraplary masgaralamak üçin ugrukdyrmak zerur bolup biler. Ageükler ähli hyzmatlaryň üsti bilen awtomatiki usulda iberilýändigi sebäpli, goşmaça teswirnamalary döretmegiň zerurlygy ýok - diňe ýük balanserinde düzgün düzüň.
Bagajyň öndürijilik täsiri az bolsa-da, aşa köp ulanmak toruň we hyzmatyň ýüküni ep-esli ýokarlandyryp biler. Performanceerine ýetiriş meselesinden gaça durmak üçin goşlaryň haýsy maglumatlary hakykatdanam geçirmelidigini üns bilen saýlaň.
“OpenTelemetry” -ni infrastruktura derejesinde durmuşa geçirmek, “OpenTelemetry” arka taraplaryny programma arhitekturasyna birleşdirmegi we maglumatlary jemlemek üçin infrastrukturany düzmegi öz içine alýar.
Bu proses dört basgançakdan ybarat:
Programmanyň integrasiýasy Birinji etapda, OpenTelemetry SDK-lary ölçegleri, gündelikleri we yzlary ýygnamak üçin gönüden-göni programmalara birleşdirilip, her ulgam komponentiniň işleýşi barada yzygiderli maglumat akymyny üpjün edýär.
Eksportçylary sazlamak Collectedygnalan maglumatlar, zerurlyklaryňyza baglylykda hasaba alyş, gözegçilik, yzarlamak ýa-da seljeriş ulgamlary ýaly goşmaça işlemek üçin eksportçylaryň üsti bilen daşarky ulgamlara ugrukdyrylýar.
Agregasiýa we ammar Bu etap, maglumatlary kadalaşdyrmak, goşmaça maglumatlar bilen baýlaşdyrmak we ulgamyň ýagdaýyna bitewi görnüş döretmek üçin dürli çeşmelerden maglumatlary birleşdirmegi öz içine alyp biler.
Maglumatlary wizuallaşdyrmak Netijede, gaýtadan işlenen maglumatlar Grafana (ölçegler we yzlar üçin) ýa-da Kibana (surnallar üçin) ýaly ulgamlarda dolandyryş paneli hökmünde görkezilýär. Bu toparlara ulgamyň saglygyna çalt baha bermäge, meseleleri we ugurlary kesgitlemäge we döredilen signallara esaslanýan duýduryşlary döretmäge mümkinçilik berýär.
Bir programma bilen birleşmek üçin ulanylýan programmirleme dili üçin degişli OpenTelemetry SDK birikdirmeli ýa-da OpenTelemetry gönüden-göni goldaýan kitaphanalary we çarçuwalary ulanmaly. “OpenTelemetry” köplenç belli kitaphanalardan giňden ulanylýan interfeýsleri ýerine ýetirýär we açylmaga mümkinçilik berýär. Mysal üçin, Micrometer kitaphanasy köplenç Java ekosistemasynda ölçeg ýygnamak üçin ulanylýar. OpenTelemetry SDK, esasy programma koduny üýtgetmän, metrik eksporta mümkinçilik berýän Micrometer interfeýsleriniň ýerine ýetirilmegini üpjün edýär. Mundan başga-da, “OpenTelemetry” köne “OpenTracing” we “OpenCensus” interfeýsleriniň ýerine ýetirilmegini hödürleýär, bu bolsa “OpenTelemetry” -a göçüp barmagy aňsatlaşdyrýar.
IT ulgamlarynda “OpenTelemetry” ygtybarly we täsirli arka taraplaryň geljeginiň açary bolup biler. Bu gural düzedişleri we gözegçiligi ýönekeýleşdirýär we amaly ýerine ýetirişe we täze derejede optimizasiýa çuňňur düşünmek üçin mümkinçilikler açýar. Yzky ösüşiň has ýönekeý we has täsirli geljegini düzmäge kömek etmek üçin OpenTelemetry jemgyýetine goşulyň!