Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

SRE/DevOps muhandislari muhitida bir kun kelib mijoz (yoki monitoring tizimi) paydo bo'lishi va "hamma narsa yo'qolgan" deb xabar berishi hech kimni ajablantirmaydi: sayt ishlamayapti, to'lovlar o'tmaydi, hayot chirimoqda. ... Bunday vaziyatda qanchalik yordam berishni xohlasangiz ham, oddiy va tushunarli vositasiz buni qilish juda qiyin bo'lishi mumkin. Ko'pincha muammo dastur kodining o'zida yashiringan, siz uni mahalliylashtirishingiz kerak.

Va qayg'uda va quvonchda ...

Shunday bo'ldiki, biz Nyu-Reliktni uzoq va chuqur sevib qoldik. Bu dastur ishlashini kuzatish uchun ajoyib vosita bo'lgan va shunday bo'lib qoladi, shuningdek, mikroservis arxitekturasini (uning agenti yordamida) va boshqa ko'p narsalarni jihozlash imkonini beradi. Va agar xizmatning narx siyosatidagi o'zgarishlar bo'lmaganida, hamma narsa ajoyib bo'lishi mumkin edi: bu XARAJATLAR 2013 yildan 3+ marta o'sdi. Bundan tashqari, o'tgan yildan boshlab, sinov hisobini olish shaxsiy menejer bilan muloqot qilishni talab qiladi, bu esa mahsulotni potentsial mijozga taqdim etishni qiyinlashtiradi.

Odatiy holat: yangi relikt "doimiy asosda" kerak emas, ular buni faqat muammolar boshlanganda eslashadi. Ammo siz hali ham muntazam ravishda to'lashingiz kerak (har bir server uchun oyiga 140 AQSh dollari) va avtomatik ravishda kengaytiriladigan bulut infratuzilmasida summalar ancha katta bo'ladi. Toʻlash imkoniyati mavjud boʻlsa-da, “New Relic”ni yoqish ilovani qayta ishga tushirishni talab qiladi, bu esa u boshlangan muammoli vaziyatni yoʻqotishiga olib kelishi mumkin. Yaqinda New Relic yangi tarif rejasini taqdim etdi - asoslari, - bu birinchi qarashda "Professional" ga oqilona muqobil bo'lib ko'rinadi... lekin diqqat bilan o'rganib chiqqach, ba'zi muhim funktsiyalar etishmayotganligi ma'lum bo'ldi (xususan, unda yo'q). Asosiy operatsiyalar, Oʻzaro ilovalarni kuzatish, Tarqalgan kuzatuv).

Natijada, biz arzonroq muqobil qidirish haqida o'ylay boshladik va bizning tanlovimiz ikkita xizmatga tushdi: Datadog va Atatus. Nega ularda?

Raqobatchilar haqida

Bozorda boshqa echimlar borligini darhol aytaman. Biz hatto Open Source variantlarini ham ko'rib chiqdik, lekin har bir mijozning o'z-o'zidan joylashtirilgan echimlarni joylashtirish imkoniyati mavjud emas... - qo'shimcha ravishda ular qo'shimcha texnik xizmat ko'rsatishni talab qiladi. Biz tanlagan juftlik eng yaqin bo'lib chiqdi bizning ehtiyojlarimiz:

  • PHP ilovalari uchun o'rnatilgan va ishlab chiqilgan qo'llab-quvvatlash (mijozlarimiz steklari juda xilma-xil, ammo bu New Relic-ga muqobil qidirish kontekstida aniq etakchi);
  • arzon narx (har bir uy egasi uchun oyiga 100 AQSh dollaridan kam);
  • avtomatik asboblar;
  • Kubernetes bilan integratsiya;
  • New Relic interfeysiga o'xshashlik sezilarli ortiqcha (chunki bizning muhandislarimiz bunga o'rganib qolgan).

Shuning uchun, dastlabki tanlov bosqichida biz bir nechta mashhur echimlarni yo'q qildik, xususan:

  • Tideways, AppDynamics va Dynatrace - xarajat uchun;
  • Stackify Rossiya Federatsiyasida bloklangan va juda kam ma'lumotlarni ko'rsatadi.

Maqolaning qolgan qismi shunday tuzilganki, birinchi navbatda ko'rib chiqilayotgan yechimlar qisqacha taqdim etiladi, shundan so'ng men New Relic bilan odatiy o'zaro aloqamiz va boshqa xizmatlarda shunga o'xshash operatsiyalarni bajarish tajribasi/taassurotlari haqida gapiraman.

Tanlangan raqobatchilarning taqdimoti

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash
haqida Yangi Relic, ehtimol hamma eshitgandir? Ushbu xizmat o'z rivojlanishini 10 yildan ko'proq vaqt oldin, 2008 yilda boshlagan. Biz undan 2012-yildan beri faol foydalanmoqdamiz va PHP, Ruby va Python-da juda ko'p sonli ilovalarni integratsiyalashda hech qanday muammoga duch kelmadik, shuningdek, C# va Go bilan integratsiya qilish tajribasiga egamiz. Xizmat mualliflari ilovalarni, infratuzilmani monitoring qilish, mikroservis infratuzilmalarini kuzatish, foydalanuvchi qurilmalari uchun qulay ilovalarni yaratish va boshqalar uchun yechimlarga ega.

Biroq, New Relic agenti xususiy protokollarda ishlaydi va OpenTracing-ni qo'llab-quvvatlamaydi. Kengaytirilgan asboblar Yangi Relic uchun maxsus tahrirlarni talab qiladi. Va nihoyat, Kubernetes qo'llab-quvvatlashi hali ham eksperimental.

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash
Uning rivojlanishi 2010 yilda boshlangan datadog Kubernetes muhitida foydalanish nuqtai nazaridan New Relic-ga qaraganda sezilarli darajada qiziqroq ko'rinadi. Xususan, u NGINX Ingress, jurnallar yig'ish, statsd va OpenTracing protokollari bilan integratsiyani qo'llab-quvvatlaydi, bu sizga foydalanuvchi so'rovini u tugallangandan boshlab kuzatib borish, shuningdek ushbu so'rov uchun jurnallarni topish imkonini beradi (ikkalasi ham veb-server tomonida). va yon iste'molchida).

Datadog-dan foydalanganda biz u ba'zan mikroservis xaritasini noto'g'ri tuzganligi va ba'zi texnik kamchiliklarga duch keldik. Masalan, u xizmat turini noto‘g‘ri aniqladi (Djangoni keshlash xizmati deb adashib) va mashhur Predis kutubxonasidan foydalangan holda PHP ilovasida 500 ta xatoga yo‘l qo‘ydi.

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash
Atatus — eng yosh asbob; xizmat 2014 yilda ishga tushirilgan. Uning marketing byudjeti yuqorida sanab o'tilgan raqobatchilardan ancha past, eslatmalar juda kam uchraydi. Biroq, asbobning o'zi nafaqat imkoniyatlari (APM, Brauzer monitoringi va boshqalar), balki tashqi ko'rinishida ham New Relic-ga juda o'xshaydi.

Muhim kamchilik shundaki, u faqat Node.js va PHP ni qo'llab-quvvatlaydi. Boshqa tomondan, u Datadog-ga qaraganda ancha yaxshi amalga oshiriladi. Ikkinchisidan farqli o'laroq, Atatus ilovalardan kodga o'zgartirishlar kiritish yoki qo'shimcha teglar qo'shishni talab qilmaydi.

New Relic bilan qanday ishlaymiz

Keling, odatda New Relic-dan qanday foydalanishimizni aniqlaymiz. Aytaylik, bizda hal qilinishi kerak bo'lgan muammo bor:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Grafikda buni ko'rish oson boshoq - Keling, tahlil qilaylik. New Relic-da veb-ilova uchun veb-tranzaksiyalar darhol tanlanadi, barcha komponentlar ishlash grafigida ko'rsatiladi, xatolik darajasi, so'rov tezligi panellari mavjud... Eng muhimi shundaki, to'g'ridan-to'g'ri ushbu panellardan turli xil dasturlar o'rtasida harakat qilishingiz mumkin. ilova qismlari (masalan, MySQL-ni bosish ma'lumotlar bazasi bo'limiga olib keladi).

Ko'rib chiqilayotgan misolda biz faollikning o'sishini ko'ramiz PHP, ushbu diagrammani bosing va avtomatik ravishda o'ting Jurnallar:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

MVC modelidagi nazoratchilar bo'lgan tranzaktsiyalar ro'yxati allaqachon tartiblangan Eng ko'p vaqt talab qiladigan, bu juda qulay: biz dastur nima qilishini darhol ko'ramiz. New Relic tomonidan avtomatik ravishda to'plangan uzoq so'rovlarga misollar. Saralashni almashtirish orqali topish oson:

  • eng ko'p yuklangan dastur boshqaruvchisi;
  • tez-tez so'raladigan boshqaruvchi;
  • boshqaruvchilarning eng sekin.

Bundan tashqari, siz har bir tranzaksiyani kengaytirishingiz va kod bajarilgan paytda dastur nima qilayotganini ko'rishingiz mumkin:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Va nihoyat, dastur uzoq so'rovlar izlari misollarini saqlaydi (2 soniyadan ko'proq vaqt talab qiladiganlar). Mana uzoq tranzaksiya uchun panel:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Ko'rinib turibdiki, ikkita usul juda ko'p vaqtni oladi va bir vaqtning o'zida so'rov bajarilgan vaqtda uning URI va domeni ham ko'rsatiladi. Ko'pincha bu jurnallarda so'rovni topishga yordam beradi. ga borish Tafsilotlarni kuzatish, bu usullar qaerdan chaqirilganini ko'rishingiz mumkin:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Va ichkarida Ma'lumotlar bazasi so'rovlari — dastur ishlayotgan vaqtda bajarilgan maʼlumotlar bazalariga soʻrovlarni baholash:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Ushbu bilimlar bilan qurollangan holda, biz dastur nima uchun sekinlashayotganini baholay olamiz va muammoni hal qilish strategiyasini ishlab chiqish uchun ishlab chiquvchi bilan hamkorlik qilamiz. Aslida, New Relic har doim ham aniq tasvirni bermaydi, ammo bu tadqiqot vektorini tanlashga yordam beradi:

  • uzoq PDO::Construct bizni pgpollning g'alati ishlashiga olib keldi;
  • vaqt o'tishi bilan beqarorlik Memcache::Get virtual mashina noto'g'ri sozlanganligini taklif qildi;
  • shablonni qayta ishlash uchun shubhali darajada ko'paygan vaqt ob'ektni saqlashda 500 ta avatar mavjudligini tekshiradigan ichki halqaga olib keldi;
  • va hokazo…

Bundan tashqari, asosiy ekranda kodni bajarish o'rniga tashqi ma'lumotlarni saqlash bilan bog'liq narsa o'sadi - va bu nima bo'lishi muhim emas: Redis yoki PostgreSQL - ularning barchasi yorliqda yashiringan. Ma'lumotlar bazalarini.

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Tadqiqotlar va soʻrovlarni saralash uchun maʼlum bazani tanlashingiz mumkin – xuddi Tranzaksiyalar boʻlimidagi kabi. Va so'rov yorlig'iga o'tish orqali siz ushbu so'rov har bir dastur boshqaruvchisida necha marta sodir bo'lishini ko'rishingiz mumkin, shuningdek, uning qanchalik tez-tez chaqirilishini taxmin qilishingiz mumkin. Bu juda qulay:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Yorliqda shunga o'xshash ma'lumotlar mavjud Tashqi xizmatlar, bu tashqi HTTP xizmatlariga so'rovlarni yashiradi, masalan, ob'ekt xotirasiga kirish, voqealarni qo'riqchiga yuborish va shunga o'xshashlar. Yorliqning mazmuni ma'lumotlar bazalariga to'liq o'xshaydi:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Raqobatchilar: imkoniyatlar va taassurotlar

Endi eng qiziq narsa - New Relic imkoniyatlarini raqobatchilar taklif qiladigan narsalar bilan solishtirish. Afsuski, biz uchta vositani ishlab chiqarishda ishlaydigan bitta ilovaning bitta versiyasida sinab ko'ra olmadik. Biroq, biz imkon qadar bir xil bo'lgan vaziyatlarni/konfiguratsiyalarni solishtirishga harakat qildik.

1.Datadog

Datadog bizni xizmatlar devoriga ega panel bilan kutib oladi:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

U ilovalarni komponentlarga/mikroservislarga ajratishga harakat qiladi, shuning uchun Django ilovasi misolida biz PostgreSQL ga 2 ta ulanishni ko'ramiz (defaultdb и postgres), shuningdek, Selderey, Redis. Datadog bilan ishlash MVC tamoyillari haqida minimal ma'lumotga ega bo'lishni talab qiladi: foydalanuvchi so'rovlari odatda qayerdan kelganini tushunishingiz kerak. Bu odatda yordam beradi xizmatlar xaritasi:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Aytgancha, New Relic-da shunga o'xshash narsa bor:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

... va ularning xaritasi, mening fikrimcha, sodda va tushunarliroq qilingan: u bitta dasturning tarkibiy qismlarini ko'rsatmaydi (bu Datadog misolida bo'lgani kabi, uni haddan tashqari batafsil qiladi), faqat maxsus xizmatlar yoki mikroservislar.

Datadog-ga qaytaylik: xizmat xaritasidan foydalanuvchi so'rovlari Django-ga kelishini ko'rishimiz mumkin. Keling, Django xizmatiga boramiz va nihoyat nima kutganimizni ko'rib chiqamiz:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Afsuski, bu erda sukut bo'yicha hech qanday grafik yo'q Veb tranzaksiya vaqti, biz asosiy New Relic panelida ko'rgan narsaga o'xshash. Biroq, uni jadval o'rniga sozlash mumkin sarflangan vaqt %. Uni o'zgartirish kifoya Turi boʻyicha har bir soʻrov uchun oʻrtacha vaqt... va endi tanish grafik bizga qaramoqda!

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Nima uchun Datadog boshqa jadvalni tanlagani biz uchun sir. Yana bir umidsizlikka uchragan narsa shundaki, tizim foydalanuvchining tanlovini eslay olmaydi (ikkala raqobatchidan farqli o'laroq) va shuning uchun yagona yechim - maxsus panellarni yaratish.

Ammo Datadog-da ushbu grafiklardan tegishli serverlar ko'rsatkichlariga o'tish, jurnallarni o'qish va veb-server ishlovchilariga (Gunicorn) yukni baholash qobiliyatidan mamnun bo'ldim. Hamma narsa New Relic-dagi kabi deyarli bir xil ... va hatto biroz ko'proq (loglar)!

Grafiklar ostida butunlay New Relic-ga o'xshash operatsiyalar mavjud:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Datadog'da tranzaktsiyalar chaqiriladi resurslar. Siz nazoratchilarni so'rovlar soni, o'rtacha javob vaqti va tanlangan vaqt uchun sarflangan maksimal vaqt bo'yicha saralashingiz mumkin.

Siz resursni kengaytirishingiz va New Relic-da biz allaqachon kuzatgan narsalarni ko'rishingiz mumkin:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Resurs bo'yicha statistik ma'lumotlar, ichki qo'ng'iroqlarning umumlashtirilgan ro'yxati va javob kodi bo'yicha saralanishi mumkin bo'lgan so'rovlar misollari mavjud ... Aytgancha, bizning muhandislarimizga bunday saralash juda yoqdi.

Datadog'dagi har qanday misol manbasini ochish va o'rganish mumkin:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

So'rov parametrlari, har bir komponentga sarflangan vaqtning umumiy jadvali va qo'ng'iroqlar ketma-ketligini ko'rsatadigan palapartishlik jadvali taqdim etiladi. Shuningdek, siz sharsharalar jadvalining daraxt ko'rinishiga o'tishingiz mumkin:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Va eng qiziq narsa bu so'rov bajarilgan hostning yukini ko'rish va so'rov jurnallarini ko'rish.

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Ajoyib integratsiya!

Yorliqlar qayerda ekanligiga hayron bo'lishingiz mumkin Ma'lumotlar bazalarini и Tashqi xizmatlar, New Relic-dagi kabi. Bu erda hech kim yo'q: Datadog ilovani komponentlarga ajratganligi sababli, PostgreSQL ko'rib chiqiladi. alohida xizmat, va Tashqi xizmatlar o'rniga uni izlashga arziydi aws.storage (ilova kirishi mumkin bo'lgan boshqa har qanday tashqi xizmatlar uchun ham xuddi shunday bo'ladi).

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Bu bilan bir misol postgres:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Umuman olganda, biz xohlagan hamma narsa bor:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Siz so'rov qaysi "xizmat" dan kelganligini ko'rishingiz mumkin.

Datadog NGINX Ingress bilan mukammal integratsiyalashganligini va klasterga so'rov kelgan paytdan boshlab oxirigacha kuzatishni amalga oshirishga imkon berishini, shuningdek, statsd ko'rsatkichlarini olish, jurnallar va xost ko'rsatkichlarini to'plash imkonini berishini eslatish bejiz emas. .

Datadog-ning katta afzalligi shundaki, uning narxi rivojlanadi infratuzilma monitoringi, APM, Log Management va Synthetics testidan, ya'ni. Siz o'zingizning rejangizni moslashuvchan tanlashingiz mumkin.

2.Atatus

Atatus jamoasining ta'kidlashicha, ularning xizmatlari "New Relic bilan bir xil, ammo yaxshiroq". Keling, bu haqiqatan ham shundaymi yoki yo'qligini ko'rib chiqaylik.

Asosiy panel o'xshash ko'rinadi, ammo dasturda ishlatiladigan Redis va memcachedlarni aniqlashning iloji bo'lmadi.

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

APM sukut bo'yicha barcha tranzaksiyalarni tanlaydi, lekin odatda faqat veb-tranzaksiyalar kerak bo'ladi. Datadog singari, asosiy paneldan kerakli xizmatga o'tishning hech qanday usuli yo'q. Bundan tashqari, tranzaktsiyalar xatolardan keyin ro'yxatga olinadi, bu APM uchun juda mantiqiy ko'rinmaydi.

Atatus tranzaktsiyalarida hamma narsa New Relic-ga imkon qadar o'xshash. Salbiy tomoni shundaki, har bir kontroller uchun dinamika darhol ko'rinmaydi. Siz uni boshqaruvchi jadvalida saralash orqali qidirishingiz kerak Eng ko'p sarflangan vaqt:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Nazoratchilarning odatiy ro'yxati yorliqda mavjud manbalari:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Qaysidir ma'noda, bu jadval Datadogni eslatadi va menga New Relic-dagi shunga o'xshashidan ko'ra ko'proq yoqadi.

Siz har bir tranzaksiyani kengaytirishingiz va ilova nima qilayotganini ko'rishingiz mumkin:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Panel ham Datadogni ko‘proq eslatadi: bir qancha so‘rovlar, qo‘ng‘iroqlarning umumiy surati mavjud. Yuqori panelda xato yorlig'i mavjud HTTP xatolari va sekin so'rovlarga misollar Sessiya izlari:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Agar siz tranzaktsiyaga o'tsangiz, siz iz namunasini ko'rishingiz mumkin, ma'lumotlar bazasiga so'rovlar ro'yxatini olishingiz va so'rov sarlavhalariga qarashingiz mumkin. Hammasi New Relic-ga o'xshaydi:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Umuman olganda, Otatus batafsil izlardan mamnun edi - eslatma blokiga qo'ng'iroqlarni odatiy Yangi Relikt yopishtirishsiz:

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash
Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Biroq, unda (New Relic-dagi kabi) ultra-tezkor so'rovlarni (<5ms) o'chirib qo'yadigan filtr yo'q. Boshqa tomondan, menga yakuniy tranzaksiya javobining ko'rinishi yoqdi (muvaffaqiyat yoki xato).

Panel Ma'lumotlar bazalarini ilova qiladigan tashqi ma'lumotlar bazalariga so'rovlarni o'rganishga yordam beradi. Eslatib o'taman, Atatus faqat PostgreSQL va MySQL-ni topdi, garchi Redis va memcached ham loyihada ishtirok etadi.

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

So'rovlar odatiy mezonlar bo'yicha tartiblanadi: javob berish chastotasi, o'rtacha javob vaqti va boshqalar. Men eng sekin so'rovlarga ega bo'lgan yorliqni ham eslatib o'tmoqchiman - bu juda qulay. Bundan tashqari, PostgreSQL uchun ushbu yorliqdagi ma'lumotlar kengaytma ma'lumotlariga to'g'ri keldi pg_stat_statements - ajoyib natija!

Faqat yangi yodgorlik emas: Datadog va Atatusga qarash

Yorliq Tashqi so'rovlar Ma'lumotlar bazalari bilan mutlaqo bir xil.

topilmalar

Taqdim etilgan ikkala vosita ham APM rolida yaxshi ishladi. Ulardan har biri talab qilinadigan minimal miqdorni taklif qilishi mumkin. Bizning taassurotlarimizni qisqacha quyidagicha ifodalash mumkin:

datadog

Taroziga soling:

  • qulay tarif jadvali (APM har bir xost uchun 31 AQSh dollari turadi);
  • Python bilan yaxshi ishlagan;
  • OpenTracing bilan integratsiya qilish imkoniyati
  • Kubernetes bilan integratsiya;
  • NGINX Ingress bilan integratsiya.

Kamchiliklari:

  • modul xatosi (predis) tufayli dasturning ishlamay qolishiga sabab bo'lgan yagona APM;
  • zaif PHP avtomatik asboblari;
  • xizmatlarning qisman g'alati ta'rifi va ularning maqsadi.

Atatus

Taroziga soling:

  • chuqur PHP asboblari;
  • foydalanuvchi interfeysi New Relic-ga o'xshash.

Kamchiliklari:

  • eski operatsion tizimlarda ishlamaydi (Ubuntu 12.05, CentOS 5);
  • zaif avtomatik asboblar;
  • faqat ikkita tilni qo'llab-quvvatlash (Node.js va PHP);
  • Sekin interfeys.

Atatusning har bir server uchun oyiga 69 AQSh dollari narxini hisobga olsak, biz ehtiyojlarimiz bilan yaxshi integratsiyalashgan (K8s-dagi veb-ilovalar) va juda ko'p foydali xususiyatlarga ega Datadog-dan foydalanishni afzal ko'ramiz.

PS

Shuningdek, bizning blogimizda o'qing:

Manba: www.habr.com

a Izoh qo'shish