paint-brush
“OpenTelemetry” näme we arkaňyzyň hilini nädip ýokarlandyryp biler? tarapyndan@ymatigoosa
39,155 oka
39,155 oka

“OpenTelemetry” näme we arkaňyzyň hilini nädip ýokarlandyryp biler?

tarapyndan Dmitrii Pakhomov8m2024/06/19
Read on Terminal Reader
Read this story w/o Javascript

Örän uzyn; Okamak

“OpenTelemetry” häzirki zaman arka ulgamlaryna gözegçilik etmek we düzetmek üçin güýçli gural. Gözleg, hasaba alyş we ölçeg kolleksiýasyny birleşdirýär, amaly ýerine ýetirişiň we ygtybarlylygyň bitewi görnüşini üpjün edýär. Bu gollanma, taryhyny, esasy düşünjelerini we durmuşa geçirilişini öwrenýär, mikroservisleri we paýlanan ulgamlary optimizirlemek üçin zerur edýär.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - “OpenTelemetry” näme we arkaňyzyň hilini nädip ýokarlandyryp biler?
Dmitrii Pakhomov HackerNoon profile picture
0-item

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ň.


“OpenTelemetry” -nyň gysgaça taryhy

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, Dapper, Uly göwrümli paýlanan ulgamlar yzarlaýyş infrastrukturasy 2012-nji ýylda çykan “Twitter” -iň gözleg guraly Zipkin üçin esas döretdi.


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.


Içinde näme?

“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ň: \

Mazmuny

“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:

  1. 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.


  2. 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

Gözlemek, birnäçe mikroservis arkaly haýyşyň ýolunyň wagtyny ýazga almak we soňundan göz öňüne getirmekdir.


[surat çeşmesi: https://opentelemetry.io/docs/demo/screenshots/]


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:

  • Optimizasiýa zerur bolan päsgelçilikleri kesgitlemek üçin dürli ulgamlarda we maglumat bazalarynda haýyşlaryň ýerine ýetiriliş wagtyny derňäň.
  • Hyzmatlaryň arasynda siklik baglylyklary kesgitläň.
  • Dublikat haýyşlary tapyň. Gözleg maglumatlaryny ulanyp, mikroservis kartasyny döretmek ýa-da amallary gaýtadan işlemek wagtynda dürli ulgamlarda wagt paýlamak ýaly goşmaça analitikleri gurup bilersiňiz. Wagt görkezijilerini göz öňüne getirmek üçin yz maglumatlaryny ulanmasaňyzam, OpenTelemetry beýleki signallarda ulanmak üçin trace_id we span_id döredýär.


Surnallar

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.


Metrika

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.


[surat çeşmesi: https://grafana.com/blog/2021/06/22/grafana-dashboard-showcase-visualizations-for-prometheus-home-energy-usage-github-and-more/]


Metrik ýygnaýjylar

“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.


Signal arabaglanyşygy

Surnallar, ölçegler we yzarlamalar bilelikde ulgamyň ýagdaýyna giňişleýin görnüş döredýär:

  • Surnallar ulgam hadysalary barada maglumat berýär, ýalňyşlary çalt kesgitlemäge we çözmäge mümkinçilik berýär.
  • Metrika, jogap wagtlary ýa-da ýalňyşlyk derejeleri ýaly ulgamyň hil we mukdar görkezijilerini görkezýär.
  • Gözleg, bu görnüşi dürli ulgam komponentleriniň üsti bilen haýyş ýerine ýetiriş ýoluny görkezmek bilen baglanyşdyrýar, olaryň özara baglanyşyklaryna düşünmäge kömek edýär. Surnallaryň, yzlaryň we ölçegleriň arasyndaky aýdyň baglanyşyk, OpenTelemetry-nyň tapawutly aýratynlygydyr. Mysal üçin, Grafana ulanyjylara degişli yzy görmäge we gündeligi göreniňizde ölçeg talap etmäge mümkinçilik berýär, platformanyň ulanylyşyny we netijeliligini ep-esli ýokarlandyrýar.



[surat çeşmesi: https://grafana.com/blog/2020/03/31/how-to-successful-correlate-metrics-logs-and-traces-in-grafana/]


Üç esasy komponentden başga-da, OpenTelemetry nusga almak, goşlar we amal kontekstini dolandyrmak düşünjelerini öz içine alýar.


Nusga almak

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.


Goşlar

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ň.

Infrastrukturany durmuşa geçirmek

“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:


  1. 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.


  2. 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.


  3. 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.


  4. 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.


Programmany durmuşa geçirmek

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.

Netije

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ň!