paint-brush
OpenTelemetry nima va u sizning orqa tomoningiz sifatini qanday yaxshilashi mumkin? tomonidan@ymatigoosa
39,155 o'qishlar
39,155 o'qishlar

OpenTelemetry nima va u sizning orqa tomoningiz sifatini qanday yaxshilashi mumkin?

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

Juda uzoq; O'qish

OpenTelemetry - bu zamonaviy backend tizimlarini kuzatish va disk raskadrovka qilish uchun kuchli vositalar to'plami. U kuzatish, jurnalga yozish va koʻrsatkichlar toʻplamini oʻzida mujassam etgan boʻlib, ilovaning ishlashi va ishonchliligining yagona koʻrinishini taʼminlaydi. Ushbu qo'llanma uning tarixi, asosiy tushunchalari va amalga oshirilishini o'rganadi, bu esa mikroservislar va taqsimlangan tizimlarni optimallashtirish uchun zarurdir.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - OpenTelemetry nima va u sizning orqa tomoningiz sifatini qanday yaxshilashi mumkin?
Dmitrii Pakhomov HackerNoon profile picture
0-item

Ilgari, biz backend haqida gapirganda, biz odatda bitta, katta ma'lumotlar bazasiga ega bo'lgan bitta katta dasturga murojaat qilardik va monitoring uchun jurnallar etarli edi. Endi Kubernetes kabi texnologiyalar tufayli mikroservislar standartga aylandi. Ilovalar ko'proq va tarqatilgan va an'anaviy jurnallar endi ilovalarimizdagi muammolarni tuzatish va tashxislash uchun etarli emas.

Monitoringni tashkil qilish uchun ajoyib yechim OpenTelemetry bo'lib, u nosozliklarni tuzatish va tarqatilgan tizimlarning ishlashini tahlil qilish uchun ishlatilishi mumkin bo'lgan zamonaviy asboblar to'plamidir.


Ushbu maqola backend optimallashtirish bo'yicha o'z bilimlarini kengaytirishga intilayotgan IT mutaxassislari uchun mo'ljallangan. Quyida biz OpenTelemetry nima ekanligini, uning asosiy tushunchalari va u hal qilishga yordam beradigan muammolarni batafsil bayon qilamiz. Agar siz OpenTelemetry backend tizimlarini monitoring qilish va disk raskadrovka qilishga bo'lgan yondashuvingizni qanday o'zgartirishi, ularning ishonchliligi va samaradorligini oshirishi bilan qiziqsangiz - o'qing.


OpenTelemetry qisqacha tarixi

Yirik texnologiya kompaniyalari birinchi marta 2000-yillarning oxirida taqsimlangan loglarni yozish va kuzatish muammosiga duch kelishdi. 2010 yilda Google bir maqola chop etdi, Dapper, keng ko'lamli taqsimlangan tizimlarni kuzatish infratuzilmasi , bu Twitter’ning 2012-yilda chiqarilgan Zipkin kuzatuv vositasi uchun asos yaratdi.


2014 yilda Kubernetes paydo bo'ldi, bu mikroservislar va boshqa bulutli taqsimlangan tizimlarning rivojlanishini sezilarli darajada soddalashtirdi. Bu ko'plab kompaniyalarning mikroservislarda taqsimlangan ro'yxatga olish va kuzatish bilan bog'liq muammolarga duch kelishiga olib keldi. Tarqalgan kuzatuvni standartlashtirish uchun CNCF tomonidan qabul qilingan OpenTracing standarti va Googlening OpenCensus loyihasi yaratildi.


2019 yilda OpenTracing va OpenCensus loyihalari OpenTelemetry nomi ostida birlashishni e'lon qildi. Ushbu platforma ko'p yillar davomida to'plangan eng yaxshi tajribalarni o'zida mujassam etgan bo'lib, ularning murakkabligidan qat'i nazar, kuzatuv, jurnal va o'lchovlarni istalgan tizimga uzluksiz integratsiyalash imkonini beradi.


Bugungi kunda OpenTelemetry shunchaki loyiha emas; bu telemetriya ma'lumotlarini yig'ish va uzatish uchun sanoat standartidir. U Google va Microsoft kabi mutaxassislar jamoasi va bozorda yetakchi kompaniyalar tomonidan ishlab chiqilgan va qo‘llab-quvvatlangan. Loyiha integratsiya va foydalanish jarayonini soddalashtirish uchun yangi imkoniyatlarga ega bo'lgan holda rivojlanishda davom etmoqda.


Ichkarida nima bor?

OpenTelemetry - bu ilova tashqi dunyo bilan o'zaro aloqada bo'lish uchun qanday signallarni yaratishi mumkinligini va ilovalar va umuman tizimning holatini kuzatish uchun bu signallarni qanday yig'ish va vizualizatsiya qilish mumkinligini aniqlaydigan keng qamrovli amaliyotlar va vositalar to'plami. Signallarning uchta asosiy turi kuzatuv, jurnalga yozish va o'lchovlarni yig'ishdir .


** Keling, har bir komponentni batafsil ko'rib chiqaylik: \

Kontekstlar

OpenTelemetry operatsiya kontekstlari tushunchasini taqdim etadi. Kontekst birinchi navbatda `trace_id` (joriy operatsiya uchun identifikator) va `span_id` (sub-so'rov uchun identifikator, sub-so'rovning har bir qayta urinishi noyob `span_id` ega) kabi atributlarni o'z ichiga oladi.


Bundan tashqari, kontekst statik ma'lumotlarni o'z ichiga olishi mumkin, masalan, dastur o'rnatilgan tugun nomi yoki muhit nomi (prod/qa). OpenTelemetry terminologiyasida manbalar sifatida tanilgan ushbu maydonlar qidiruvni osonlashtirish uchun har bir jurnalga, metrikaga yoki izga biriktirilgan. Kontekstlar shuningdek, joriy oxirgi nuqta identifikatori ( `http_path: "GET /user/:id/info"` ) kabi dinamik ma'lumotlarni o'z ichiga olishi mumkin, ular tanlab jurnallar, o'lchovlar yoki izlar guruhlariga biriktirilishi mumkin.


OpenTelemetry kontekstlari kontekstni tarqatish protokollari yordamida turli ilovalar o'rtasida uzatilishi mumkin. Ushbu protokollar har bir HTTP yoki gRPC so'roviga qo'shiladigan sarlavhalar to'plamlaridan yoki navbatlar uchun xabarlar sarlavhalaridan iborat. Bu quyi oqim ilovalariga ushbu sarlavhalardan operatsiya kontekstini qayta qurish imkonini beradi.


Bu erda kontekstni tarqatishning ba'zi misollari:

  1. B3-Propagation Bu dastlab Zipkin kuzatuv tizimi uchun ishlab chiqilgan sarlavhalar to'plami ( x-b3-* ). U OpenTracing-ga moslashtirilgan va ko'plab vositalar va kutubxonalar tomonidan ishlatilgan. B3-Propagation trace_id / span_id va namuna olish zarurligini ko'rsatadigan bayroqni o'z ichiga oladi.


  2. W3C Trace Context W3C ishchi guruhi tomonidan ishlab chiqilgan ushbu standart kontekstni tarqatish bo'yicha turli yondashuvlarni yagona standartda birlashtiradi va OpenTelemetry-da standart hisoblanadi. Ushbu standartlarni qo'llashning yaxshi namunasi - monitoring va disk raskadrovka aniqligini buzmasdan, turli texnologiyalar bilan amalga oshirilgan mikroservislar orqali o'tadigan so'rovning bajarilishini kuzatish.

Kuzatish

Kuzatish - bu bir nechta mikroservislar orqali so'rov yo'lining vaqt jadvalini yozib olish va keyinchalik vizualizatsiya qilish jarayoni.


[rasm manbai: https://opentelemetry.io/docs/demo/screenshots/]


Vizualizatsiyada har bir satr "span" deb ataladi va o'ziga xos "span_id" ga ega. Ildiz oralig'i "iz" deb ataladi va butun so'rov uchun identifikator bo'lib xizmat qiluvchi "trace_id" ga ega.


Ushbu turdagi vizualizatsiya sizga quyidagilarga imkon beradi:

  • Optimallashtirishga muhtoj bo'lgan qiyinchiliklarni aniqlash uchun turli tizimlar va ma'lumotlar bazalari bo'ylab so'rovlarni bajarish vaqtini tahlil qiling.
  • Xizmatlar orasidagi tsiklik bog'liqlikni aniqlang.
  • Ikki nusxadagi so'rovlarni toping. Kuzatuv ma'lumotlaridan foydalanib, siz mikroservislar xaritasini yaratish yoki operatsiyani qayta ishlash jarayonida turli tizimlar bo'ylab vaqtni taqsimlash kabi qo'shimcha tahlillarni ham yaratishingiz mumkin. Vaqt jadvallarini ko'rish uchun kuzatuv ma'lumotlaridan foydalanmasangiz ham, OpenTelemetry boshqa signallarda foydalanish uchun trace_id va span_id yaratadi.


Jurnallar

Ko'rinib turgan soddaligiga qaramay, jurnallar muammolarni tashxislash uchun eng kuchli vositalardan biri bo'lib qolmoqda. OpenTelemetry kontekstli ma'lumotlarni qo'shish orqali an'anaviy jurnalni yaxshilaydi. Xususan, agar faol iz mavjud boʻlsa, “trace_id” va “span_id” atributlari avtomatik ravishda jurnallarga qoʻshiladi va ularni kuzatish vaqt jadvaliga bogʻlaydi. Bundan tashqari, jurnal atributlari OpenTelemetry kontekstidan tugun identifikatori kabi statik ma'lumotlarni hamda joriy HTTP so'nggi nuqta identifikatori (`http_path: "GET /user/:id"`) kabi dinamik ma'lumotlarni o'z ichiga olishi mumkin.


"Trace_id" dan foydalanib, joriy so'rov bilan bog'liq bo'lgan barcha mikroservislardan jurnallarni topishingiz mumkin, "span_id" esa pastki so'rovlarni farqlash imkonini beradi. Misol uchun, takroriy urinishlar bo'lsa, turli urinishlardagi jurnallar har xil "span_id" ga ega bo'ladi. Ushbu identifikatorlardan foydalanish real vaqt rejimida butun tizim xatti-harakatlarini tezkor tahlil qilish imkonini beradi, muammolarni aniqlashni tezlashtiradi va barqarorlik va ishonchlilikni oshiradi.


Ko'rsatkichlar

Ko'rsatkichlar to'plami kechikish, xatolik darajasi, resurslardan foydalanish va boshqalar kabi tizim ishlashi haqida miqdoriy ma'lumotlarni taqdim etadi. Ko'rsatkichlarning real vaqt rejimida monitoringi unumdorlikdagi o'zgarishlarga zudlik bilan javob berish, nosozliklar va resurslarning tugashini oldini olish, foydalanuvchilar uchun ilovaning yuqori mavjudligi va ishonchliligini ta'minlash imkonini beradi.


Prometey va Grafana kabi metrik saqlash va vizualizatsiya tizimlari bilan integratsiya ushbu ma'lumotlarni vizualizatsiya qilishni osonlashtiradi va monitoringni sezilarli darajada soddalashtiradi.


[rasm manbai: https://grafana.com/blog/2021/06/22/grafana-dashboard-showcase-visualizations-for-prometheus-home-energy-usage-github-and-more/]


Metrik kollektorlar

OpenTelemetry metrik kollektorlari Prometey va OpenMetrics standartlari bilan mos keladi, bu esa OpenTelemetry yechimlariga sezilarli o'zgarishlarsiz oson o'tish imkonini beradi. OpenTelemetry SDK trace_id misollarini ko'rsatkichlar bilan birga eksport qilish imkonini beradi, bu ko'rsatkichlarni jurnal misollari va izlari bilan bog'lash imkonini beradi.


Signal korrelyatsiyasi

Jurnallar, ko'rsatkichlar va kuzatish birgalikda tizim holatining to'liq ko'rinishini yaratadi:

  • Jurnallar tizim hodisalari haqida ma'lumot beradi, bu esa xatolarni tezda aniqlash va hal qilish imkonini beradi.
  • Ko'rsatkichlar javob vaqtlari yoki xatolik darajasi kabi tizimning sifat va miqdoriy ko'rsatkichlarini aks ettiradi.
  • Tracing bu ko'rinishni turli tizim komponentlari orqali so'rovni bajarish yo'lini ko'rsatish orqali to'ldiradi, ularning o'zaro aloqalarini tushunishga yordam beradi. Jurnallar, izlar va ko'rsatkichlar o'rtasidagi aniq korrelyatsiya OpenTelemetryning o'ziga xos xususiyati hisoblanadi. Misol uchun, Grafana foydalanuvchilarga jurnalni ko'rishda tegishli kuzatuv va so'rov ko'rsatkichlarini ko'rish imkonini beradi, bu platformaning qulayligi va samaradorligini sezilarli darajada oshiradi.



[rasm manbai: https://grafana.com/blog/2020/03/31/how-to-successfully-correlate-metrics-logs-and-traces-in-grafana/]


Uchta asosiy komponentdan tashqari, OpenTelemetry Namuna olish, Bagaj va operatsiya kontekstini boshqarish tushunchalarini o'z ichiga oladi.


Namuna olish

Yuqori yuklangan tizimlarda jurnallar va izlar hajmi juda katta bo'lib, infratuzilma va ma'lumotlarni saqlash uchun katta resurslarni talab qiladi. Ushbu muammoni hal qilish uchun OpenTelemetry standartlari signallarni tanlashni o'z ichiga oladi - izlar va jurnallarning faqat bir qismini eksport qilish imkoniyati. Misol uchun, so'rovlar foizidan, uzoq davom etgan so'rovlardan yoki xato so'rovlaridan batafsil signallarni eksport qilishingiz mumkin. Ushbu yondashuv muhim resurslarni tejash bilan birga statistik ma'lumotlarni yaratish uchun etarli miqdorda namuna olish imkonini beradi.


Biroq, agar har bir tizim mustaqil ravishda qaysi so'rovlarni batafsil nazorat qilishni hal qilsa, biz har bir so'rovning bo'lak ko'rinishiga ega bo'lamiz. Ba'zi tizimlar batafsil ma'lumotlarni eksport qilishi mumkin, boshqalari esa qisman eksport qilishi yoki umuman eksport qilmasligi mumkin.


Ushbu muammoni hal qilish uchun OpenTelemetry kontekstni tarqatish mexanizmlari `trace_id`/`span_id` bilan birga namuna olish bayrog`ini uzatadi. Bu, agar foydalanuvchi so'rovini qabul qiladigan dastlabki xizmat so'rovni batafsil nazorat qilish kerak deb qaror qilsa, boshqa barcha tizimlar ham shunga mos kelishini ta'minlaydi. Aks holda, resurslarni tejash uchun barcha tizimlar signallarni qisman yoki eksport qilmasligi kerak. Ushbu yondashuv "Bosh namuna olish" deb ataladi - so'rovni qayta ishlash boshida tasodifiy yoki ba'zi kiritilgan atributlarga asoslangan qaror.


Bundan tashqari, OpenTelemetry "Tail Sampling" ni qo'llab-quvvatlaydi, bu erda barcha ilovalar har doim barcha signallarni batafsil eksport qiladi, ammo oraliq bufer mavjud. Barcha ma'lumotlarni to'plagandan so'ng, bu bufer to'liq ma'lumotlarni saqlash yoki faqat qisman namunani saqlash haqida qaror qabul qiladi. Bu usul har bir soʻrov toifasi (muvaffaqiyatli/uzoq/xato) boʻyicha koʻproq vakillik namunasini olish imkonini beradi, lekin qoʻshimcha infratuzilmani sozlashni talab qiladi.


Bagaj

Bagaj mexanizmi trace_id / span_id bilan ixtiyoriy kalit-qiymat juftlarini uzatishga imkon beradi, so'rovni qayta ishlash jarayonida avtomatik ravishda barcha mikroservislar o'rtasida o'tadi. Bu so'rov yo'li bo'ylab zarur bo'lgan qo'shimcha ma'lumotlarni uzatish uchun foydalidir, masalan, foydalanuvchi ma'lumotlari yoki ish vaqti muhiti sozlamalari.

W3C standarti bo'yicha bagajni jo'natish uchun sarlavhaga misol: tracestate: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE,userId=1c30032v5

Mana, Bagajdan foydalanishga misollar:

  • userId , productId yoki deviceId kabi biznes konteksti maʼlumotlarini uzatish barcha mikroservislar orqali oʻtkazilishi mumkin. Ilovalar ushbu ma'lumotni avtomatik ravishda qayd etishi mumkin, bu esa asl so'rov uchun foydalanuvchi konteksti bo'yicha jurnalni qidirish imkonini beradi.

  • SDK yoki infratuzilma uchun maxsus konfiguratsiya parametrlari sozlamalari.

  • Marshrutlash bayroqlari Yuk balanslovchilariga marshrutlash qarorlarini qabul qilishda yordam beruvchi bayroqlar. Sinov paytida, ba'zi so'rovlar soxta backendlarga yo'naltirilishi kerak bo'lishi mumkin. Bagaj barcha xizmatlar orqali avtomatik ravishda uzatilganligi sababli, qo'shimcha protokollar yaratishning hojati yo'q - faqat yuk balanslagichida qoida o'rnating.


E'tibor bering, Bagajning ishlashga ta'siri minimal bo'lsa-da, ortiqcha foydalanish tarmoq va xizmat yukini sezilarli darajada oshirishi mumkin. Ishlash bilan bog'liq muammolarga yo'l qo'ymaslik uchun Bagaj orqali qaysi ma'lumotlarni o'tkazish kerakligini diqqat bilan tanlang.

Infratuzilmani amalga oshirish

OpenTelemetry-ni infratuzilma darajasida amalga oshirish OpenTelemetry-ni dastur arxitekturasiga integratsiyalash va ma'lumotlarni yig'ish uchun infratuzilmani sozlashni o'z ichiga oladi.


Jarayon to'rt bosqichdan iborat:


  1. Ilovalarni integratsiyalashuvi Birinchi bosqichda OpenTelemetry SDK’lari ko‘rsatkichlar, jurnallar va izlarni to‘plash uchun to‘g‘ridan-to‘g‘ri ilovalarga birlashtirilib, har bir tizim komponentining ishlashi haqida doimiy ma’lumotlar oqimini ta’minlaydi.


  2. Eksportchilarni sozlash To'plangan ma'lumotlar sizning ehtiyojlaringizga qarab, ilovalardan eksportchilar orqali tashqi tizimlarga, masalan, jurnalga yozish, monitoring, kuzatish yoki tahliliy tizimlar kabi keyingi ishlov berish uchun yo'naltiriladi.


  3. Birlashtirish va saqlash Ushbu bosqich ma'lumotlarni normallashtirish, uni qo'shimcha ma'lumotlar bilan boyitish va tizim holatining yagona ko'rinishini yaratish uchun turli manbalardan olingan ma'lumotlarni birlashtirishni o'z ichiga olishi mumkin.


  4. Ma'lumotlarni vizuallashtirish Nihoyat, qayta ishlangan ma'lumotlar Grafana (metrikalar va izlar uchun) yoki Kibana (jurnallar uchun) kabi tizimlarda asboblar paneli sifatida taqdim etiladi. Bu jamoalarga tizimning sog‘lig‘ini tezkor baholash, muammolar va tendentsiyalarni aniqlash hamda yaratilgan signallar asosida ogohlantirishlarni o‘rnatish imkonini beradi.


Ilovani amalga oshirish

Ilova bilan integratsiya qilish uchun siz foydalanilayotgan dasturlash tili uchun tegishli OpenTelemetry SDK ni ulashingiz yoki OpenTelemetry-ni bevosita qo'llab-quvvatlaydigan kutubxonalar va ramkalardan foydalanishingiz kerak. OpenTelemetry ko'pincha ma'lum kutubxonalardan keng qo'llaniladigan interfeyslarni qo'llaydi, bu esa o'zgarishlarni almashtirish imkonini beradi. Misol uchun, Micrometer kutubxonasi odatda Java ekotizimida o'lchovlarni yig'ish uchun ishlatiladi. OpenTelemetry SDK asosiy dastur kodini o'zgartirmasdan metrik eksport qilish imkonini beruvchi Micrometer interfeyslarini amalga oshirishni ta'minlaydi. Bundan tashqari, OpenTelemetry eski OpenTracing va OpenCensus interfeyslarini amalga oshirishni taklif etadi, bu esa OpenTelemetry-ga silliq o'tishni osonlashtiradi.

Xulosa

IT tizimlarida OpenTelemetry ishonchli va samarali backends kelajagining kalitiga aylanishi mumkin. Ushbu vosita disk raskadrovka va monitoringni soddalashtiradi, shuningdek, dastur ishlashi va optimallashtirishni yangi darajada chuqur tushunish uchun imkoniyatlar ochadi. OpenTelemetry hamjamiyatiga qoʻshiling, bu yerda backend ishlab chiqish osonroq va samaraliroq boʻlgan kelajakni shakllantirishga yordam bering!