Not New Relic solu: un sguardu à Datadog è Atatus
In l'ambienti di l'ingegneri SRE / DevOps, ùn sorprenderà à nimu chì un ghjornu un cliente (o un sistema di surviglianza) apparisce è informa chì "tuttu hè persu": u situ ùn funziona micca, i pagamenti ùn passanu micca, a vita hè in decadenza. ... Ùn importa micca quantu vulete aiutà in una tale situazione, pò esse assai difficiule di fà questu senza un strumentu simplice è comprensibile. Spessu u prublema hè oculatu in u codice di l'applicazione stessu; basta à localizà lu.
È in tristezza è in gioia…
Hè accadutu chì avemu longu è prufondamente innamuratu di New Relic. Era è resta un strumentu eccellente per monitorizà u rendiment di l'applicazioni, è permette ancu di strumentà l'architettura di u microserviziu (usendu u so agente) è assai, assai più. È tuttu puderia esse grande s'ellu ùn era micca per cambiamenti in a pulitica di prezzu di u serviziu: it costu di da l'annu 2013 crisciutu 3+ volte. Inoltre, da l'annu passatu, ottene un cuntu di prova hè bisognu di cumunicazione cù un manager persunale, chì rende difficiule di prisentà u pruduttu à un cliente potenziale.
A situazione abituale: New Relic ùn hè micca necessariu nantu à una "basa permanente"; si ricordanu solu in u mumentu chì i prublemi cumincianu. Ma avete sempre bisognu di pagà regularmente (140 USD per servitore per mese), è in una infrastruttura di nuvola chì scala automaticamente i sume aghjunghjenu abbastanza grande. Ancu s'ellu ci hè una opzione Pay-As-You-Go, l'attivazione di New Relic hà bisognu di riavvia l'applicazione, chì pò purtà à a perdita di a situazione problematica per a quale era tuttu iniziatu. Pocu pocu fà, New Relic hà introduttu un novu pianu di tariffu - Passaddi, - chì à u primu sguardu s'assumiglia à una alternativa raghjone à Prufessiunale... ma dopu à un esame più attentu, si scopre chì alcune funzioni impurtanti sò mancanti (in particulare, ùn hà micca Transazzioni chjave, Cross Application Tracing, Tracciamentu distribuitu).
In u risultatu, avemu principiatu à pensà à circà una alternativa più economica, è a nostra scelta hè cascata nantu à dui servizii: Datadog è Atatus. Perchè nantu à elli?
Circa i cuncurrenti
Lasciami dì subitu chì ci sò altre suluzioni nantu à u mercatu. Avemu ancu cunzidiratu l'opzioni Open Source, ma micca tutti i clienti anu capacità libera per accoglie suluzioni self-hosted ... - in più, anu bisognu di mantenimentu supplementu. A coppia chì avemu sceltu hè stata a più vicina i nostri bisogni:
supportu integratu è sviluppatu per l'applicazioni PHP (a pila di i nostri clienti hè assai diversa, ma questu hè un capu chjaru in u cuntestu di a ricerca di una alternativa à New Relic);
costu assequible (menu di 100 USD per mese per host);
strumentu autumàticu;
integrazione cù Kubernetes;
A similarità cù l'interfaccia New Relic hè un plus notevuli (perchè i nostri ingegneri sò abituati).
Dunque, in a fase iniziale di selezzione, avemu eliminatu parechje altre soluzioni populari, è in particulare:
Tideways, AppDynamics è Dynatrace - per u costu;
Stackify hè bluccatu in a Federazione Russa è mostra troppu pocu dati.
U restu di l'articulu hè strutturatu in tale manera chì e suluzioni in quistione seranu prima presentate brevemente, dopu à quale parleraghju di a nostra interazzione tipica cù New Relic è l'esperienza / impressioni da fà operazioni simili in altri servizii.
Presentazione di i cuncurrenti selezziunati
nantu New Relic, probabilmente tutti l'anu intesu? Stu serviziu hà iniziatu u so sviluppu più di 10 anni fà, in u 2008. L'avemu utilizatu attivamente da u 2012 è ùn avemu micca avutu prublemi per integrà un gran numaru d'applicazioni in PHP, Ruby è Python, è avemu avutu ancu sperienza in integrazione cù C# è Go. L'autori di u serviziu anu suluzioni per u monitoraghju di l'applicazioni, l'infrastruttura, a traccia di l'infrastrutture di microserviziu, creanu applicazioni convenienti per i dispositi d'utilizatori, è assai più.
Tuttavia, l'agente New Relic funziona nantu à protokolli proprietarii è ùn sustene micca OpenTracing. A strumentazione avanzata richiede edizioni specificamente per New Relic. Infine, u supportu Kubernetes hè sempre sperimentale.
Accuminciau u so sviluppu in u 2010 datadog pari notevolmente più interessante di New Relic precisamente in termini di usu in ambienti Kubernetes. In particulare, sustene l'integrazione cù NGINX Ingress, cullizzioni di log, statsd è protokolli OpenTracing, chì vi permette di seguità una dumanda di l'utilizatori da u mumentu chì hè cunnessu à a fine, è ancu di truvà logs per sta dumanda (sia in u latu di u servitore web). è nantu à u cunsumadore).
Quandu aduprendu Datadog, avemu scontru chì qualchì volta hà custruitu a mappa di u microserviziu in modu incorrectu, è alcune carenze tecniche. Per esempiu, hà misidentified u tipu di serviziu (micca Django per un serviziu di caching) è hà causatu 500 errori in una applicazione PHP utilizendu a famosa biblioteca Predis.
Atatus - u più chjucu strumentu; u serviziu hè statu lanciatu in 2014. U so budgetu di marketing hè chjaramente inferjuri à i cuncurrenti listati, menzioni sò assai menu cumuni. Tuttavia, u strumentu stessu hè assai simili à New Relic, micca solu in i so capacità (APM, surviglianza di u navigatore, etc.), ma ancu in l'apparenza.
Un inconveniente significativu hè chì sustene solu Node.js è PHP. Per d 'altra banda, hè implementatu notevolmente megliu cà Datadog. A diversità di l'ultimi, Atatus ùn hà micca bisognu di l'applicazioni per fà mudificazioni o aghjunghje etichette supplementari à u codice.
Cumu travaglià cù New Relic
Avà scopremu cumu usemu in generale New Relic. Diciamu chì avemu un prublema chì hà bisognu di una suluzione:
Hè faciule vede nantu à u graficu splash - Analizemu. In New Relic, e transazzione web sò immediatamente selezziunati per una applicazione web, tutti i cumpunenti sò indicati in u graficu di rendiment, ci sò pannelli di tassu d'errore, tassi di dumanda ... Ciò chì hè più impurtante hè chì direttamente da questi pannelli pudete spustà trà e diverse. parti di l'appiecazione (per esempiu, clicchendu nant'à MySQL purtarà à a sezione di basa di dati).
Siccomu in l'esempiu in cunsiderà vedemu una crescita di l'attività PHP, cliccate nant'à stu graficu è andate automaticamente à Memorie:
A lista di e transazzione, chì sò essenzialmente cuntrolli da u mudellu MVC, hè digià ordinatu A maiò parte di u tempu, chì hè assai cunvene: vedemu immediatamente ciò chì l'applicazione faci. Eccu esempi di dumande longu chì sò automaticamente cullate da New Relic. Cambiendu a classificazione, hè faciule di truvà:
u controller di l'applicazione più carica;
controller più frequentemente dumandatu;
u più lento di i cuntrolli.
Inoltre, pudete espansione ogni transazzione è vede ciò chì l'applicazione facia à u mumentu chì u codice hè statu eseguitu:
Infine, l'applicazione guarda esempi di tracce di dumande longu (quelli chì piglianu più di 2 seconde). Eccu u pannellu per una transazzione longa:
Pò esse vistu chì dui metudi piglianu assai tempu, è à u stessu tempu u tempu quandu a dumanda hè stata eseguita, u so URI è u duminiu sò ancu mostrati. Moltu spessu questu aiuta à truvà a dumanda in i logs. In traccia d'andà à Trace dettagli, pudete vede induve sti metudi sò chjamati da:
E in Quistioni di basa di dati - valutate e dumande à e basa di dati chì sò state eseguite mentre l'applicazione era in esecuzione:
Armatu di sta cunniscenza, pudemu valutà perchè l'applicazione rallenta è travaglià cù u sviluppatore per vene cun una strategia per risolve u prublema. In realità, New Relic ùn sempre dà una stampa chjara, ma aiuta à sceglie u vettore di investigazione:
longu PDO::Construct ci hà purtatu à u stranu funziunamentu di pgpoll;
inestabilità in u tempu Memcache::Get suggeriu chì a macchina virtuale hè stata cunfigurata incorrectamente;
un tempu suspiciosamente aumentatu per u processu di mudelli hà purtatu à un ciclu nidificatu chì verifica a presenza di 500 avatars in u almacenamentu di l'ughjettu;
eccetera…
Succede ancu chì invece di eseguisce u codice, qualcosa ligatu à l'almacenamiento di dati esterni cresce nantu à a pantalla principale - è ùn importa micca ciò chì serà: Redis o PostgreSQL - sò tutti oculati in a tabulazione. e base.
Pudete selezziunate una basa specifica per a ricerca è sorte e dumande - simile à cumu si faci in Transacciones. È andendu à a tabulazione di a dumanda, pudete vede quante volte sta dumanda si trova in ognuna di i cuntrolli di l'applicazione, è ancu stima quante volte hè chjamata. Hè assai còmode:
A tabulazione cuntene dati simili Servizi esterni, chì oculta e dumande à i servizii HTTP esterni, cum'è l'accessu à l'almacenamiento d'ughjettu, l'inviu di l'avvenimenti à a sentinella, o simili. U cuntenutu di a tabulazione hè cumplettamente simili à basa di dati:
Cuncurrenti: opportunità è impressioni
Avà u più interessante hè di paragunà e capacità di New Relic cù ciò chì i cuncurrenti offrenu. Sfurtunatamente, ùn pudemu micca pruvà tutti i trè strumenti nantu à una versione di una applicazione chì funziona in produzzione. Tuttavia, avemu pruvatu à paragunà situazioni / cunfigurazioni chì eranu u più idèntica pussibule.
1.Datadog
Datadog ci saluta cù un pannellu cù un muru di servizii:
Pruvate di rompe l'applicazioni in cumpunenti / microservizii, cusì in l'esempiu di l'applicazione Django vedemu 2 cunnessione à PostgreSQL (defaultdb и postgres), cum'è Celery, Redis. U travagliu cù Datadog richiede di avè una cunniscenza minima di i principii MVC: avete bisognu di capisce da induve venenu generalmente e richieste di l'utilizatori. Questu generalmente aiuta mappa di servizii:
Per via, ci hè qualcosa simili in New Relic:
... è a so mappa, in u mo parè, hè fatta più simplice è più chjaru: ùn mostra micca i cumpunenti di una applicazione (chì a faria troppu dettagliata, cum'è in u casu di Datadog), ma solu servizii specifichi o microservizii.
Riturnemu à Datadog: da a mappa di serviziu pudemu vede chì e dumande di l'utilizatori venenu à Django. Andemu à u serviziu Django è infine vede ciò chì avemu aspittatu:
Sfortunatamente, ùn ci hè micca un graficu quì per difettu Tempu di transazzione Web, simile à ciò chì vedemu nantu à u principale New Relic panel. Tuttavia, pò esse cunfiguratu in u locu di u calendariu % di u tempu passatu. Hè abbastanza per cambià à Tempu mediu per dumanda per Tipu... è avà u graficu familiare ci guarda !
Perchè Datadog hà sceltu una carta diversa hè un misteru per noi. Un'altra cosa frustrante hè chì u sistema ùn ricorda micca a scelta di l'utilizatori (a cuntrariu di i dui cuncurrenti), è per quessa l'unica suluzione hè di creà pannelli persunalizati.
Ma eru cuntentu di l'abilità in Datadog per passà da questi grafici à e metriche di i servitori rilativi, leghje i logs è evaluà a carica nantu à i gestori di u servitore web (Gunicorn). Tuttu hè quasi listessa cum'è in New Relic ... è ancu un pocu di più (logs) !
Sottu i grafici sò transazzioni cumpletamente simili à New Relic:
In Datadog, e transacciones sò chjamati risorse. Pudete classificà i cuntrolli per u numeru di richieste, per u tempu di risposta mediu, è per u tempu massimu passatu per un periudu di tempu sceltu.
Pudete espansione a risorsa è vede tuttu ciò chì avemu digià osservatu in New Relic:
Ci sò statistiche nantu à a risorsa, una lista generalizata di chjama interna, è esempi di dumande chì ponu esse ordinate per codice di risposta... Per via, i nostri ingegneri anu veramente piaciutu questu sorte.
Ogni risorsa di esempiu in Datadog pò esse aperta è studiata:
I paràmetri di dumanda, un graficu riassuntu di u tempu passatu nantu à ogni cumpunente, è un graficu cascata chì mostra a sequenza di chjamate sò presentati. Pudete ancu cambià à una vista di l'arburu di a carta di cascata:
È u più interessante hè di vede a carica di l'ospitu nantu à quale a dumanda hè stata eseguita è vede i logs di dumanda.
Grande integrazione!
Puderete dumandassi induve sò e tabulazioni e base и Servizi esterni, cum'è in New Relic. Ùn ci hè nimu quì: postu chì Datadog decompone l'applicazione in cumpunenti, PostgreSQL serà cunsideratu un serviziu separatu, è invece di servizii esterni vale a pena di circà aws.storage (sarà simile per ogni altru serviziu esternu chì l'applicazione pò accede).
Eccu un esempiu cun postgres:
Essenzialmente ci hè tuttu ciò chì vulemu:
Pudete vede da quale "serviziu" vene a dumanda.
Ùn saria micca sbagliatu di ricurdà chì Datadog s'integra perfettamente cù NGINX Ingress è vi permette di fà un tracciamentu end-to-end da u mumentu chì una dumanda arriva in u cluster, è vi permette ancu di riceve metriche di statsd, raccoglie logs è metriche d'ospiti. .
Un grande plus di Datadog hè chì u so prezzu sviluppa da u monitoraghju di l'infrastruttura, APM, Log Management è Test di Sintetica, i.e. Pudete sceglie u vostru pianu in modu flexible.
2.Atatus
A squadra Atatus dice chì u so serviziu hè "uguale à New Relic, ma megliu". Videmu s'ellu hè veramente cusì.
U pannellu principale hè simile, ma ùn era micca pussibule di determinà u Redis è u memcached utilizatu in l'applicazione.
APM selezziunà tutte e transazzione per automaticamente, ancu s'ellu hè tipicu solu e transazzione Web sò necessarii. Cum'è Datadog, ùn ci hè micca manera di navigà à u serviziu desideratu da u pannellu principale. Inoltre, e transazzione sò listati dopu l'errore, chì ùn pare micca assai logicu per APM.
In e transazzioni Atatus, tuttu hè u più simile pussibule à New Relic. U svantaghju hè chì a dinamica per ogni controller ùn hè micca immediatamente visibili. Avete da circà in a tavola di u controller, sortendu per U più tempu cunsumatu:
A lista abituale di cuntrolli hè dispunibule in a tabulazione Explore:
In certi modi, sta tavula ricorda Datadog è mi piace megliu cà quella simile in New Relic.
Pudete espansione ogni transazzione è vede ciò chì l'applicazione facia:
U pannellu hè ancu più reminiscente di Datadog: ci hè una quantità di richieste, una stampa generale di chjama. U pannellu superiore furnisce una tabulazione di errore Falli HTTP è esempi di dumande lente Tracce di sessione:
Se vai à una transazzione, pudete vede un esempiu di una traccia, pudete ottene una lista di dumande à a basa di dati è fighjate à l'intestazione di a dumanda. Tuttu hè simile à New Relic:
In generale, Atatus hà piacè cù tracce dettagliate - senza u tipicu New Relic incollamentu di chjama in un bloccu di ricordi:
In ogni casu, ùn manca un filtru chì (cum'è New Relic) tagliate e richieste ultra-rapide (<5ms). Per d 'altra banda, mi piaceva a visualizazione di a risposta finale di a transazzione (successu o errore).
Pannellu e base vi aiuterà à studià e dumande à basa di dati esterni chì l'applicazione face. Lasciami ricurdà chì Atatus hà truvatu solu PostgreSQL è MySQL, ancu Redis è memcached sò ancu implicati in u prugettu.
E dumande sò ordinate secondu i criteri di solitu: freccia di risposta, tempu di risposta mediu, etc. Vogliu ancu mintuvà a tabulazione cù e dumande più lente - hè assai cunvene. Inoltre, i dati in questa tabulazione per PostgreSQL coincidevanu cù e dati da l'estensione pg_stat_statements - un risultatu eccellente!
Tab Richieste esterne cumplettamente identica à basa di dati.
scuperti
I dui strumenti presentati anu fattu bè in u rolu di APM. Qualchese di elli pò offre u minimu necessariu. E nostre impressioni ponu esse riassunte in breve cum'è seguente:
datadog
Pros:
schedu tariffa conveniente (APM costa 31 USD per host);
hà travagliatu bè cù Python;
Possibilità di integrazione cù OpenTracing
integrazione cù Kubernetes;
integrazione cù NGINX Ingress.
Cons:
l'unicu APM chì hà fattu chì l'applicazione ùn sia micca dispunibule per un errore di modulu (predis);
Strumentazione automatica PHP debule;
parzialmente strana definizione di servizii è u so scopu.
Atatus
Pros:
strumentazione PHP prufonda;
interfaccia d'utilizatore simile à New Relic.
Cons:
ùn funziona micca in sistemi operativi più vechji (Ubuntu 12.05, CentOS 5);
debule auto-instrumentation;
supportu per solu duie lingue (Node.js è PHP);
Interfaccia lenta.
Cunsiderendu u prezzu di Atatus di 69 USD per mese per servitore, preferimu usà Datadog, chì si integra bè cù i nostri bisogni (applicazioni web in K8s) è hà assai funzioni utili.