{"id":37901,"date":"2019-10-31T22:20:26","date_gmt":"2019-10-31T19:20:26","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ne-new-relic-om-odnim-vzglyad-na-datadog-i-atatus\/"},"modified":"2019-10-31T22:20:26","modified_gmt":"2019-10-31T19:20:26","slug":"ne-new-relic-om-odnim-vzglyad-na-datadog-i-atatus","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ne-new-relic-om-odnim-vzglyad-na-datadog-i-atatus","title":{"rendered":"Non solo con New Relic: uno sguardo a Datadog e Atatus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/8f8e3d96daed74986ef3cbe293356302.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNel mondo degli ingegneri SRE\/DevOps, non sorprende che un giorno appaia un cliente (o un sistema di monitoraggio) e segnali che \"\u00e8 tutto finito\": il sito non funziona, i pagamenti non passano, la vita \u00e8 vana... Per quanto si voglia aiutare in una situazione del genere, farlo senza uno strumento semplice e comprensibile pu\u00f2 essere molto difficile. Spesso il problema \u00e8 nascosto nel codice dell'applicazione stessa: bisogna solo localizzarlo.<\/p>\n<h2>Nella gioia e nel dolore\u2026<\/h2>\n<p>\nDopo tutto questo tempo, abbiamo sviluppato un grande amore per New Relic. \u00c8 stato e rimane un ottimo strumento per il monitoraggio delle prestazioni delle applicazioni e consente anche di strumentare un'architettura a microservizi (tramite il suo agente) e molto, molto altro. E tutto sarebbe stato meraviglioso, se non fosse stato per i cambiamenti nella politica dei prezzi del servizio: esso <b>costo <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.newrelic.com\/product-news\/new-relic-new-pricing-startups\/\">\u00e8 aumentato di oltre 3 volte<\/a><\/noindex> . Inoltre, dall'anno scorso, per ottenere un account di prova \u00e8 necessario comunicare con un manager personale, il che complica la presentazione del prodotto ai potenziali clienti.<\/b>Situazione tipica: New Relic non \u00e8 necessario in \"modo continuativo\", viene ricordato solo quando iniziano i problemi. Ma si deve comunque pagare regolarmente (140 USD per server al mese), e in un'infrastruttura cloud che si scala automaticamente, le somme si accumulano. Anche se c'\u00e8 la possibilit\u00e0 di \"Pay-As-You-Go\", per attivare New Relic \u00e8 necessario riavviare l'applicazione, il che pu\u00f2 portare alla perdita della situazione problematica per cui tutto \u00e8 stato avviato. Non molto tempo fa, New Relic ha introdotto un nuovo piano tariffario \u2014<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Essentials <noindex><a rel=\"nofollow\" href=\"https:\/\/newrelic.com\/products\/infrastructure\/pricing\">, \u2014 che a prima vista sembra un'alternativa ragionevole a Professional\u2026 ma, esaminandola pi\u00f9 da vicino, ci siamo resi conto che alcune funzioni importanti mancavano (in particolare, non include<\/a><\/noindex>Key Transactions <i>Cross Application Tracing<\/i>, <i>Distributed Tracing<\/i>, <i>Di conseguenza, abbiamo iniziato a cercare un'alternativa pi\u00f9 economica, e la nostra scelta \u00e8 ricaduta su due servizi: Datadog e Atatus. Perch\u00e9 proprio su di loro?<\/i>).<\/p>\n<p>Sui concorrenti<\/p>\n<h2>Vorrei chiarire che sul mercato ci sono altre soluzioni. Abbiamo persino considerato opzioni Open Source, ma non tutti i clienti hanno capacit\u00e0 disponibili per l'implementazione di soluzioni della categoria self-hosted\u2026 \u2014 inoltre, richiederanno ulteriore manutenzione. La coppia che abbiamo scelto si \u00e8 rivelata la pi\u00f9 vicina a<\/h2>\n<p>\nle nostre esigenze <b>nostre esigenze<\/b>:<\/p>\n<ul>\n<li>supporto PHP integrato e avanzato (il nostro stack \u00e8 molto vario, ma questo \u00e8 indubbiamente un leader nel contesto della ricerca di alternative a New Relic);<\/li>\n<li>costo accessibile (meno di 100 USD al mese per l'hosting);<\/li>\n<li>strumentazione automatica;<\/li>\n<li>integrazione con Kubernetes;<\/li>\n<li>similitudine con l'interfaccia di New Relic \u2014 un vantaggio notevole (perch\u00e9 i nostri ingegneri ci sono abituati).<\/li>\n<\/ul>\n<p>\nPertanto, nella fase di selezione iniziale, abbiamo escluso diverse altre soluzioni popolari, in particolare:<\/p>\n<ul>\n<li> Tideways, AppDynamics e Dynatrace \u2014 per il costo;<\/li>\n<li> Stackify \u2014 bloccato in RF e mostra troppo pochi dati.<\/li>\n<\/ul>\n<p>\nL'articolo seguente \u00e8 strutturato in modo tale che inizialmente verranno brevemente presentate le soluzioni considerate, dopodich\u00e9 parler\u00f2 del nostro interazione tipica con New Relic e delle esperienze\/impressioni nell'eseguire operazioni simili in altri servizi.<\/p>\n<h3>Presentazione dei concorrenti selezionati<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/b8960097f729d56abeb9d1b0f5931e7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSu <noindex><a rel=\"nofollow\" href=\"https:\/\/newrelic.com\/\"><b>New Relic<\/b><\/a><\/noindex>, probabilmente, l'ha sentito ognuno? Questo servizio ha iniziato il suo sviluppo oltre 10 anni fa, nel 2008. Lo utilizziamo attivamente dal 2012 e non abbiamo mai riscontrato problemi nell'integrare un numero veramente elevato di applicazioni in PHP, Ruby e Python, e abbiamo anche avuto esperienza di integrazione con C# e Go. Gli autori del servizio hanno soluzioni per il monitoraggio delle applicazioni, infrastrutture, tracciamento delle infrastrutture microservizi, sono state create applicazioni convenienti per i dispositivi degli utenti e molto altro.<\/p>\n<p>Tuttavia, l'agente di New Relic funziona con protocolli proprietari, non supporta OpenTracing. Per una strumentazione avanzata, \u00e8 necessario apportare modifiche specifiche per New Relic. Infine, il supporto per Kubernetes ha attualmente uno status sperimentale.<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/6807ed78ff3d053d0aa910dbc81f1414.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAvviato nel 2010 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.datadoghq.com\/\"><b>Datadog<\/b><\/a><\/noindex> si presenta decisamente pi\u00f9 interessante di New Relic proprio in termini di applicazione negli ambienti Kubernetes. In particolare, supporta integrazioni con NGINX Ingress, raccolta di log, protocolli statsd e OpenTracing, che consente di tracciare la richiesta dell'utente dall'istante della connessione fino al completamento dell'operazione, oltre a trovare i log relativi a questa richiesta (sia dal lato del server web che dal lato dei consumer).<\/p>\n<p>Utilizzando Datadog, abbiamo riscontrato che a volte costruiva in modo errato la mappa dei microservizi e presentava alcuni difetti tecnici. Ad esempio, identificava erroneamente il tipo di servizio (ha scambiato Django per un servizio di caching) e causava errori 500 in un'applicazione PHP che utilizzava la popolare libreria Predis.<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/dd1f3f840cd686265a1616343d832f28.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.atatus.com\/\"><b>Atatus<\/b><\/a><\/noindex> \u2014 il pi\u00f9 giovane strumento; il servizio \u00e8 stato lanciato nel 2014. Il suo budget di marketing \u00e8 chiaramente inferiore a quello dei competitor elencati, e le menzioni sono significativamente pi\u00f9 rare. Tuttavia, lo strumento in s\u00e9 \u00e8 molto simile a New Relic, non solo nelle funzionalit\u00e0 (APM, Browser monitoring, ecc.), ma anche nell'aspetto.<\/p>\n<p>Un notevole svantaggio \u00e8 il supporto limitato a Node.js e PHP. D'altra parte, \u00e8 implementato in modo notevolmente migliore rispetto a Datadog. A differenza dell'ultimo, Atatus non richiede modifiche alle applicazioni o l'aggiunta di etichette extra nel codice.<\/p>\n<h2>Come lavoriamo con New Relic<\/h2>\n<p>\nOra facciamo chiarezza su come utilizziamo generalmente New Relic. Supponiamo di avere un problema che necessita di soluzione:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/615f56cd69a4360f5a659d135840ad8a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNel grafico \u00e8 facile notare <b>un picco<\/b> \u2014 analizziamolo. In New Relic per l'applicazione web sono selezionate immediatamente le transazioni web, nel grafico delle performance sono indicati tutti i componenti, ci sono i pannelli error-rate, request-rate... La cosa importante \u00e8 che da questi pannelli si pu\u00f2 navigare tra le varie parti dell'applicazione (per esempio, un clic su MySQL porter\u00e0 alla sezione dei database).<\/p>\n<p>Poich\u00e9 nell'esempio considerato vediamo un picco di attivit\u00e0 <b>PHP<\/b>, facciamo clic su questo grafico e passeremo automaticamente a <b>Transazioni<\/b>:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/9fbbde055a88d6f63aa6dca4998f925b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL'elenco delle transazioni, che sono fondamentalmente controller del modello MVC, \u00e8 gi\u00e0 ordinato per <b>Le pi\u00f9 dispendiose in termini di tempo<\/b>, il che \u00e8 molto comodo: vediamo subito cosa sta facendo l'applicazione. Qui ci sono anche esempi di richieste lunghe, che vengono raccolte automaticamente da New Relic. Cambiando l'ordinamento, \u00e8 facile trovare:<\/p>\n<ul>\n<li> il controller dell'applicazione pi\u00f9 sollecitato;<\/li>\n<li> il controller pi\u00f9 frequentemente richiesto;<\/li>\n<li> il pi\u00f9 lento dei controller.<\/li>\n<\/ul>\n<p>\nInoltre, \u00e8 possibile espandere ogni transazione e vedere cosa stava facendo l'applicazione al momento dell'esecuzione del codice:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/9c3136cb973a1f47729c305256ee1836.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInfine, nell'applicazione vengono salvati esempi dei trace delle richieste lunghe (che richiedono pi\u00f9 di 2 secondi). Ecco il pannello per una lunga transazione:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/bca8a9f1b0ccd8158eaff41067681e2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c8 evidente che due metodi richiedono molto tempo, e viene mostrato anche il tempo in cui \u00e8 stata eseguita la richiesta, il suo URI e il dominio. Questo aiuta molto a trovare la richiesta nei log. Passando a <b>Dettagli del Trace<\/b>, \u00e8 possibile vedere da dove vengono chiamati questi metodi:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/aef8bbd86278aa31d595aa353e6387e0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE a <b>Query del database<\/b> \u2014 valutare le richieste ai database che sono state eseguite durante il funzionamento dell'applicazione:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/40d942b57b87237f378dc617676f00fc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nArmati di queste conoscenze, possiamo valutare la causa del rallentamento dell'applicazione e collaborare con lo sviluppatore per elaborare una strategia di risoluzione del problema. In realt\u00e0, New Relic non sempre fornisce un quadro chiaro, ma aiuta a scegliere la direzione dell'indagine:<\/p>\n<ul>\n<li> lungo <code>PDO::Construct<\/code> ci ha portato a un funzionamento strano di pgpoll;<\/li>\n<li> instabilit\u00e0 nel tempo <code>Memcache::Get<\/code> ha suggerito una configurazione errata della macchina virtuale;<\/li>\n<li> un tempo di elaborazione del modello sospettosamente aumentato ha portato a un ciclo nidificato che controlla la presenza di 500 avatar nello storage degli oggetti;<\/li>\n<li> e cos\u00ec via\u2026<\/li>\n<\/ul>\n<p>\nPu\u00f2 anche accadere che, invece di eseguire codice sullo schermo principale, emerga qualcosa legato a storage esterno \u2014 e non importa se sia Redis o PostgreSQL, \u2014 tutti si nascondono nella scheda <b>Database<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/5ff39a5a6e02be329e3c40d54c3b4a1d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c8 possibile selezionare un database specifico per l'analisi e ordinare le query \u2014 in modo simile a come si fa in Transactions. Passando alla scheda delle query, \u00e8 possibile vedere quante volte appare questa query in ciascuno dei controller dell'applicazione e anche valutare quanto spesso viene chiamata. \u00c8 molto comodo:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/92b3bca78f0aa0f27e5700cd6fe283fe.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDati simili sono disponibili nella scheda <b>Servizi Esterni<\/b>, che contiene le richieste verso i servizi HTTP esterni, come accessi allo storage degli oggetti, invio di eventi a sentry o simili. Il contenuto della scheda \u00e8 completamente analogo a Databases:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/417d6ed0d5fb266e1a338d8277278000.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Competitor: funzionalit\u00e0 e impressioni<\/h2>\n<p>\nOra arriva il momento interessante: confrontiamo le funzionalit\u00e0 di New Relic con quelle offerte dai competitor. Purtroppo, non siamo riusciti a testare tutti e tre gli strumenti sulla stessa versione di un'applicazione funzionante in produzione. Tuttavia, abbiamo cercato di confrontare situazioni\/configurazioni il pi\u00f9 identiche possibile.<\/p>\n<h3>1. Datadog<\/h3>\n<p>\nDatadog ci accoglie con un pannello e una wall dei servizi:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/fa4eb4ba2349b900d5c04238552e5329.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCerca di suddividere le applicazioni in componenti\/microservizi, quindi nell'applicazione Django fornita come esempio vedremo 2 connessioni a PostgreSQL (<code>defaultdb<\/code> e <code>postgres<\/code>), e anche Celery, Redis. Lavorare con Datadog richiede da parte vostra conoscenze minime dei principi MVC: \u00e8 necessario capire dove vanno a finire le richieste degli utenti. Di solito, questo \u00e8 facilitato da <b>una mappa dei servizi<\/b>:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/2f5f7c9ce171af671a65fb41401451e5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA proposito, qualcosa di simile \u00e8 disponibile anche in New Relic:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/b4e14f15b900f5c19856f1077873c9c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 e la loro mappa, a mio avviso, \u00e8 fatta in modo pi\u00f9 semplice e chiaro: mostra solo specifici servizi o microservizi, invece dei componenti di un'applicazione (il che la renderebbe eccessivamente dettagliata, come nel caso di Datadog).<\/p>\n<p>Torniamo a Datadog: dalla mappa dei servizi si vede che le richieste degli utenti arrivano a Django. Passiamo al servizio Django e finalmente vedremo ci\u00f2 che ci aspettavamo:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/fe907532184004ec02238ccd5e7d0ce6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSfortunatamente, qui non c'\u00e8 un grafico per impostazione predefinita. <b>Tempo di transazione web<\/b>, simile a quello che vediamo nella dashboard principale di New Relic. Tuttavia, pu\u00f2 essere configurato al posto del grafico. <b>% del tempo speso<\/b>. \u00c8 sufficiente commutarlo in <b>Tempo medio per richiesta per tipo<\/b>\u2026 e voil\u00e0, il grafico familiare ci guarda!<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/4576b27658d257fa5b062ffc7bb5464a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPerch\u00e9 in Datadog \u00e8 stato scelto un grafico diverso \u00e8 un mistero per noi. Ci ha anche deluso che il sistema non memorizza la scelta dell'utente (a differenza di entrambi i concorrenti), quindi l'unica soluzione \u00e8 creare pannelli personalizzati.<\/p>\n<p>Tuttavia, abbiamo apprezzato la possibilit\u00e0 in Datadog di passare da questi grafici alle metriche dei server associati, leggere i log e valutare il carico dei gestori del server web (Gunicorn). \u00c8 tutto quasi come in New Relic\u2026 e anche un po' di pi\u00f9 (i log)!<\/p>\n<p>Sotto i grafici ci sono le transazioni, del tutto analoghe a New Relic:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/3ab831fce57abe39e27bea12b6eb0f67.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn Datadog le transazioni sono chiamate <b>risorse<\/b>. \u00c8 possibile ordinare i controller in base al numero di richieste, al tempo medio di risposta e al tempo massimo speso in un intervallo di tempo selezionato. <\/p>\n<p>La risorsa pu\u00f2 essere espansa per vedere tutto ci\u00f2 che abbiamo gi\u00e0 osservato in New Relic:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/8005dfb15d878c6025d745982114cc02.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSono disponibili statistiche sulla risorsa, un elenco riassuntivo delle chiamate interne e esempi di richieste che possono essere ordinate per codice di risposta\u2026 Questa ordinazione \u00e8 piaciuta molto ai nostri ingegneri.<\/p>\n<p>Qualsiasi esempio di risorsa in Datadog pu\u00f2 essere aperto e studiato:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/0e98c9c3924bd248d048b8587f19f922.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSono presentati i parametri della richiesta, un diagramma riassuntivo del tempo speso per ciascun componente e un diagramma a cascata che mostra la sequenza delle chiamate. \u00c8 anche disponibile il passaggio a una visualizzazione ad albero del diagramma a cascata:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/c1d12e79d5c170bb88d9261267756fb8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE la cosa pi\u00f9 interessante \u00e8 la visualizzazione del carico dell'host su cui \u00e8 stata eseguita la richiesta e la visualizzazione dei log della richiesta. <\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/849a299b05596eb6ba4906c7f3851de0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOttima integrazione!<\/p>\n<p>Pu\u00f2 sorgere la domanda, dove sono le schede <b>Database<\/b> e <b>Servizi Esterni<\/b>, come in New Relic. Qui non ci sono: poich\u00e9 Datadog analizza l'applicazione in componenti, PostgreSQL sar\u00e0 considerato <b>un servizio separato<\/b>, mentre invece dei servizi esterni si dovranno cercare <code>aws.storage<\/code> (analogamente sar\u00e0 per ogni altro servizio esterno a cui l'applicazione pu\u00f2 fare riferimento).<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/7a2585778478cdd7abab2e31c1858e68.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEcco un esempio con <code>postgres<\/code>:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/76710537a8c7f436d207ef52efb50214.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn sostanza, c'\u00e8 tutto ci\u00f2 che volevamo:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/152e882d964bd5c77aef69f9c140f350.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c8 evidente da quale 'servizio' \u00e8 arrivata la richiesta. <\/p>\n<p>Non \u00e8 superfluo ricordare che Datadog si integra perfettamente con NGINX Ingress e permette di eseguire un tracciamento end-to-end dal momento in cui la richiesta entra nel cluster, oltre a raccogliere metriche statsd, log e metriche degli host.<\/p>\n<p>Un grande vantaggio di Datadog \u00e8 che il suo prezzo <i>\u00e8 composto<\/i> da monitoraggio dell'infrastruttura, APM, Log Management e Synthetics test, ovvero \u00e8 possibile scegliere un piano flessibile.<\/p>\n<h3>2. Atatus<\/h3>\n<p>\nIl team di Atatus sostiene che il loro servizio \u00e8 'come New Relic, ma migliore'. Vediamo se \u00e8 davvero cos\u00ec.<\/p>\n<p>La dashboard sembra effettivamente simile, ma non siamo riusciti a identificare Redis e memcached utilizzati nell'applicazione.<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/1b2271bf779f93d4696b8f5fb90c548b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAPM seleziona per impostazione predefinita tutte le transazioni, anche se di solito servono solo quelle Web. Come in Datadog, non c'\u00e8 la possibilit\u00e0 di passare al servizio desiderato direttamente dalla dashboard principale. Inoltre, le transazioni si trovano nell'elenco dopo gli errori, il che per APM non appare molto logico.<\/p>\n<p>Nelle transazioni, Atatus \u00e8 molto simile a New Relic. Un contro \u00e8 che non si vedono immediatamente le dinamiche di ciascun controller. Bisogna cercarle nella tabella dei controller, ordinando per <b>Most Time Consumed<\/b>:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/57a1640dc1c99732e5d008051ea08f4a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL\u2019elenco dei controllori a noi familiare \u00e8 disponibile nella scheda <b>Esplora<\/b>:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/9f77e8af1b19460a490f6d57f57c7902.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesta tabella ricorda in qualche modo Datadog e risulta pi\u00f9 piacevole rispetto a quella simile di New Relic.<\/p>\n<p>Ogni transazione pu\u00f2 essere espansa per vedere cosa ha fatto l'applicazione:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/7a74af09bc90449557a797b7898aa827.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa dashboard ricorda piuttosto Datadog: mostra il numero di richieste e un quadro generale delle chiamate. La parte superiore della dashboard fornisce una scheda con gli errori <b>HTTP Failures<\/b> e esempi di richieste lente <b>Session Traces<\/b>:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/d528b528b14e3e0ba0550296a07d27db.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe si passa a una transazione, si vede un esempio di trace, \u00e8 possibile ottenere un elenco delle richieste al database e vedere gli header della richiesta. \u00c8 completamente analogo a New Relic:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/297cee55b9b32383c607eb6860ffe20e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn generale, Atatus ha impressionato con trace dettagliati, senza le tipiche unificazioni di chiamate in un blocco di promemoria di New Relic:<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/eb40bb051d7a5435072b96cd659bfebf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/0232a197ee2d28489fcf86c4921f7080.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTuttavia, manca un filtro che (come in New Relic) escluda le richieste ultra-veloci (&lt;5ms). D'altro canto, mi \u00e8 piaciuta la visualizzazione della risposta finale della transazione (successo o errore).<\/p>\n<p>Pannello <b>Database<\/b> aiuter\u00e0 a esaminare le richieste ai database esterni fatte dall'applicazione. Ricordo che Atatus ha trovato solo PostgreSQL e MySQL, anche se nel progetto sono coinvolti anche Redis e memcached.<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/01bd3b1f4e5f25bb86e9aa79a22588c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe query vengono ordinate secondo criteri familiari: frequenza di attivazione, tempo medio di risposta e cos\u00ec via. \u00c8 particolarmente utile notare la scheda con le query pi\u00f9 lente: \u00e8 molto comodo. Inoltre, i dati in questa scheda per PostgreSQL sono coincisi con i dati dell'estensione <noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/11\/pgstatstatements.html\">pg_stat_statements<\/a><\/noindex> \u2014 ottimo risultato!<\/p>\n<p><img decoding=\"async\" alt=\"Non solo con New Relic: uno sguardo a Datadog e Atatus\" src=\"\/wp-content\/uploads\/2019\/09\/128b3eb7ac1e636e47d4a66a292ca872.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nScheda <b>Richieste esterne<\/b> \u00e8 completamente identica a Databases.<\/p>\n<h2>Conclusioni<\/h2>\n<p>\nEntrambi gli strumenti presentati hanno mostrato buone prestazioni come APM. Ognuno di essi pu\u00f2 offrire il minimo necessario. Possiamo riassumere le nostre impressioni in questo modo:<\/p>\n<h3>Datadog<\/h3>\n<p>\nPro:<\/p>\n<ul>\n<li> griglia tariffaria comoda (l'APM costa 31 USD per host);<\/li>\n<li> ha funzionato eccellentemente con Python;<\/li>\n<li> possibilit\u00e0 di integrazione con OpenTracing<\/li>\n<li> integrazione con Kubernetes;<\/li>\n<li> integrazione con NGINX Ingress.<\/li>\n<\/ul>\n<p>\nContro:<\/p>\n<ul>\n<li> l'unico APM che ha causato l'indisponibilit\u00e0 dell'applicazione a causa di un errore del modulo (predis);<\/li>\n<li> debole auto-instrumentazione PHP;<\/li>\n<li> in parte strano nella definizione dei servizi e dei loro scopi.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Atatus<\/h3>\n<p>\nPro:<\/p>\n<ul>\n<li> profonda strumentazione PHP;<\/li>\n<li> interfaccia utente simile a New Relic.<\/li>\n<\/ul>\n<p>\nContro:<\/p>\n<ul>\n<li> non funziona su sistemi operativi datati (Ubuntu 12.05, CentOS 5);<\/li>\n<li> debole auto-instrumentazione;<\/li>\n<li> supporto per soli due linguaggi di programmazione (Node.js e PHP);<\/li>\n<li> lentezza nell'interfaccia.<\/li>\n<\/ul>\n<p>\nConsiderando il prezzo di Atatus di 69 USD al mese per server, utilizzeremmo piuttosto Datadog, che si integra ottimamente con le nostre esigenze (applicazioni web in K8s) e offre molte funzionalit\u00e0 utili.<\/p>\n<h2>P.S.<\/h2>\n<p>\nLeggi anche nel nostro blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/462707\/\">Strumenti per sviluppatori di applicazioni eseguite in Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436112\/\">Il plugin kubectl-debug per il debug nei pod Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/424531\/\">Microservizi: le dimensioni contano, anche se hai Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/465177\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0441\u0440\u0435\u0434\u0435 SRE-\/DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435 \u0443\u0434\u0438\u0432\u0438\u0448\u044c, \u0447\u0442\u043e \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442 (\u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430) \u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u00ab\u0432\u0441\u0451 \u043f\u0440\u043e\u043f\u0430\u043b\u043e\u00bb: \u0441\u0430\u0439\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043e\u043f\u043b\u0430\u0442\u044b \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442, \u0436\u0438\u0437\u043d\u044c \u2014 \u0442\u043b\u0435\u043d\u2026 \u041a\u0430\u043a \u0431\u044b \u043d\u0438 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u043c\u043e\u0447\u044c \u0432 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0431\u044b\u0432\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e. \u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u043a\u0440\u044b\u0442\u0430 \u0432 \u043a\u043e\u0434\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0448\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28443,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37901","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0441\u0440\u0435\u0434\u0435 SRE-\/DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ne-new-relic-om-odnim-vzglyad-na-datadog-i-atatus\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041d\u0435 New Relic\u2019\u043e\u043c \u043e\u0434\u043d\u0438\u043c: \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 Datadog \u0438 Atatus | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0441\u0440\u0435\u0434\u0435 SRE-\/DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ne-new-relic-om-odnim-vzglyad-na-datadog-i-atatus\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:20:26+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:20:26+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Non solo New Relic: uno sguardo a Datadog e Atatus | ProHoster","description":"Non c'\u00e8 nessuno nel mondo SRE-DevOps.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ne-new-relic-om-odnim-vzglyad-na-datadog-i-atatus","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041d\u0435 New Relic\u2019\u043e\u043c \u043e\u0434\u043d\u0438\u043c: \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 Datadog \u0438 Atatus | ProHoster","og:description":"\u0412 \u0441\u0440\u0435\u0434\u0435 SRE-\/DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ne-new-relic-om-odnim-vzglyad-na-datadog-i-atatus","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:20:26+00:00","article:modified_time":"2019-10-31T19:20:26+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37901","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 19:41:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:39:28","updated":"2026-01-23 19:41:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=37901"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37901\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/28443"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=37901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=37901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=37901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}