Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

SRE/DevOps inžinierių aplinkoje nieko nenustebins, kad vieną dieną atsiranda klientas (ar stebėjimo sistema) ir praneša, kad „viskas prarasta“: svetainė neveikia, mokėjimai nepraeina, gyvenimas genda. ... Kad ir kaip norėtumėte padėti tokioje situacijoje, be paprasto ir suprantamo įrankio tai padaryti gali būti labai sunku. Dažnai problema yra paslėpta pačiame programos kode; tereikia ją lokalizuoti.

Ir liūdesyje ir džiaugsme...

Taip atsitiko, kad mes seniai ir giliai įsimylėjome Naująją relikviją. Tai buvo ir tebėra puikus įrankis programos veikimui stebėti, taip pat leidžia instrumentuoti mikro paslaugų architektūrą (naudojant jos agentą) ir daug daugiau. Ir viskas galėjo būti puiku, jei nebūtų pasikeitę paslaugos kainų politika: tai kaina iš 2013 metų išaugo 3+ kartus. Be to, nuo praėjusių metų norint gauti bandomąją paskyrą, reikia bendrauti su asmeniniu vadybininku, o tai apsunkina produkto pristatymą potencialiam klientui.

Įprasta situacija: Naujoji relikvija nereikalinga „nuolatai“, jie tai prisimena tik tada, kai prasideda problemos. Tačiau vis tiek reikia mokėti reguliariai (140 USD už serverį per mėnesį), o automatiškai besikeičiančioje debesų infrastruktūroje sumos yra gana didelės. Nors yra „Pay-As-You-Go“ parinktis, norint įjungti „New Relic“, reikės iš naujo paleisti programą, todėl galite prarasti probleminę situaciją, dėl kurios ji buvo pradėta. Neseniai „New Relic“ pristatė naują tarifų planą - Pagrindai, - kuri iš pirmo žvilgsnio atrodo kaip protinga alternatyva Professional... bet atidžiau ištyrus paaiškėjo, kad trūksta kai kurių svarbių funkcijų (ypač neturi Pagrindinės operacijos, Kryžminis programų sekimas, Paskirstytas sekimas).

Dėl to pradėjome galvoti apie pigesnės alternatyvos paiešką ir mūsų pasirinkimas krito ties dviem paslaugomis: Datadog ir Atatus. Kodėl ant jų?

Apie konkurentus

Iš karto pasakysiu, kad rinkoje yra ir kitų sprendimų. Netgi svarstėme apie atvirojo kodo variantus, bet ne kiekvienas klientas turi laisvų pajėgumų talpinti savarankiškai valdomus sprendimus... – be to, jiems reikės papildomos priežiūros. Pora, kurią išsirinkome, pasirodė esanti artimiausia mūsų poreikius:

  • įmontuotas ir išvystytas palaikymas PHP programoms (mūsų klientų krūva labai įvairi, tačiau tai yra aiškus lyderis ieškant alternatyvos New Relic);
  • prieinama kaina (mažiau nei 100 USD per mėnesį vienam šeimininkui);
  • automatiniai prietaisai;
  • integracija su Kubernetes;
  • Panašumas į New Relic sąsają yra pastebimas pliusas (nes mūsų inžinieriai prie to pripratę).

Todėl pradiniame atrankos etape pašalinome keletą kitų populiarių sprendimų, ypač:

  • Tideways, AppDynamics ir Dynatrace – už kainą;
  • Stackify yra užblokuotas Rusijos Federacijoje ir rodo per mažai duomenų.

Likusi straipsnio dalis sudaryta taip, kad iš pradžių bus trumpai pristatyti aptariami sprendimai, o po to papasakosiu apie tipišką mūsų sąveiką su New Relic ir patirtį/įspūdžius atliekant panašias operacijas kitose paslaugose.

Atrinktų konkurentų pristatymas

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.
apie nauja Relikvijų, turbūt visi girdėjo? Ši paslauga pradėjo kurtis daugiau nei prieš 10 metų – 2008 m. Ją aktyviai naudojame nuo 2012 metų ir neturėjome problemų integruojant tikrai daug programų PHP, Ruby ir Python kalbomis, taip pat turime patirties integruojant su C# ir Go. Paslaugos autoriai turi sprendimų, kaip stebėti aplikacijas, infrastruktūrą, sekti mikropaslaugų infrastruktūras, sukurti patogias aplikacijas vartotojų įrenginiams ir dar daugiau.

Tačiau „New Relic“ agentas veikia su patentuotais protokolais ir nepalaiko „OpenTracing“. Išplėstiniams instrumentams reikia redaguoti specialiai „New Relic“. Galiausiai, Kubernetes palaikymas vis dar yra eksperimentinis.

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.
Pradėjo kurti 2010 m Duomenų šuo atrodo pastebimai įdomiau nei New Relic būtent dėl ​​naudojimo Kubernetes aplinkoje. Visų pirma, jis palaiko integraciją su NGINX Ingress, žurnalų rinkimu, statsd ir OpenTracing protokolais, kurie leidžia stebėti vartotojo užklausą nuo tada, kai ji prijungiama iki užbaigimo, taip pat rasti šios užklausos žurnalus (abi žiniatinklio serverio pusėje ir vartotojui).

Naudodami „Datadog“ susidūrėme su tuo, kad kartais jis neteisingai sudarydavo mikroserviso žemėlapį, taip pat su kai kuriais techniniais trūkumais. Pavyzdžiui, jis klaidingai nustatė paslaugos tipą (painiojo Django kaip talpyklos paslaugą) ir sukėlė 500 klaidų PHP programoje, naudojant populiarią Predis biblioteką.

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.
Atatus — jauniausias instrumentas; paslauga pradėta teikti 2014 m. Jo rinkodaros biudžetas yra akivaizdžiai prastesnis nei išvardytų konkurentų, paminėjimų daug rečiau. Tačiau pats įrankis labai panašus į New Relic ne tik savo galimybėmis (APM, Browser monitoring ir kt.), bet ir išvaizda.

Reikšmingas trūkumas yra tai, kad jis palaiko tik Node.js ir PHP. Kita vertus, jis įgyvendintas pastebimai geriau nei Datadog. Skirtingai nuo pastarojo, „Atatus“ nereikalauja programų, kad būtų galima atlikti pakeitimus ar pridėti papildomų kodo etikečių.

Kaip mes dirbame su New Relic

Dabar pažiūrėkime, kaip mes paprastai naudojame New Relic. Tarkime, kad turime problemą, kurią reikia išspręsti:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Tai lengva pamatyti diagramoje įstrigti – Išanalizuokime. „New Relic“ žiniatinklio operacijos iš karto parenkamos žiniatinklio programai, visi komponentai nurodomi našumo grafike, yra klaidų dažnio, užklausų dažnio skydeliai... Svarbiausia, kad tiesiai iš šių skydelių galima judėti tarp skirtingų programos dalis (pavyzdžiui, spustelėjus MySQL bus atidaryta duomenų bazės dalis).

Kadangi nagrinėjamame pavyzdyje matome aktyvumo padidėjimą PHP, spustelėkite šią diagramą ir automatiškai eikite į Sandoriai:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Operacijų, kurios iš esmės yra MVC modelio valdikliai, sąrašas jau surūšiuotas pagal Daugiausiai laiko, o tai labai patogu: iš karto matome, ką daro programa. Čia yra ilgų užklausų, kurias automatiškai surenka „New Relic“, pavyzdžiai. Perjungus rūšiavimą lengva rasti:

  • labiausiai pakrautas programų valdiklis;
  • dažniausiai prašomas valdiklis;
  • lėčiausias iš valdiklių.

Be to, galite išplėsti kiekvieną operaciją ir pamatyti, ką programa veikė tuo metu, kai buvo vykdomas kodas:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Galiausiai programa saugo ilgų užklausų pėdsakų pavyzdžius (tų, kurie trunka ilgiau nei 2 sekundes). Čia yra ilgos operacijos skydelis:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Matyti, kad du metodai užima daug laiko, o tuo pačiu rodomas ir užklausos vykdymo laikas, jos URI bei domenas. Labai dažnai tai padeda rasti užklausą žurnaluose. Ketina Pėdsakai, galite pamatyti, iš kur iškviečiami šie metodai:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Ir Duomenų bazių užklausos – įvertinti duomenų bazių užklausas, kurios buvo vykdomos, kai programa veikia:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Turėdami šias žinias, galime įvertinti, kodėl programa lėtėja, ir kartu su kūrėju sugalvoti problemos sprendimo strategiją. Iš tikrųjų „New Relic“ ne visada pateikia aiškų vaizdą, tačiau padeda pasirinkti tyrimo vektorių:

  • ilgas PDO::Construct atvedė mus prie keisto pgpoll veikimo;
  • nestabilumas laikui bėgant Memcache::Get pasiūlė, kad virtualioji mašina sukonfigūruota neteisingai;
  • įtartinai pailgėjęs šablono apdorojimo laikas paskatino įdėtą kilpą, tikrinančią, ar objekto saugykloje yra 500 avatarų;
  • ir tt ...

Taip pat atsitinka, kad vietoj kodo vykdymo pagrindiniame ekrane išauga kažkas, kas susiję su išorine duomenų saugykla – ir nesvarbu, kas tai bus: „Redis“ ar „PostgreSQL“ – jie visi paslėpti skirtuke. Duomenų bazės.

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Galite pasirinkti konkrečią tyrimo bazę ir rūšiuoti užklausas – panašiai kaip tai daroma skiltyje „Operacijos“. Eidami į užklausų skirtuką, galite pamatyti, kiek kartų ši užklausa pateikiama kiekviename programos valdiklyje, taip pat įvertinti, kaip dažnai ji iškviečiama. Tai labai patogu:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Skirtuke yra panašūs duomenys Išorės paslaugos, kuri paslepia išorinių HTTP paslaugų užklausas, tokias kaip prieiga prie objektų saugyklos, įvykių siuntimas sargybiniui ar pan. Skirtuko turinys visiškai panašus į duomenų bazes:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Konkurentai: galimybės ir įspūdžiai

Dabar įdomiausia lyginti „New Relic“ galimybes su tuo, ką siūlo konkurentai. Deja, negalėjome išbandyti visų trijų įrankių vienoje gamybinėje programoje veikiančios programos versijoje. Tačiau mes bandėme palyginti situacijas / konfigūracijas, kurios buvo kuo identiškesnės.

1. Duomenų šuo

Datadog mus pasitinka skydeliu su paslaugų siena:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Jis bando suskaidyti programas į komponentus / mikropaslaugas, todėl Django programos pavyzdyje matysime 2 ryšius su PostgreSQL (defaultdb и postgres), taip pat Salierai, Redis. Dirbdami su Datadog turite turėti minimalių žinių apie MVC principus: turite suprasti, iš kur paprastai kyla vartotojų užklausos. Tai dažniausiai padeda paslaugų žemėlapis:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Beje, naujojoje relikvijoje yra kažkas panašaus:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

... o jų žemėlapis, mano nuomone, yra paprastesnis ir aiškesnis: rodomi ne vienos programos komponentai (dėl to būtų pernelyg detalizuota, kaip Datadog atveju), o tik konkrečios paslaugos ar mikropaslaugos.

Grįžkime prie Datadog: iš paslaugų žemėlapio matome, kad vartotojų užklausos ateina į Django. Eikime į Django paslaugą ir pagaliau pamatysime, ko tikėjomės:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Deja, pagal numatytuosius nustatymus čia nėra grafiko Interneto operacijos laikas, panašus į tai, ką matome pagrindiniame New Relic skydelyje. Tačiau jį galima konfigūruoti vietoje tvarkaraščio % praleisto laiko. Pakanka jį perjungti Vidutinis užklausos laikas pagal tipą... o dabar į mus žiūri pažįstamas grafikas!

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Kodėl Datadog pasirinko kitą diagramą, mums yra paslaptis. Kitas nemalonus dalykas yra tai, kad sistema neprisimena vartotojo pasirinkimo (skirtingai nei abiejų konkurentų), todėl vienintelis sprendimas yra sukurti pasirinktines plokštes.

Tačiau buvau patenkintas „Datadog“ galimybe pereiti nuo šių grafikų prie susijusių serverių metrikos, skaityti žurnalus ir įvertinti žiniatinklio serverio tvarkyklių (Gunicorn) apkrovą. Viskas beveik taip pat, kaip Naujojoje relikvijoje... ir net šiek tiek daugiau (rąstų)!

Žemiau esančiose diagramose pateikiamos operacijos, visiškai panašios į New Relic:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

„Datadog“ yra vadinamos operacijos išteklių. Valdiklius galite rūšiuoti pagal užklausų skaičių, vidutinį atsakymo laiką ir maksimalų laiką, praleistą pasirinktu laikotarpiu.

Galite išplėsti šaltinį ir pamatyti viską, ką jau pastebėjome „New Relic“:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Yra statistika apie išteklius, apibendrintas vidinių skambučių sąrašas ir užklausų pavyzdžiai, kuriuos galima rūšiuoti pagal atsakymo kodą... Beje, mūsų inžinieriams toks rūšiavimas labai patiko.

Bet kurį Datadog šaltinio pavyzdį galima atidaryti ir ištirti:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Pateikiami užklausos parametrai, suvestinė kiekvienam komponentui praleisto laiko diagrama ir krioklio diagrama, rodanti skambučių seką. Taip pat galite perjungti į krioklio diagramos medžio vaizdą:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

O įdomiausia yra peržiūrėti pagrindinio kompiuterio, kuriame buvo įvykdyta užklausa, apkrovą ir peržiūrėti užklausų žurnalus.

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Puiki integracija!

Jums gali kilti klausimas, kur yra skirtukai Duomenų bazės и Išorės paslaugos, kaip Naujojoje relikvijoje. Čia jų nėra: kadangi Datadog išskaido programą į komponentus, bus svarstoma PostgreSQL atskira paslauga, o vietoj Išorinių paslaugų verta ieškoti aws.storage (jis bus panašus į visas kitas išorines paslaugas, kurias gali pasiekti programa).

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Štai pavyzdys su postgres:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Iš esmės yra viskas, ko norėjome:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Galite pamatyti, iš kurios „tarnybos“ gauta užklausa.

Nebūtų neteisinga priminti, kad Datadog puikiai integruojasi su NGINX Ingress ir leidžia atlikti tiesioginį sekimą nuo pat užklausos gavimo į klasterį, taip pat leidžia gauti statistikos metriką, rinkti žurnalus ir pagrindinio kompiuterio metriką. .

Didžiulis Datadog pliusas yra jo kaina vystosi iš infrastruktūros stebėjimo, APM, žurnalų valdymo ir sintetikos testo, t.y. Savo planą galite pasirinkti lanksčiai.

2.Atatus

„Atatus“ komanda teigia, kad jų paslauga „yra tokia pati kaip Naujoji relikvija, bet geresnė“. Pažiūrėkime, ar taip tikrai yra.

Pagrindinis skydelis atrodo panašiai, tačiau nebuvo įmanoma nustatyti programoje naudojamų „Redis“ ir „memcached“.

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

APM pagal numatytuosius nustatymus pasirenka visas operacijas, nors paprastai reikalingos tik žiniatinklio operacijos. Kaip ir Datadog, pagrindiniame skydelyje nėra jokio būdo pereiti į norimą paslaugą. Be to, operacijos pateikiamos po klaidų, o tai APM neatrodo labai logiška.

„Atatus“ operacijose viskas kuo panašesnė į „New Relic“. Neigiama yra tai, kad kiekvieno valdiklio dinamika nėra matoma iš karto. Jo reikia ieškoti valdiklio lentelėje, rūšiuojant pagal Daugiausia laiko:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Įprastą valdiklių sąrašą rasite skirtuke Žiūrėti:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Kai kuriais atžvilgiais ši lentelė primena „Datadog“ ir man ji labiau patinka nei panaši „New Relic“.

Galite išplėsti kiekvieną operaciją ir pamatyti, ką darė programa:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Skydas irgi labiau primena Datadog: yra nemažai užklausų, bendras skambučių vaizdas. Viršutiniame skydelyje yra klaidų skirtukas HTTP gedimai ir lėtų užklausų pavyzdžiai Sesijos pėdsakai:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Jei einate į operaciją, galite pamatyti sekimo pavyzdį, galite gauti užklausų sąrašą į duomenų bazę ir peržiūrėti užklausų antraštes. Viskas panašu į New Relic:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Apskritai „Atatus“ džiaugiasi išsamiais pėdsakais – be tipiško „New Relic“ skambučių įklijavimo į priminimo bloką:

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.
Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Tačiau jame nėra filtro, kuris (kaip ir „New Relic“) nutrauktų itin greitas užklausas (<5 ms). Kita vertus, man patiko galutinio operacijos atsakymo (sėkmės ar klaidos) rodymas.

Skydas Duomenų bazės padės ištirti programos teikiamas užklausas išorinėms duomenų bazėms. Leiskite jums priminti, kad Atatus rado tik PostgreSQL ir MySQL, nors Redis ir memcached taip pat dalyvauja projekte.

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Prašymai rūšiuojami pagal įprastus kriterijus: atsakymų dažnis, vidutinis atsakymo laikas ir pan. Taip pat norėčiau paminėti skirtuką su lėčiausiomis užklausomis – tai labai patogu. Be to, šiame „PostgreSQL“ skirtuke esantys duomenys sutapo su plėtinio duomenimis pg_stat_statymai - puikus rezultatas!

Ne tik nauja relikvija: pažiūrėkite į „Datadog“ ir „Atatus“.

Skirtukas Išoriniai prašymai visiškai identiški duomenų bazėms.

išvados

Abu pateikti įrankiai puikiai atliko APM vaidmenį. Bet kuris iš jų gali pasiūlyti reikiamą minimumą. Mūsų įspūdžius galima trumpai apibendrinti taip:

Duomenų šuo

Argumentai "už":

  • patogus tarifų grafikas (APM kainuoja 31 USD vienam šeimininkui);
  • gerai dirbo su Python;
  • Galimybė integruoti su OpenTracing
  • integracija su Kubernetes;
  • integracija su NGINX Ingress.

Trūkumai:

  • vienintelis APM, dėl kurio programa tapo nepasiekiama dėl modulio klaidos (predis);
  • silpna PHP automatinė įranga;
  • iš dalies keistas paslaugų ir jų paskirties apibrėžimas.

Atatus

Argumentai "už":

  • gilus PHP instrumentas;
  • vartotojo sąsaja, panaši į New Relic.

Trūkumai:

  • neveikia senesnėse operacinėse sistemose (Ubuntu 12.05, CentOS 5);
  • silpnas automatinis prietaisas;
  • palaiko tik dvi kalbas (Node.js ir PHP);
  • Lėta sąsaja.

Atsižvelgiant į Atatus 69 USD per mėnesį už serverį kainą, mes verčiau naudotume Datadog, kuris puikiai integruojasi su mūsų poreikiais (žiniatinklio programos K8s) ir turi daug naudingų funkcijų.

PS

Taip pat skaitykite mūsų tinklaraštyje:

Šaltinis: www.habr.com

Добавить комментарий