Mitme New Relic'i: vaade Datadogile ja Atatusele

Mitme New Relic'i: vaade Datadogile ja Atatusele

SRE- ja DevOps-inseneride seas ei ĂŒllata peaaegu kedagi, kui klient (vĂ”i monitooringusĂŒsteem) teatab, et "kĂ”ik on kadunud": veebileht ei tööta, maksed ei lĂ€he lĂ€bi, elu on tĂŒhi... Kuigi soov aidata on suur, on see sageli vĂ€ga keeruline ilma lihtsa ja arusaadava tööriistata. Sageli on probleem peidus rakenduse enda koodis — seda tuleb lihtsalt lokaliseerida.

Nii rÔÔmus kui kurb...

On nii kujunenud, et me oleme juba ammu ja tĂ”eliselt armastanud New Relic'ut. See on olnud ja on endiselt suurepĂ€rane tööriist rakenduse jĂ”udluse monitooringuks ning vĂ”imaldab mikroteenuste arhitektuuri instrumenteerimist (oma agendi abil) ja palju muud. Ja kĂ”ik oleks vĂ”inud olla suurepĂ€rane, kui mitte teenuse hinnastrateegia muudatused: selle hind alates 2013. aastast on tĂ”usnud ĂŒle 3 korra. Lisaks on alates eelmise aasta eest proovikonto saamiseks vajalik suhtlemine isikliku juhiga, mis muudab toote potentsiaalsele kliendile esitlemise keerulisemaks.

Tavaline olukord: New Relic ei ole "pikaajaliselt" vajalik, seda meenutatakse ainult siis, kui probleemid on alanud. Kuid tasuda tuleb siiski regulaarselt (140 USD serveri kohta kuus), ja automaatselt skaaleerivas pilvinfrastruktuuris kogunevad summad ĂŒsna suured. Kuigi on ka vĂ”imalus "Pay-As-You-Go", kuid New Relic'i aktiveerimiseks tuleb rakendus taaskĂ€ivitada, mis vĂ”ib viia probleemi kadumiseni, mille tĂ”ttu kĂ”ik algas. Hiljuti on New Relic tutvustanud uut hinnakava - Alustavad, - mis esmapilgul nĂ€eb vĂ€lja mĂ”istlik alternatiiv Professional ... kuid detailide ĂŒlevaatamisel selgus, et osa olulisi funktsioone puudub (eriti puuduvad seal Key Transactions, Cross Application Tracing, Distributed Tracing).

SeelÀbi hakkasime mÔtlema odavama alternatiivi otsimisele ning meie valik langes kahele teenusele, Datadog ja Atatus. Miks just need?

Konkurentidest

Tuleb kohe mĂ€rkida, et turul on ka teisi lahendusi. Me isegi kaalume Open Source variante, kuid mitte iga kliendi jaoks ei ole vaba ressursse self-hosted lahenduste paigutamiseks ... — lisaks vajavad need tĂ€iendavat hooldust. Meie valitud paar osutus meie vajadustele kĂ”ige lĂ€hedasemaks:

  • Sisseehtinud ja arenenud PHP rakenduste tugi (meie klientide tehnoloogiad on vĂ€ga erinevad, kuid see on ilmne liider alternatiivi otsingul New Relic'ile);
  • taskukohane hind (alla 100 USD kuus hostimise eest);
  • automaatne instrumenteerimine;
  • integreerimine Kubernetesega;
  • sarnasus New Relic'i liidesele — mĂ€rkimisvÀÀrne pluss (sest meie insenerid on sellega harjunud).

SeetÔttu kÔrvaldati esialgsel valikul mitmed teised populaarsed lahendused, sealhulgas:

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

JĂ€rgmine artikkel on ĂŒles ehitatud nii, et esmalt tutvustatakse lĂŒhidalt arutluse all olevaid lahendusi, seejĂ€rel rÀÀgin meie tĂŒĂŒpilisest koostööst New Relic'iga ja kogemustest / muljetest sarnaste toimingute tegemisel teistes teenustes.

Valitud konkurentide esitlus

Mitme New Relic'i: vaade Datadogile ja Atatusele
KĂŒsimus New Relic, ilmselt on igaĂŒks kuulnud? See teenus alustas oma arengut ĂŒle 10 aasta tagasi, 2008. aastal. Me oleme seda aktiivselt kasutanud alates 2012. aastast ja pole tĂ”eliselt suures hulkade rakenduste integreerimisega probleeme kogenud, sealhulgas PHP, Ruby ja Python keeles, samuti on meil olnud kogemusi C# ja Go integreerimisega. Teenuse autoritel on lahendused rakenduste, infrastruktuuri monitoorimiseks, mikroteenusinfrastruktuuride jĂ€lgimiseks, loodud mugavad rakendused kasutajaseadmetele ja palju muud.

Kuid New Relic'i agent töötab omandiÔiguse alusel, tal puudub OpenTracing tugi. TÀiustatud instrumenteerimiseks on vajalikud muudatused spetsiaalselt New Relic'i jaoks. LÔpuks on Kubernetes'e tugi hetkel katsefaasis.

Mitme New Relic'i: vaade Datadogile ja Atatusele
Arengut alustanud 2010. aastal Datadog nĂ€ib Kubernetes keskkondades olevat oluliselt huvitavam kui New Relic. EelkĂ”ige toetab see integreerimist NGINX Ingress'iga, logide kogumist, protokolle statsd ja OpenTracing, mis vĂ”imaldab jĂ€lgida kasutaja pĂ€ringut ĂŒhenduse loomisest kuni töö lĂ”petamiseni, samuti leida selle pĂ€ringuga seotud logisid (nii veebiserveri poolel kui ka tarbijate poolel).

Datadog'i kasutamisel kohtasime probleemi, et see mĂ”nikord ehitas vale mikroteenuste kaardi ja teisi tehnilisi puudusi. NĂ€iteks tuvastas see vale teenuse tĂŒĂŒbi (vĂ”ttis Django teenusena, mis tegeleb vahemĂ€lu haldamisega) ning pĂ”hjustas 500 viga PHP rakenduses, mis kasutas populaarset teeki Predis.

Mitme New Relic'i: vaade Datadogile ja Atatusele
Atatus — kĂ”ige noorem tööriist; teenus kĂ€ivitati 2014. aastal. Selle turunduseelarve jĂ€tab oluliselt alla loetletud konkurentide puhul, mainimised esinevad oluliselt harvem. Siiski on tööriist iseenesest vĂ€ga sarnane New Relic'ule, mitte ainult funktsioonide (APM, brauseri jĂ€lgimine jne) poolest, vaid ka vĂ€limuse poolest.

Oluliseks puuduseks on toetuse pakkumine vaid Node.js ja PHP-le. Teisest kĂŒljest, see on realiseeritud mĂ€rkimisvÀÀrselt paremini kui Datadog'i puhul. Erinevalt viimasest ei nĂ”ua Atatus rakendustelt tĂ€iendavate markeeringute lisamist koodis.

Kuidas me töötame New Relic'uga

NĂŒĂŒd vaatame, kuidas me tavaliselt New Relic'ut kasutame. Oletame, et meil on probleem, mis vajab lahendamist:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Diagrammil on kergesti mĂ€rgatav piik — analĂŒĂŒsime seda. New Relic'is on veebirakenduse jaoks kohe valitud veebitehingud, jĂ”udluse diagrammil on nĂ€idatud kĂ”ik komponendid, sealhulgas error-rate, request-rate... Mis on kĂ”ige olulisem — otse nendelt paneelidelt saab liikuda erinevate rakenduse osade vahel (nĂ€iteks klikkimine MySQL viib andmebaaside sektsiooni).

Kuna antud nÀites nÀeme aktiivsuse piiki PHP, klikki selle diagrammi peale ja liikuge automaatselt Tehingud:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Tehingute nimekiri, mis sisuliselt on MVC mudeli kontrollerid, on juba sorteeritud jÀrgi Enim aega nÔudvad, mis on vÀga mugav: me nÀeme kohe, millega rakendus tegeleb. Siin on ka nÀidatud pikaajaliste pÀringute nÀidised, mis kogutakse automaatselt New Relic'i poolt. Sortimise vahetamisel on lihtne leida:

  • rakenduse kĂ”ige koormatud kontroller;
  • kĂ”ige sagedamini kĂŒsitud kontroller;
  • kĂ”ige aeglasem kontrolleritest.

Lisaks on vÔimalik iga tehingu avada ja nÀha, millega rakendus tegi koodi tÀitmise ajal:

Mitme New Relic'i: vaade Datadogile ja Atatusele

LĂ”puks salvestatakse rakenduses nĂ€idised pikaajaliste pĂ€ringute jĂ€lgedest (mis kestavad ĂŒle 2 sekundi). Siin on paneel pika tehingu jaoks:

Mitme New Relic'i: vaade Datadogile ja Atatusele

NĂ€htav on, et palju aega kulub kahele meetodile, nĂ€idatakse ka aega, millal pĂ€ring tĂ€ideti, selle URI ja domeeni. VĂ€ga sageli aitab see leida pĂ€ringu logidest. Liikudes JĂ€lgimise ĂŒksikasjad, saab vaadata, kust need meetodid kutsutakse:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Ja Andmebaasi pĂ€ringud — hinnata andmebaasi pĂ€ringuid, mis toimusid rakenduse töötamise ajal:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Relvastades neid teadmisi, saame hinnata rakenduse aeglustumise pÔhjust ja koostada koos arendajaga strateegia probleemi lahendamiseks. Tegelikult ei paku New Relic alati selget pilti, kuid see aitab valida uurimise suuna:

  • pikalt PDO::Construct viis meid kummalise pgpoll'i toimimise juurde;
  • ebastabiilsus ajas Memcache::Get töötas vĂ€lja vale virtuaalmasina konfiguratsiooni;
  • kahtlaselt pikenenud mallide töötlemise aeg viis 500 avatariga objektihoidlasse kontrolliva sisemise tsĂŒklini;
  • ja nii edasi


Oht, et koodi asemel pÔhilisel ekraanil tÔuseb midagi, mis on seotud vÀlise andmehoidla - olgu see Redis vÔi PostgreSQL, - peitub kÔikides vahekaartides Andmebaasid.

Mitme New Relic'i: vaade Datadogile ja Atatusele

Saate valida konkreetse andmebaasi uurimiseks ja sorteerida pÀringuid - sarnaselt sellele, kuidas seda tehakse Transactions. Ja liikudes pÀringu vahekaardile, saate nÀha, kui sageli see pÀring esineb iga rakenduse kontrolleris ja hinnata, kui tihti seda kutsutakse. See on vÀga mugav:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Sarnaseid andmeid sisaldab vahekaart External Services, mis peidab endas vĂ€liste HTTP-teenuste pĂ€ringud, nagu objektide hoidla kĂ”ned, sĂŒndmuste saatmine sentry'le vĂ”i midagi sarnast. Oma sisu poolest on see vahekaart tĂ€ielikult analoogne Databases:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Konkurendid: vÔimalused ja muljed

NĂŒĂŒd on kĂ”ige huvitavam - vĂ”rreldame New Relici vĂ”imalusi selle, mida pakuvad konkurendid. Kahjuks ei Ă”nnestunud meil testida kĂ”iki kolme tööriista ĂŒhe tööversiooni production rakenduses. Sellegipoolest ĂŒritasime vĂ”rrelda vĂ”imalikult identsed olukorrad/konfiguratsioonid.

1. Datadog

Datadog tervitab meid teenuste seinaga:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Ta pĂŒĂŒab rakendused jagada komponentide/mikroteenuste vahel, seega nĂ€eme antud nĂ€ites Django rakenduse korral 2 ĂŒhendust PostgreSQL-iga (defaultdb ja postgres), samuti Celery, Redis. Datadogiga töötamine nĂ”uab teilt minimaalset arusaamist MVC pĂ”himĂ”tetest: on vajalik mĂ”ista, kuhu kasutajate pĂ€ringud tegelikult jĂ”uavad. Tavaline abi on teenuste kaart:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Muide, midagi sarnast on ka New Relicis:

Mitme New Relic'i: vaade Datadogile ja Atatusele


 ja nende kaart, minu arvates, on lihtsam ja arusaadavam: see kajastab mitte ĂŒhe rakenduse komponente (mis vĂ”iks muuta selle liialt detailsiseks, nagu Datadogi puhul), vaid ainult konkreetseid teenuseid vĂ”i mikroteenuseid.

Naaseme Datadogi juurde: teenuste kaardilt on nÀha, et kasutajate pÀringud jÔuavad Django kaudu. LÀheme edasi Django teenusesse ja lÔpuks nÀeme seda, mida ootasime:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Kahjuks pole siin vaikimisi graafikut Veebitehingu aeg, mis on analoogne sellele, mida nĂ€eme New Relici pĂ”himenĂŒĂŒs. Siiski saab selle seadistada graafiku kohale % aega veedetud. Piisab selle lĂŒlitamisest Keskmine aeg pĂ€ringu kohta tĂŒĂŒbi jĂ€rgi
 ja nĂŒĂŒd vaatab meile vastu tuttav graafik!

Mitme New Relic'i: vaade Datadogile ja Atatusele

Miks on Datadog eelistanud teistsugust graafikut — on meie jaoks mĂ”istatus. Pettumus oli ka see, et sĂŒsteem ei mĂ€leta kasutaja valiku (erinevalt mĂ”lemast konkurendist), seega pÀÀstab ainult kasutajapaneelide loomine.

KĂŒll aga rÔÔmustas Datadog vĂ”imalus liikuda nende graafikute kaudu seotud serverite mÔÔdikutele, lugeda logisid ja hinnata veebiserveri (Gunicorn) koormust. Peaaegu nagu New Relicis
 ja isegi natuke rohkem (logid)!

Graafikute all on tehingud, mis on tÀielikult analoogsed New Relici omadega:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Datadogis nimetatakse tehinguid ressurssideks. Saame sorteerida kontrollerid pÀringute arvu, keskmise vastuseaja ja valitud ajavahemiku maksimaalse aja pÔhjal.

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

Mitme New Relic'i: vaade Datadogile ja Atatusele

Saadaval on nii ressursi statistika, alustatud sisekutsed, kui ka pÀringute nÀidised, mida saab sorteerida vastuskoodi jÀrgi
 Muide, see sorteerimine meeldis meie inseneridele vÀga.

Iga Datadogi ressursi nÀidet saab avada ja uurida:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Kuvatakse pÀringu parameetrid, iga komponendi kulutatud aja kokkuvÔtte diagramm ja vesiputouvi diagramm, kus on nÀhtavad kutsete jÀrjekord. Samuti on saadaval vahetus puustruktuuri diagrammi vaate vahel:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Ja huvitav on vaadata ka hosti koormust, millel pÀring tehti, ja vaadata pÀringu logisid.

Mitme New Relic'i: vaade Datadogile ja Atatusele

SuurepÀrane integreerimine!

VĂ”ib tekkida kĂŒsimus, kus on vahelehed Andmebaasid ja External Services, nagu New Relicis. Siin neid ei ole: kuna Datadog jagab rakenduse komponentideks, loetakse PostgreSQL erinevaks teenuseks, ja vĂ€ljaspool teenuseid tuleb otsida aws.storage (sama kehtib ka iga muu vĂ€line teenus, millega rakendus ĂŒhendust vĂ”tab).

Mitme New Relic'i: vaade Datadogile ja Atatusele

Siin on nÀide postgres:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Sisuliselt on kÔik see, mida me soovisime:

Mitme New Relic'i: vaade Datadogile ja Atatusele

On selgelt nÀha, millisest "teenusest" pÀrineb pÀring.

Ei tee paha meenutada, et Datadog integreerub suurepÀraselt NGINX Ingressiga ja vÔimaldab lÀbi jÀlgida pÀringu teekonda klastrisse ning vÔimaldab vastu vÔtta statsd mÔÔdikud, koguda logisid ja hostide mÔÔdikuid.

Suur pluss Datadogi juures on see, et tema hind koosneb infrastruktuuri jÀlgimisest, APM-ist, logihalduse ja Synthetics testi, st plaani on paindlikult vÔimalik valida.

2. Atatus

Meeskond Atatus vÀidab, et nende teenus on "samamoodi nagu New Relic, kuid parem". Vaadakem, kas see on tÔsi.

PeamenĂŒĂŒ nĂ€eb tĂ”epoolest sarnane vĂ€lja, kuid rakenduses kasutatavaid Redis ja memcached ei Ă”nnestunud tuvastada.

Mitme New Relic'i: vaade Datadogile ja Atatusele

APM valib vaikimisi kĂ”ik tehingud, ehkki tavaliselt on vajalikud ainult veebitehingud. Nagu Datadogis, ei ole vĂ”imalik peamenĂŒĂŒst liikuda soovitud teenusele. Veelgi enam, tehingud asuvad loendis pĂ€rast vigu, mis APM-i puhul ei tundu eriti loogiline.

Tehingud Atatuses nĂ€evad maksimaalselt vĂ€lja nagu New Relicis. Miinus — ei ole kohe nĂ€ha dĂŒnaamikat iga kontrolleri jaoks. Selle leidmine peab toimuma kontrollerite tabelis, sorteerides lĂ€bi Enim kulutatud aeg:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Tuttav kontrollerite nimekiri on saadaval vahekaardil Uuring:

Mitme New Relic'i: vaade Datadogile ja Atatusele

See tabel meenutab veidi Datadogi ja on rohkem meelepÀrane kui sama New Relicis.

Iga tehingu saab avada ja nÀha, millega rakendus tegeles:

Mitme New Relic'i: vaade Datadogile ja Atatusele

MenĂŒĂŒ sarnaneb rohkem Datadogile: seal on pĂ€ringute arv, ĂŒlevaade kĂ”igist kutsetest. Ülemine paneel pakub veaparand vana HTTP tĂ”rked ja aeglaste pĂ€ringute nĂ€idiseid Seansi jĂ€ljed:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Kui liikuda tehingusse, on nÀhtav nÀide jÀljest, saab saada loendi pÀringutest andmebaasi ja vaadata pÀringu pÀiseid. KÔik on sarnane New Relicile:

Mitme New Relic'i: vaade Datadogile ja Atatusele

Üldiselt, Atatus pakkus pĂ”hjalikke jĂ€lgi — ilma tĂŒĂŒpiliste New Relici kutsetelekkimisteta mĂ€lestuste plokkidesse:

Mitme New Relic'i: vaade Datadogile ja Atatusele
Mitme New Relic'i: vaade Datadogile ja Atatusele

Kuid siit puudub filter, mis (nagu New Relicis) eemaldas ĂŒlikiired pĂ€ringud (<5ms). Teisest kĂŒljest meeldis tehingu lĂ”ppvastuse kuvamine (edukalt vĂ”i viga).

Paneel Andmebaasid aitab uurida vÀlistest andmebaasidest pÀringu tegemise aspekte. Tuletan meelde, et Atatus leidis ainult PostgreSQL ja MySQL, kuigi projektis on kasutusel veel Redis ja memcached.

Mitme New Relic'i: vaade Datadogile ja Atatusele

PĂ€ringud sorteeritakse tuttavate kriteeriumide jĂ€rgi: esinemissagedus, keskmine vastamisaeg ja nii edasi. Eraldi tasub mainida aeglasemate pĂ€ringute vahekaart — see on vĂ€ga mugav. Veelgi enam, andmed selles vahekaardis PostgreSQL-i kohta kattuvad laienduse andmetega. pg_stat_statements — suurepĂ€rane tulemus!

Mitme New Relic'i: vaade Datadogile ja Atatusele

Vahekaart VÀlistingimused on tÀielikult identne andmebaasidega.

JĂ€reldused

MĂ”lemad esitletud tööriistad on oma rollis APM-is hĂ€sti esinenud. IgaĂŒks neist vĂ”ib pakkuda vajaliku miinimumi. Üldiselt vĂ”ib meie muljeid kokku vĂ”tta jĂ€rgmiselt:

Datadog

Plussid:

  • mugav hinnakujundus (APM maksab 31 USD hosti kohta);
  • nĂ€itas end Pythoniga suurepĂ€raselt;
  • vĂ”imalus integreerida OpenTracinguga
  • integreerimine Kubernetesega;
  • integreerimine NGINX Ingressiga.

Miinused:

  • ainus APM, mis tekitas rakenduse kĂ€ttesaamatuse mooduli vea tĂ”ttu (predis);
  • nĂ”rk automaatne instrumentatsioon PHP-le;
  • osaliselt kummaline teenuste mÀÀratlemine ja nende eesmĂ€rk.

Atatus

Plussid:

  • sĂŒgav instrumentatsioon PHP-le;
  • kasutajaliides on sarnane New Relicile.

Miinused:

  • ei tööta vanadel operatsioonisĂŒsteemidel (Ubuntu 12.05, CentOS 5);
  • nĂ”rk automaatne instrumenteerimine;
  • toetab vaid kahte programmeerimiskeelt (Node.js ja PHP);
  • liidese aeglane töö.

Arvestades Atatuse hinda 69 USD kuus serveri kohta, eelistaksime pigem Datadogi, mis integreerub suurepÀraselt meie vajadustega (veebirakendused K8s-is) ja omab palju kasulikke funktsioone.

P.S.

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster