
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 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 â , â 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

Umbes , 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.

Alustanud oma teed 2010. aastal 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.

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:

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:

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:

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

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:

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

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::Constructs viis meid kummalise pgpoll'i toimimise juurde; - aeglus aja jooksul
Memcache::GetnĂ€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.

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:

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:

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:

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:

ĂlejÀÀnud sarnane on ka New Relicis:

⊠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:

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!

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:

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:

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:

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:

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

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).

Siin on nÀide postgres:

Sisuliselt on kÔik see, mida soovisime:

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.

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:

Meile tuttav kontrollerite nimekiri on saadaval vahekaardil Uurimine:

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:

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:

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:

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


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.

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. â suurepĂ€rane tulemus!

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
