Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

SRE-/DevOps insenerite seas ei ĂŒllata kedagi, kui ĂŒhel pĂ€eval ilmub klient (vĂ”i jĂ€lgimissĂŒsteem) ja teatab, et "kĂ”ik on kadunud": veebisait ei tööta, maksed ei lĂ€he lĂ€bi, elu on tĂŒhjus... Kuigi soov aidata sellises olukorras on suur, on raske seda teha ilma lihtsa ja arusaadava tööriistata. Sageli on probleem peidetud rakenduse enda koodis — tuleb lihtsalt see lokaliseerida.

Nii rÔÔmas kui ka kurb


Oleme juba pikka aega New Relici vĂ€ga armastanud. See oli ja on suurepĂ€rane vahend rakenduse soorituse jĂ€lgimiseks ning vĂ”imaldab mikroteenuste arhitektuuri instrumenteerida (oma agendi abil) ja palju muud. KĂ”ik oleks olnud suurepĂ€rane, kui mitte teenuse hinnapoliitika muutused: selle hind on alates 2013. aastast kasvanud ĂŒle 3 korra. Lisaks on alates eelmisest aastast proovikonto saamiseks vajalik suhelda isikliku juhiga, mis muudab toote tutvustamise potentsiaalsele kliendile keeruliseks.

Tavaline olukord: New Relic ei ole „pĂŒsivalt” vajalik, sellest mĂ€letatakse ainult siis, kui tekivad probleemid. Kuid regulaarset tasumist on siiski vaja (140 USD kuus serveri kohta), ja automaatselt skaleeruva pilveinfrastruktuuri puhul kogunevad summad suurteks. Kuigi on olemas vĂ”imalus „Pay-As-You-Go”, kuid New Relici lubamiseks tuleb rakendus taaskĂ€ivitada, mis vĂ”ib pĂ”hjustada probleemide kaotamise, mille tĂ”ttu kogu see ettevĂ”tmine algas. Hiljuti tutvustas New Relic uut hinnaplaani — PĂ”hilised, — mis esmapilgul tundub olema mĂ”istlik alternatiiv Professionalile... kuid lĂ€hemal uurimisel selgus, et puuduvad mĂ”ned olulised funktsioonid (eriti puuduvad Key Transactions, Cross Application Tracing, Distributed Tracing).

KokkuvÔttes hakkasime otsima odavamat alternatiivi, ja meie valik langes kahe teenuse Datadog ja Atatus peale. Miks just need?

Konkurentidest

Ma tahan kohe öelda, et turul on ka teisi lahendusi. Oleme isegi kaalunud avatud lĂ€htekoodiga variante, kuid mitte iga klient ei oma vabu ressursse enesehesti lahenduste paiknemiseks... — lisaks vajavad need tĂ€iendavat hooldust. Meie valitud paar osutus meie vajadustele kĂ”ige lĂ€hedasemaks. meie vajadustele:

  • integreeritud ja arenenud PHP rakenduste tugi (meie klientide tehnoloogia virn on vĂ€ga mitmekesine, kuid see on selge liider New Relici alternatiivi otsimisel);
  • taskukohane hind (alla 100 USD kuus hostimise eest);
  • automaatne instrumenteerimine;
  • integreerimine Kubernetesega;
  • New Relici kasutajaliidese sarnasus — mĂ€rkimisvÀÀrne pluss (sest meie insenerid on sellele harjunud).

SeetÔttu eraldasime esmases valikuprotsessis mitmed teised populaarsed lahendused, sealhulgas:

  • Tideways, AppDynamics ja Dynatrace — hinna tĂ”ttu;
  • Stackify — on Venemaal blokeeritud ja kuvab liiga vĂ€he andmeid.

JĂ€rgmine artikkel on ĂŒles ehitatud nii, et esmalt tutvustatakse lĂŒhidalt kĂ€sitletavaid lahendusi, seejĂ€rel rÀÀgin oma tĂŒĂŒpilisest koostööst New Relicuga ning kogemustest/ muljetest analoogsete toimingute tegemisel teistes teenustes.

Valitud konkurentide esitlus

Ei ole ainult New Relic: pilk Datadogli ja Atatusele
Umbes New Relic, oled sa sellest ilmselt kuulnud? See teenus alustas oma teed rohkem kui 10 aastat tagasi, 2008. aastal. Oleme seda aktiivselt kasutanud alates 2012. aastast ja meil pole olnud probleeme suure hulga rakenduste integreerimisega PHP, Ruby ja Python keeltes, samuti on meil olnud kogemusi C# ja Go integreerimisega. Teenuse autoritel on lahendusi rakenduste, infrastruktuuri jÀlgimiseks, mikroteenuste infrastruktuuri jÀlgimiseks, luuakse mugavaid rakendusi kasutajaseadmetele ja palju muud.

Kuid New Relic agent töötab patenteeritud protokollide alusel, selles ei ole OpenTracing toetust. TÀiendava instrumenteerimise jaoks on vaja teha muudatusi spetsiaalselt New Relic'i jaoks. LÔpuks on Kubernetes'e toetus hetkel eksperimendi staatuses.

Ei ole ainult New Relic: pilk Datadogli ja Atatusele
Alustanud oma teed 2010. aastal Datadog kui vĂ”rrelda New Relic'iga, tundub see Kubernetes'i keskkondades kindlasti pĂ”nevam. Eriti toetab see integreerimist NGINX Ingress'iga, logide kogumist, statsd ja OpenTracing protokolle, mis vĂ”imaldab jĂ€lgida kasutaja pĂ€ringut alates ĂŒhenduse loomise hetkest kuni töö lĂ”petamiseni ning leida selle pĂ€ringu logid (nii veebiserveri kui ka tarbijate poolt).

Datadogi kasutamisel kogesime, et see mĂ”nikord ehitas mikroteenuste kaarti valesti ja oli mĂ”ningate tehniliste puudustega. NĂ€iteks mÀÀras see teenuse tĂŒĂŒbi valesti (tĂ”lgendas Django'd vahemĂ€luteenuseks) ja tekitas 500. vigasid PHP rakenduses, mis kasutas populaarset teeki Predis.

Ei ole ainult New Relic: pilk Datadogli ja Atatusele
Atatus on kÔige noorem tööriist; teenus kÀivitati 2014. aastal. Selle turunduseelarve jÀÀb selgelt alla nimetatud konkurentidele, selle mainimised on mÀrksa harvemad. Siiski on tööriist ise vÀga sarnane New Relic'iga, mitte ainult vÔimaluste (APM, brauseri jÀlgimine jne) poolest, vaid ka vÀlimuse poolest.

Olulise puudusena pakub see ainult Node.js ja PHP tuge. Teisest kĂŒljest on see rakendatud mĂ€rgatavalt paremini kui Datadog. Erinevalt viimasest ei nĂ”ua Atatus rakendustelt tĂ€iendusi ja koodi lisamĂ€rgete seadistamist.

Kuidas me töötame New Relicuga

NĂŒĂŒd vaatame, kuidas me ĂŒldiselt New Relici kasutame. Oletame, et meil on probleem, mis vajab lahendamist:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Graafikult on lihtne mĂ€rgata puhangut — analĂŒĂŒsime seda. New Relicis on veebirakenduse jaoks kohe valitud veebitehingud, jĂ”udlusgraafikus on nĂ€idatud kĂ”ik komponendid, seal on error-rate, request-rate paneelid
 Mis kĂ”ige tĂ€htsam, otse nende paneelide kaudu saab navigeerida rakenduse erinevatesse osadesse (nĂ€iteks klĂ”psamine MySQL viib teid andmebaasi sektsiooni).

Kuna arutatavas nÀites nÀeme tegevuse puhanguid PHP, klÔpsame sellel graafikul ja liigume automaatselt Tehingud:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Tehingute nimekiri, mis on pÔhimÔtteliselt MVC mudeli kontrollerid, on juba jÀrjestatud KÔige aeganÔudvam, mis on vÀga mugav: me nÀeme kohe, millega rakendus tegeleb. Siin on ka pikaajaliste pÀringute nÀidised, mida New Relic automaatselt kogub. Sorteerimise muutmine muudab leidmise kergemaks:

  • rakenduse kĂ”ige koormatum kontroller;
  • kĂ”ige sagedamini kĂŒsitav kontroller;
  • kĂ”ige aeglasem kontroller.

Lisaks saab iga tehingu arutada ja nÀha, millega rakendus tegi koodi tÀitmise hetkel:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

LFinally, rakenduses salvestatakse pikaajaliste pÀringute jÀlgimise nÀidised (mis kestavad kauem kui 2 sekundit). Siin on paneel pika tehingu jaoks:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

On nĂ€ha, et kaks meetodit vĂ”tavad palju aega, samas nĂ€idatakse ka aega, mil pĂ€ring tĂ€ideti, selle URI ja domeeni. See aitab sageli pĂ€ringut logides leida. Minna ĂŒle JĂ€lgimise ĂŒksikasjad, saab vaadata, kust need meetodid kutsutakse:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Ja Andmebaasi pĂ€ringud — hinnata andmebaasi pĂ€ringuid, mis tĂ€ideti rakenduse tegevuse ajal:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Nende teadmistega saame hinnata rakenduse aeglustumise pĂ”hjust ja koos arendajaga töötada vĂ€lja lahenduste strateegia. Tegelikult ei anna New Relic alati selget ĂŒlevaadet, kuid see aitab valida uurimise suuna:

  • pikk PDO::Construct s viis meid kummalise pgpoll'i toimimise juurde;
  • aeglus aja jooksul Memcache::Get nĂ€itas vale virtuaalmasina seadistust;
  • kahtlaselt suurenenud mallide töötlemise aeg viis 500 avatar'i olemasolu kontrolliva sisseulatuva tsĂŒklini;
  • ja nii edasi


Puhas vĂ”ib juhtuda, et peamise ekraani koodi tĂ€itmise asemel kasvab midagi, mis on seotud vĂ€listest andmehoidlatest — ja pole tĂ€htis, mis need on: Redis vĂ”i PostgreSQL — nad kĂ”ik peidavad end vahekaardil Andmebaasid.

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Saate valida konkreetse andmebaasi uurimiseks ja sortida pĂ€ringute pĂ”hjal — sama nagu Transactions vahekaartide puhul. Ja liikudes pĂ€ringu vahekaardile, saate nĂ€ha, kui sageli see pĂ€ring ilmub igas rakenduse kontrolleris, samuti hinnata, kui tihti seda kutsutakse. See on vĂ€ga mugav:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Sarnaseid andmeid sisaldab vahekaart VĂ€listeenused, mis varjab endas vĂ€liseid HTTP-teenuseid, nagu objektide salvestamiseks, sĂŒndmuste saatmiseks Sentrysse vĂ”i muu sarnase jaoks. Sisu poolest on sakk tĂ€ielikult analoogne Databases-ga:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Konkurendid: vÔimalused ja muljed

NĂŒĂŒd kĂ”ige huvitavam osa — vĂ”rdleme New Relici vĂ”imalusi konkurentide pakutavaga. Kahjuks ei Ă”nnestunud meil kĂ”iki kolme tööriista sama versiooniga samas tootmisrakenduses testida. Siiski pĂŒĂŒdsime vĂ”rrelda vĂ”imalikult sarnaseid olukordi/kirjeldusi.

1. Datadog

Datadog tervitab meid teenuste seina paneeliga:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Ta pĂŒĂŒab jagada rakendused komponentideks/mikroteenusteks, seega nĂ€eme antud nĂ€ite Django-rakenduses kahte ĂŒhendust PostgreSQL-iga (defaultdb ja postgres), samuti Celeryt, Redis. Datadogi kasutamine nĂ”uab minimaalseid teadmisi MVC pĂ”himĂ”tetest: on oluline mĂ”ista, kuhu kasutajate pĂ€ringud paiknevad. Tavaliselt aitab see teenuste kaart:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

ÜlejÀÀnud sarnane on ka New Relicis:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele


 ning nende kaart on minu arvates lihtsam ja arusaadavam: see kuvab mitte rakenduse komponente (mis muudaks selle ĂŒlemÀÀra detailseks, nagu Datadog'i puhul), vaid ainult konkreetseid teenuseid vĂ”i mikroteenuseid.

Naaseme Datadog'i juurde: teenuste kaardilt nÀeme, et kasutajate pÀringud jÔuavad Django'sse. Siirdume Django teenusesse ja nÀeme lÔpuks seda, mida ootasime:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Kahjuks ei ole siin vaikimisi graafikut Veebitehingu aeg, mis oleks sarnane nooltega, mida nĂ€eme New Relici pĂ”himenĂŒĂŒs. Kuid selle saab seadistada graafiku kohale % aega, mille arvelt. Piisab, kui vahetada see Keskmine aeg pĂ€ringu kohta tĂŒĂŒbi jĂ€rgi
 ja nĂŒĂŒd vaatab meile vastu tuttav graafik!

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Miks Datadog eelistas teistsugust graafikut — jÀÀb meile arusaamatuks. Petta tegi ka see, et sĂŒsteem ei salvesta kasutaja valikut (erinevalt mĂ”lemast konkurendist), mistĂ”ttu — jÀÀb alles ainult kasutaja paneelide loomine.

KĂŒll aga rÔÔmustas Datadog'i vĂ”imalus liikuda nende graafikute kaudu seotud serverite metrikale, lugeda logisid ja hinnata veebiserveri (Gunicorn) koormust. KĂ”ik on peaaegu nagu New Relic'is
 ja isegi veidi rohkem (logid)!

Allpool diagrammidest leiate tehingud, mis on tÀiesti sarnased New Relicule:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Datadogis nimetatakse tehinguid ressurssideks. Kontrollerid saab sorteerida pÀringute arvu, keskmise vastamise aja vÔi maksimaalse kulutatud aja jÀrgi valitud ajavahemikus.

Ressurssi saab avada ja nÀha kÔike, mida oleme juba New Relicis jÀlginud:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

KÀes on nii ressursi statistika kui ka kokkuvÔtlik loetelu sisevÀljakutsetest ja pÀringute nÀidised, mida on vÔimalik sorteerida vastuse koodi jÀrgi
 Muide, see sorteerimine meeldis meie inseneridele vÀga.

Iga ressursi nÀidist Datadogis saab avada ja uurida:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Esitatud on pÀringu parameetrid, kokkuvÔtlik diagramm kulutatud ajast iga komponendi osas ja juga-diagramm, kus nÀha vÀljakutsete jÀrjestust. Samuti on saadaval valik puustruktuuriga juga-diagrammi jaoks:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Ja kĂ”ige huvitavam — hosti koormuse vaatamine, kus pĂ€ring viidi lĂ€bi, ja pĂ€ringute logide vaatamine.

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

SuurepÀrane integreerimine!

VĂ”ib tekkida kĂŒsimus, kus on vahekaartid Andmebaasid ja VĂ€listeenused, nagu New Relicis. Siin neid ei ole: kuna Datadog analĂŒĂŒsib rakendust komponentide kaupa, loetakse PostgreSQL erineva teenusena, samas kui External Services asemel tuleks otsida aws.storage (samamoodi kehtib iga teise vĂ€listeenuse kohta, mille poole rakendus vĂ”ib pöörduda).

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Siin on nÀide postgres:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Sisuliselt on kÔik see, mida soovisime:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

On nÀha, millist 'teenust' pÀring tuli.

Ei tee paha meenutada, et Datadog integreerub suurepÀraselt NGINX Ingressiga ja vÔimaldab teostada lÔpp-punkti jÀlgimist alates pÀringu saabumisest klastrisse, samuti aktsepteerida statsd mÔÔdikuid, koguda logisid ja hostide mÔÔdikuid.

Datadogi suur pluss on see, et selle hind koosneb infrastruktuuri jÀlgimisest, APM-ist, logihaldusest ja synthetics-testidest, st plaani saab paindlikult valida.

2. Atatus

Atatuse meeskond vÀidab, et nende teenus on "selline nagu New Relic, aga parem". Vaatame, kas see on tÔsi.

PeamenĂŒĂŒ nĂ€eb tĂ”epoolest vĂ€lja sarnane, kuid rakenduses kasutatavaid Redis'e ja memcached'i mÀÀrata ei Ă”nnestunud.

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

APM valib vaikimisi kĂ”ik tehingud, kuigi tavaliselt on vajalikud ainult Veebitehingud. Nagu ka Datadog'is, ei ole pĂ”himenĂŒĂŒst vĂ”imalik vajalikku teenust valida. Veelgi enam, tehingud asuvad nimekirjas pĂ€rast vigu, mis APM-i jaoks ei tundu vĂ€ga loogiline.

Atatuses tehingud sarnanevad vĂ€ga New Relic'ule. Miinusena ei ole kohe nĂ€ha dĂŒnaamikat iga kontrolleri jaoks. Seda tuleb otsida kontrollerite tabelist, sorteerides jĂ€rgi Enim aega kulutatud:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Meile tuttav kontrollerite nimekiri on saadaval vahekaardil Uurimine:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

See tabel meenutab veidi Datadog'i ning on meeldivam kui sarnane New Relic'is.

Iga tehingu saab vÀlja lahti vÔtta ja vaadata, millega rakendus tegeles:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Paneel meenutab ka pigem Datadog'i: seal on pĂ€ringute arv, ĂŒldine ĂŒlevaade kutsetest. Ülemine paneel pakub vahekaarti vigadega HTTP tĂ”rked ja nĂ€ited aeglastest pĂ€ringutest Seansi jĂ€ljed:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Kui minna tehingusse, on nÀha jÀlje nÀide, samuti saab saada nimekirja pÀringutest andmebaasi ja vaadata pÀringu pÀiseid. KÔik on analoogne New Relic'ule:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Üldiselt ĂŒllatas Atatus detailsete jĂ€lgedega — ilma New Relic'ile iseloomulike kutsete kokku liitmist:

Ei ole ainult New Relic: pilk Datadogli ja Atatusele
Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Kuid siit puudub filter, mis nagu New Relic kĂ€rbiks ĂŒlikiired pĂ€ringud (<5 ms). Teiselt poolt meeldis mulle tehingu lĂ”ppvastuse (kas edukas vĂ”i viga) kuvamine.

Paneel Andmebaasid aitab aitab jÀlgida vÀliste andmebaaside pÀringuid, mida rakendus teeb. Kordan, et Atatus leidis ainult PostgreSQL ja MySQL, kuigi projektis on kasutusel ka Redis ja memcached.

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

PĂ€ringud sorteeritakse tuttavate kriteeriumide jĂ€rgi: töötluse sagedus, keskmine vastamise aeg jne. Eriti tahaksin mainida vahekaarti kĂ”ige aeglasemate pĂ€ringutega — see on vĂ€ga mugav. Veelgi enam, andmed sellel sakkidel PostgreSQL-i jaoks kattusid laiendi andmetega. pg_stat_statements — suurepĂ€rane tulemus!

Ei ole ainult New Relic: pilk Datadogli ja Atatusele

Vahekaart External Requests on tÀiesti identne Databases-ga.

JĂ€reldused

MĂ”lemad esitatud tööriistad on APM-ina hĂ€sti toiminud. IgaĂŒks neist suudab pakkuda vajalikku minimaalset. KokkuvĂ”tteks vĂ”iks meie muljed kokku vĂ”tta jĂ€rgmiselt:

Datadog

Plussid:

  • mugav hinnakiri (APM maksab 31 USD kuus);
  • nĂ€itas end Pythoniga suurepĂ€raselt;
  • vĂ”imalus integreeruda OpenTracinguga;
  • integreerimine Kubernetesega;
  • integreerimine NGINX Ingressiga.

Miinused:

  • ainus APM, mis pĂ”hjustas rakenduse kĂ€ttesaamatuse mooduli vea tĂ”ttu (predis);
  • nĂ”rk automaatne instrumenteerimine PHP-s;
  • osaliselt kummaline teenuste ja nende otstarbe mÀÀratlemine.

Atatus

Plussid:

  • sĂŒgav instrumenteerimine PHP-s;
  • kasutajaliides, mis sarnaneb New Reliciga.

Miinused:

  • ei tööta vanades operatsioonisĂŒsteemides (Ubuntu 12.05, CentOS 5);
  • nĂ”rk automaatne jĂ€lgimine;
  • toetab vaid kahte programmeerimiskeelt (Node.js ja PHP);
  • lihtsustatud kasutajaliidese aeglane töö.

Arvestades Atatusi hinda 69 USD kuus serveri kohta, eelistaksime pigem Datadogi, mis sobib suurepÀraselt meie vajadustega (veebirakendused K8s-is) ja sisaldab mitmeid kasulikke funktsioone.

P.S.

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster