Jo një New Relic: një vështrim në Datadog dhe Atatus

Jo një New Relic: një vështrim në Datadog dhe Atatus

Në mesin e inxhinierëve SRE/DevOps, askush nuk do të befasohej se një klient (ose sistem monitorimi) një herë do të informojë se "gjithçka ka shkuar keq": faqja nuk funksionon, pagesat nuk kalojnë, jeta është e kotë... Sa do që dëshirojmë të ndihmojmë në një situatë të tillë, ta bëjmë këtë pa një mjet të thjeshtë e të kuptueshëm është shumë e vështirë. Shpesh problemi është i fshehur në kodin e vetë aplikacionit — thjesht duhet ta lokalizoni atë.

Në mëngjes e në mbrëmje…

Kështu ndodhi që ne e dashurojmë New Relic prej kaq shumë kohësh. Ai ka qenë dhe mbetet një mjet i shkëlqyer për monitorimin e performancës së aplikacionit, si dhe lejon instrumentimin e arkitekturës mikroshërbimore (me anë të agjentit të tij) dhe shumë e shumë më tepër. Dhe gjithçka do të ishte e shkëlqyer, nëse nuk do të ishin ndryshimet në politikën e çmimeve të shërbimit: çmimi nga viti 2013 ka rritur më shumë se 3 herë. Për më tepër, që nga viti i kaluar për të marrë një llogari për provë kërkohet komunikimi me një menaxher personal, që e vështirëson prezantimin e produktit për klientët potencialë.

Një situatë e zakonshme: New Relic nuk nevojitet në "bazë të përhershme", për të, kujtohen vetëm në atë moment kur fillojnë problemet. Por gjithsesi duhet paguar rregullisht (140 USD për server në muaj), dhe në infrastrukturën cloud që automatikisht shkallon, shumat bëhen të mëdhaja. Edhe pse ka mundësi "Pay-As-You-Go", por për të aktivizuar New Relic nevojitet rivendosja e aplikacionit, që mund të çojë në humbjen e atij problemi, për të cilin u nisa gjithçka. Jo shumë kohë më parë, New Relic prezantoi një plan të ri çmimi — Essentials, — i cili në shikim të parë duket si një alternativë e arsyeshme për Professional… por pas shqyrtimit të detajuar doli se disa funksione të rëndësishme mungonin (në veçanti, ai nuk përmban Transaksionet Kyçe, Marrëveshje ndër-aplikative, Gjetja e shpërndarë).

Si rezultat, ne filluam të mendojmë për kërkimin e një alternative më të lirë, dhe zgjedhja jonë ra mbi dy shërbime Datadog dhe Atatus. Pse pikërisht ato?

Për konkurentët

Të them të drejtën, në treg ekzistojnë edhe zgjidhje të tjera. Ne madje shqyrtuam mundësi Open Source, por jo të gjithë klientët kanë kapacitete të lira për të akomoduar zgjidhjet e kategorisë së vetë-hostuar… — për më tepër, ato do të kërkonin mbështetje të mëtejshme. Çifti që kemi zgjedhur doli të ishte më i afërt me nevojat tona:

  • mbështetje e integruar dhe e zhvilluar për aplikacionet PHP (stoku i klientëve tanë është shumë i ndryshëm, por ky është lider i qartë në kontekstin e kërkimit të alternativave për New Relic);
  • çmimi i arsyeshëm (më pak se 100 USD në muaj për host);
  • instrumentim automatik;
  • integrimi me Kubernetes;
  • ngjashmëria me ndërfaqen e New Relic — një plus i dukshëm (pasi inxhinierët tanë janë mësuar me të).

Prandaj, në fazën e përzgjedhjes fillestare, ne përjashtuam disa zgjidhje të njohura, në veçanti:

  • Tideways, AppDynamics dhe Dynatrace — për çmimin;
  • Stackify — i bllokuar në RF dhe tregon shumë pak të dhëna.

Artikulli i mëtejmë është ndërtuar në mënyrë të tillë, që fillimisht do të paraqiten shkurtimisht zgjidhjet e shqyrtuara, e më pas do të flas për ndërveprimin tonë tipik me New Relic dhe përvojën / përshtypjet nga realizimi i operacioneve të ngjashme në shërbime të tjera.

Prezantimi i konkurrentëve të përzgjedhur

Jo një New Relic: një vështrim në Datadog dhe Atatus
Për New Relic, ndoshta, ka dëgjuar çdo kush? Ky shërbim filloi zhvillimin e tij më shumë se 10 vjet më parë, në vitin 2008. Ne e përdorim atë aktivisht që nga viti 2012 dhe nuk kemi përjetuar probleme me integrimin e një numri të vërtetë të aplikacioneve në gjuhët PHP, Ruby dhe Python, gjithashtu kemi pasur përvojë integrimi me C# dhe Go. Autorët e shërbimit kanë zgjidhje për monitorimin e aplikacioneve, infrastrukturës, gjurmimin e infrastrukturave të mikroshërbimeve, janë krijuar aplikacione praktike për pajisjet e përdoruesve dhe shumë më tepër.

Megjithatë, agjenti New Relic punon me protokolle pronësore, nuk ka mbështetje për OpenTracing. Për instrumentimin e avancuar kërkohen ndryshime të veçanta për New Relic. Së fundmi, mbështetja për Kubernetes aktualisht ka status eksperimental.

Jo një New Relic: një vështrim në Datadog dhe Atatus
Duke filluar zhvillimin e tij në vitin 2010 Datadog shfaqet dukshëm më interesante se New Relic në aspektin e aplikimeve në mjedise Kubernetes. Në veçanti, ai mbështet integrimin me NGINX Ingress, mbledhjen e log-eve, protokollet statsd dhe OpenTracing, gjë që lejon ndjekjen e kërkesës së përdoruesit nga momenti i lidhjes deri në përfundimin e punës, si dhe gjetjen e log-eve për këtë kërkesë (si nga ana e serverit të uebit ashtu edhe nga ana e konsumatorëve).

При përdorimin e Datadog, ne u përballëm me faktin se ai ndonjëherë ndreqte gabimisht hartën e mikroshërbimeve dhe disa defekte teknike. Për shembull, ai nuk e përcaktonte saktë llojin e shërbimit (e perceptoi Django si një shërbim të caches) dhe shkaktonte gabime 500 në aplikacionin PHP që përdorte bibliotekën e njohur Predis.

Jo një New Relic: një vështrim në Datadog dhe Atatus
Atatus është mjeti më i ri; shërbimi është nisur në vitin 2014. Buxheti i tij marketing është dukshëm më i vogël se ai i konkurentëve të përmendur, përmendjet e tij paraqiten shumë më rarë. Megjithatë, mjeti vetë është shumë i ngjashëm me New Relic, jo vetëm në mundësitë (APM, monitorimi i shfletuesit, etj.), por edhe në pamjen e tij.

Një disavantazh i rëndësishëm është mbështetja vetëm për Node.js dhe PHP. Nga ana tjetër, ajo është realizuar dukshëm më mirë se te Datadog. Në ndryshim nga i fundit, Atatus nuk kërkon që aplikacionet të bëjnë ndryshime dhe të vendosin etiketa shtesë në kod.

Si punojmë me New Relic

Tani do të kuptojmë se si ne zakonisht përdorim New Relic. Le të themi që kemi një problem që kërkon zgjidhje:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Në grafik është lehtë të vëresh një shpërthim të analizojmë atë. Në New Relic për aplikacionin web, menjëherë janë zgjedhur transaksionet web, në grafikun e performancës janë të treguara të gjitha komponentët, janë të pranishme panelet e error-rate, request-rate... Çfarë është kryesore — direkt nga këto panele mund të kalosh midis pjesëve të ndryshme të aplikacionit (p.sh., klikimi në MySQL do të të çojë në seksionin e bazave të të dhënave).

Duke qenë se në shembullin e shqyrtuar ne shohim një shpërthim aktiviteti PHP, le të klikojmë në këtë grafik dhe automatikisht kalojmë në Transaksionet:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Lista e transaksioneve, të cilat për thelb janë kontrollet nga modeli MVC, tashmë janë renditur sipas Më shumë kohën që konsumon, gjë që është shumë e përshtatshme: ne menjëherë shohim atë me të cilën merret aplikacioni. Këtu gjithashtu ka shembuj të kërkesave të gjata, të cilat grumbullohen automatikisht nga New Relic. Duke ndryshuar renditjen, është lehtë të gjesh:

  • kontrollori më i ngarkuar i aplikacionit;
  • kontrollori më shpesh i kërkuar;
  • kontrollori më i ngadaltë.

Përveç kësaj, është e mundur të hapësh çdo transaksion dhe të shohësh se çfarë ka bërë aplikacioni gjatë ekzekutimit të kodit:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Në fund, në aplikacion ruhen shembuj të gjurmëve të kërkesave të gjata (të cilat ekzekutohen për më shumë se 2 sekonda). Këtu është paneli për një transaksion të gjatë:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Është e qartë se dy metodat e mbajnë shumë kohë, dhe përveç kësaj tregohet edhe koha kur është bërë kërkesa, URI i saj dhe domeni. Shumë shpesh kjo ndihmon të gjejmë kërkesën në log. Duke shkuar në Detajet e gjurmimit, mund të shikojmë se nga kanë ardhur këto metoda:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Dhe në Kërkesat ndaj bazës së të dhënave — vlerësoni kërkesat ndaj bazave të të dhënave që u ekzekutuan në momentin e funksionimit të aplikacionit:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Me këto njohuri, ne mund të vlerësojmë shkakun e ngadalësimit të aplikacionit dhe së bashku me zhvilluesin të hartojmë një strategji për të zgjidhur problemin. Në të vërtetë, New Relic nuk gjithmonë ofron një pamje të qartë, megjithatë ndihmon në zgjedhjen e drejtimit të hetimit:

  • e gjatë PDO::Construct na çoi në një funksionim të çuditshëm të pgpoll;
  • pamundësi në kohë Memcache::Get na sugjeroi për një konfigurim të papërshtatshëm të makinës virtuale;
  • një rritje e dyshimtë e kohës për përpunimin e modelit solli në një cikël të ndërlidhur me kontrollin e pranisë së 500 avatarëve në depot objekt;
  • dhe kështu me radhë…

Ndodhin gjithashtu raste ku në vend të ekzekutimit të kodit në ekranin kryesor rritet diçka e lidhur me ruajtjen e të dhënave nga jashtë — dhe nuk ka rëndësi se çfarë do të jetë kjo: Redis ose PostgreSQL, — të gjitha ato fshihen në skedën Databases.

Jo një New Relic: një vështrim në Datadog dhe Atatus

Mund të zgjidhni një bazë specifike për hetim dhe të bëni renditjen e kërkesave — ashtu siç bëhet në Transactions. Dhe duke kaluar në skedën e kërkesës, mund të shihni sa herë shfaqet kjo kërkesë në secilin nga kontrollet e aplikacionit, si dhe të vlerësoni sa shpesh ajo thirret. Kjo është shumë e dobishme:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Të dhëna të ngjashme përmban skeda Shërbimet e Jashtme, e cila fshin brenda kërkesat ndaj shërbimeve HTTP nga jashtë, të tilla si thirrja në depot e objekteve, dërgimi i ngjarjeve në Sentry ose diçka e tillë. Në përmbajtjen e saj, skeda është plotësisht e ngjashme me Databases:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Konkurrentët: mundësitë dhe përshtypjet

Tani pjesa më interesante — le të krahasojmë mundësitë e New Relic me ato që ofrojnë konkurrentët. Fatkeqësisht, nuk arritëm të testojmë të tre instrumentet në një version të një aplikacioni që funksionon në prodhim. Megjithatë, përpiqemi të krahasojmë situatat/konfigurimet më identike.

1. Datadog

Datadog na pret me një panel që ka një mur shërbimesh:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Ai tenton të ndajë aplikacionet në komponentë/mikroshërbime, prandaj në aplikacionin Django të dhënë si shembull do të shohim 2 lidhje me PostgreSQL (defaultdb dhe postgres), si gjithashtu Celery, Redis. Puna me Datadog kërkon nga ju njohuri minimale të parimeve MVC: duhet të kuptoni se ku arrijnë kërkesat e përdoruesve. Zakonisht kjo ndihmohet harta e shërbimeve:

Jo një New Relic: një vështrim në Datadog dhe Atatus

A, për të vërtetë, ka diçka të ngjashme edhe në New Relic:

Jo një New Relic: një vështrim në Datadog dhe Atatus

… ndonëse harta e tyre, sipas mendimit tim, është e bërë më thjeshtë dhe më qartë: ajo tregon vetëm shërbimet ose mikroshërbimet specifike (çka do ta bënte atë tepër të detajuar siç është rasti me Datadog).

Të kthehemi te Datadog: nga harta e shërbimeve duket se kërkesat e përdoruesve arrijnë në Django. Të kalojmë te shërbimi Django dhe më në fund të shohim atë që prisnim:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Fatkeqësisht, për default këtu nuk ka grafik Koha e transaksionit Web, ekuivalent me atë që shohim në panelin kryesor të New Relic. Megjithatë, mund të konfigurohet në vendin e grafikëve % e kohës së kaluar. Mjafton ta kalosh atë në Koha mesatare për kërkesë sipas Llojit… dhe ja, tani na shikon një grafik i njohur!

Jo një New Relic: një vështrim në Datadog dhe Atatus

Pse Datadog zgjodhi një grafik tjetër — për ne është një mister. Na shqetësoi gjithashtu se sistemi nuk e ruan zgjedhjen e përdoruesit (ndryshe nga të dy konkurrentët), kështu që — shpëtimi është krijimi i paneleve përdoruese.

Ndërsa na gëzoi mundësia në Datadog për të kaluar nga këta grafika në metrikat e serverëve të lidhur, të lexojmë logjet dhe të vlerësojmë ngarkesën e trajtuesve të serverëve web (Gunicorn). Të gjitha janë pothuajse si në New Relic… dhe madje disa më shumë (logjet)!

Poshtë grafikëve ndodhen transaksionet, plotësisht analoge me New Relic:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Në Datadog, transaksionet quhen burime. Mund të renditen kontrolluesit sipas numrit të kërkesave, sipas kohës mesatare të përgjigjes, sipas kohës maksimale të harxhuar për periudhën e zgjedhur.

Burimi mund të shtrihet dhe të shihni të gjitha ato që kemi parë tashmë në New Relic:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Në dispozicion janë statistikat për burimin, një listë e përmbledhur e thirrjeve të brendshme dhe shembuj të kërkesave, të cilat mund të renditen sipas kodit të përgjigjes… Në këtë drejtim, kjo renditje u pëlqeu shumë inxhinierëve tanë.

Çdo shembull burimi në Datadog mund të jetë i hapur dhe i studiuar:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Janë paraqitur parametrat e kërkesës, një diagram përmbledhës mbi kohën e kaluar për secilin nga komponentët dhe një diagram-fall, në të cilin shikohet rendi i thirrjeve. Gjithashtu është e disponueshme kalimi në pamjen me degëzuese të diagramit-fall:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Dhe gjëja më interesante është se mund të shihni ngarkesën e hostit, mbi të cilin u ekzekutua kërkesa, si dhe logët e kërkesës.

Jo një New Relic: një vështrim në Datadog dhe Atatus

Integrim i shkëlqyeshëm!

Mund të lindë pyetja, ku janë tabulatet Databases dhe Shërbimet e Jashtme, si në New Relic. Këtu nuk i kemi: pasi Datadog analizon aplikacionin në komponentë, PostgreSQL do të konsiderohet si një shërbim të veçantë, dhe në vend të Shërbimeve të Jashtme duhet të kërkoni aws.storage (po njësoj do të jetë edhe për çdo shërbim tjetër të jashtëm me të cilin aplikacioni mund të lidhet).

Jo një New Relic: një vështrim në Datadog dhe Atatus

Ja një shembull nga postgres:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Në thelb, ka gjithçka që dëshironim:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Shikohet se nga cili "shërbim" erdhi kërkesa.

Nuk do të ishte e tepërt të kujtojmë se Datadog integrohet shkëlqyeshëm me NGINX Ingress dhe lejon gjurmimin e plotë nga momenti i mbërritjes së kërkesës në klaster, si dhe lejon marrjen e metrikave statsd, grumbullimin e logëve dhe metrikave të hostëve.

Një përparësi e madhe e Datadog është se çmimi i tij përbëhet nga monitorimi i infrastrukturës, APM, Menaxhimi i Logëve dhe Testet Synthetics, dmth. mund të zgjidhni planin në mënyrë fleksible.

2. Atatus

Ekipi i Atatus thotë se shërbimi i tyre është "si New Relic, por më mirë". Le të shohim nëse është vërtet kështu.

Paneli kryesor duket vërtet i ngjashëm, por nuk arritëm të përcaktojmë përdorimin e Redis dhe memcached në aplikacion.

Jo një New Relic: një vështrim në Datadog dhe Atatus

APM përzgjedh të gjitha transaksionet nga e drejta, ndonëse zakonisht nevojiten vetëm ato Web. Ashtu si në Datadog, nuk ka mundësi të kalosh në shërbimin e nevojshëm nga paneli kryesor. Akoma më shumë, transaksionet ndodhen në listë pas gabimeve, gjë që nuk duket shumë logjike për APM.

Në transaksionet e Atatus është maksimalisht e ngjashme me New Relic. Pika negative është se nuk shikohet menjëherë dinamika për çdo një nga kontrolluesit. Ajo duhet të kërkohet në tabelën e kontrolluesve, duke u renditur sipas Most Time Consumed:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Lista e njohur e kontrolluesve është e disponueshme në skedën Explore:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Kjo tavëll na kujton diku Datadog dhe na pëlqen më shumë se ajo e ngjashme në New Relic.

Çdo transaksion mund të shfaqet dhe të shikohet se çfarë ka bërë aplikacioni:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Paneli gjithashtu i ngjan më shumë Datadog: ka numrin e kërkesave, pamjen e përgjithshme të thirrjeve. Paneli i sipërm ofron skedën me gabime HTTP Failures dhe shembuj të kërkesave të ngadalta Session Traces:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Nëse kaloni në transaksion, do të shihni një shembull trace, mund të merrni listën e kërkesave në bazë të të dhënave dhe të shihni titujt e kërkesës. Gjithçka është si në New Relic:

Jo një New Relic: një vështrim në Datadog dhe Atatus

Në tërësi, Atatus na kënaq me detajet e gjurmimeve — pa ngjashmërinë tipike për New Relic të thirrjeve të ngjitura në bllokun kujtesë:

Jo një New Relic: një vështrim në Datadog dhe Atatus
Jo një New Relic: një vështrim në Datadog dhe Atatus

Megjithatë, këtu mungon një filtrimi që do të priste kërkesat super të shpejta (<5ms) (si në New Relic). Nga ana tjetër, shfaqja e përgjigjes përfundimtare të transaksionit (sukses ose gabim) ishte e këndshme.

Paneli Databases do të ndihmojë në studimin e kërkesave ndaj bazave të dhënash të jashtme që bën aplikacioni. Përkujtoj që Atatus gjeti vetëm PostgreSQL dhe MySQL, ndonëse në projekt janë përdorur edhe Redis dhe memcached.

Jo një New Relic: një vështrim në Datadog dhe Atatus

Kërkesat renditen sipas kritereve të njohura: frekuenca e ndodhjes, koha mesatare e përgjigjes dhe kështu me radhë. Veçanërisht dua të theksoj tabin me kërkesat më të ngadalta — është shumë e përshtatshme. Për më tepër, të dhënat në këtë tab me PostgreSQL përputhen me të dhënat nga zgjerimi pg_stat_statements — një rezultat i shkëlqyer!

Jo një New Relic: një vështrim në Datadog dhe Atatus

Tabi Kërkesat Eksterne është plotësisht identike me Databases.

Përfundimet

Të dy mjetet e paraqitura kanë treguar performancë të mirë si APM. Çdo një prej tyre mund të ofrojë minimumin e nevojshëm. Të përmbledhim shkurtimisht përshtypjet tona:

Datadog

Avantazhet:

  • një dërrasë tarifore komode (APM kushton 31 USD për host);
  • treguar njohuri të shkëlqyer me Python;
  • mundësia e integrimit me OpenTracing
  • integrimi me Kubernetes;
  • integrimi me NGINX Ingress.

Disavantazhet:

  • APM i vetëm që shkaktoi mungesë funksionaliteti të aplikacionit për shkak të një gabimi në modul (predis);
  • auto-instrumentimi i dobët PHP;
  • pjesërisht definimi i çuditshëm i shërbimeve dhe qëllimeve të tyre.

Atatus

Avantazhet:

  • instrumentimi i thellë PHP;
  • një ndërfaqe e ngjashme me New Relic.

Disavantazhet:

  • nuk funksionon në sistemet operative të vjetra (Ubuntu 12.05, CentOS 5);
  • auto-instrumentimi i dobët;
  • mbështetje për vetëm dy gjuhë programuese (Node.js dhe PHP);
  • funksionimi i ngadalshëm i ndërfaqes.

Duke marrë parasysh çmimin e Atatus prej 69 USD në muaj për serverin, ne do të preferonim të përdornim Datadog, i cili integrohet shkëlqyer me nevojat tona (aplikacione në K8s) dhe ka shumë funksione të dobishme.

P.S.

Lexoni gjithashtu në blogun tonë:

Burimi: habr.com

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster