Inte bara New Relic: en blick pÄ Datadog och Atatus

Inte bara New Relic: en blick pÄ Datadog och Atatus

Inom SRE-/DevOps-ingenjörernas vÀrld Àr det ingen överraskning nÀr en kund (eller ett övervakningssystem) plötsligt meddelar att "allt Àr förlorat": webbplatsen fungerar inte, betalningar gÄr inte igenom, livet - Àr meningslöst... Hur gÀrna man Àn skulle vilja hjÀlpa i en sÄdan situation, Àr det mycket svÄrt att göra det utan ett enkelt och förstÄeligt verktyg. Ofta döljer problemet sig i koden av sjÀlva applikationen - man behöver bara lokalisera det.

I sorg och i glÀdje...

Det har blivit sÄ att vi har Àlskat New Relic mycket lÀnge. Det var och förblir ett utmÀrkt verktyg för övervakning av applikationsprestanda, och lÄter ocksÄ instrumentera mikrotjÀnstarkitektur (genom sin agent) och mycket mer. Allt kunde ha varit fantastiskt om det inte vore för förÀndringarna i företagets prispolitik: dess kostnaden sedan 2013 har ökat med mer Àn 3 gÄnger. Dessutom, frÄn och med förra Äret krÀvs det kommunikation med en personlig chef för att fÄ ett testkonto, vilket komplicerar presentationen av produkten för potentiella kunder.

En vanlig situation: New Relic behövs inte "pĂ„ en permanent basis", man minns det bara nĂ€r problemen börjar. Men man mĂ„ste Ă€ndĂ„ betala regelbundet (140 USD per server per mĂ„nad), och i en automatiskt skalande molninfrastruktur blir summorna betydande. Även om det finns möjlighet för "Pay-As-You-Go", krĂ€ver det att New Relic aktiveras efter omstart av applikationen, vilket kan leda till att den problematiska situationen försvinner, vilket var hela syftet. Inte sĂ„ lĂ€nge sedan introducerade New Relic en ny prispunkt - Essentials, - som vid första anblick verkar vara ett rimligt alternativ till Professional... men vid en noggrann granskning visade det sig att vissa viktiga funktioner saknas (i synnerhet Ă€r det inte inkluderat Nyckeltransaktioner, KorsapplikationsspĂ„rning, Distribuerad spĂ„rning).

Som ett resultat började vi fundera pÄ att leta efter ett billigare alternativ, och vÄrt val föll pÄ tvÄ tjÀnster, Datadog och Atatus. Varför just dem?

Om konkurrenterna

Jag ska genast klargöra att det finns andra lösningar pÄ marknaden. Vi övervÀgde till och med Open Source-alternativ, men inte alla kunder har resurser för att implementera lösningar i kategorin self-hosted... - dessutom krÀver de ytterligare underhÄll. Den duo vi valde visade sig vara mest i linje med vÄra behov:

  • inbyggt och utvecklat stöd för PHP-applikationer (teknikstacken hos vĂ„ra kunder Ă€r mycket varierad, men detta Ă€r en tydlig ledare nĂ€r det gĂ€ller att söka alternativ till New Relic);
  • prisvĂ€rd kostnad (mindre Ă€n 100 USD per mĂ„nad för hosting);
  • automatisk instrumentering;
  • integration med Kubernetes;
  • likheten med New Relics grĂ€nssnitt — en mĂ€rkbar fördel (eftersom vĂ„ra ingenjörer Ă€r vana vid det).

DÀrför vid det första urvalet uteslöt vi flera andra populÀra lösningar, bland annat:

  • Tideways, AppDynamics och Dynatrace — pĂ„ grund av kostnaden;
  • Stackify — blockerad i Ryssland och visar för lite data.

Den följande artikeln Àr uppbyggd sÄ att de övervÀgda lösningarna först presenteras kort, och sedan berÀttar jag om vÄrt typiska samarbete med New Relic och erfarenheter/intryck av att utföra liknande operationer i andra tjÀnster.

Presentation av utvalda konkurrenter

Inte bara New Relic: en blick pÄ Datadog och Atatus
Om New Relic, har nog alla hört talas om? Denna tjÀnst började sin utveckling för mer Àn 10 Är sedan, 2008. Vi har aktivt anvÀnt den sedan 2012 och har inte haft nÄgra problem med att integrera ett verkligt stort antal applikationer pÄ PHP, Ruby och Python, och vi har ocksÄ erfarenhet av integration med C# och Go. Författarna till tjÀnsten har lösningar för övervakning av applikationer, infrastruktur, spÄrning av mikroservice-infrastrukturer, har skapat anvÀndarvÀnliga applikationer för kundens enheter och mycket mer.

Men agenten New Relic arbetar med proprietÀra protokoll, och det finns inget stöd för OpenTracing. För avancerad instrumentering krÀvs speciella justeringar för New Relic. Slutligen har stödet för Kubernetes fortfarande experimentell status.

Inte bara New Relic: en blick pÄ Datadog och Atatus
Startade sin utveckling 2010 Datadog ser betydligt mer intressant ut Àn New Relic just nÀr det gÀller anvÀndning i Kubernetes-miljöer. Specifikt stöder det integration med NGINX Ingress, logginsamling, protokollen statsd och OpenTracing, vilket gör att man kan spÄra anvÀndarförfrÄgan frÄn den tidpunkt den ansluter till dess att den avslutas, samt hitta loggar för denna förfrÄgan (bÄde pÄ webbserverns sida och pÄ konsumenternas sida).

Vid anvÀndning av Datadog stötte vi pÄ att den ibland byggde mikroservicekartan felaktigt och visade vissa tekniska brister. Till exempel identifierade den fel typ av tjÀnst (uppfattade Django som en cachetjÀnst) och orsakade 500-fel i en PHP-applikation som anvÀnde det populÀra biblioteket Predis.

Inte bara New Relic: en blick pÄ Datadog och Atatus
Atatus — det yngsta verktyget; tjĂ€nsten startades 2014. Dess marknadsföringsbudget stĂ„r tydligt tillbaka jĂ€mfört med de nĂ€mnda konkurrenterna, och omnĂ€mnanden förekommer betydligt mer sĂ€llan. ÄndĂ„ liknar verktyget i sig New Relic, inte bara i funktioner (APM, Browser monitoring etc.), utan ocksĂ„ i utseendet.

En betydande nackdel Ă€r stödet för endast Node.js och PHP. Å andra sidan Ă€r det genomfört avsevĂ€rt bĂ€ttre Ă€n Datadog. Till skillnad frĂ„n det sistnĂ€mnda krĂ€ver Atatus inga modifieringar av applikationerna eller tillĂ€gg av extra etiketter i koden.

Hur vi arbetar med New Relic

LÄt oss nu gÄ igenom hur vi vanligtvis anvÀnder New Relic. LÄt sÀga att vi har ett problem som behöver lösas:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Det Ă€r lĂ€tt att se pĂ„ grafen en spik — lĂ„t oss analysera den. I New Relic Ă€r webbtransaktioner direkt valda för webbapplikationen, och i prestandagrafen anges alla komponenter, inklusive panels för fel- och begĂ€rningshastighet
 Det viktigaste Ă€r att vi kan navigera mellan olika delar av applikationen direkt frĂ„n dessa paneler (till exempel, ett klick pĂ„ MySQL leder till databassidan).

Eftersom vi i det hÀr exemplet ser en ökning av aktiviteten PHP, lÄt oss klicka pÄ denna graf och automatiskt gÄ till Transaktioner:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Listan över transaktioner, som i grunden Àr kontrollerare frÄn MVC-modellen, Àr redan sorterad efter Den mest tidskrÀvande, vilket Àr mycket bekvÀmt: vi ser direkt vad applikationen sysslar med. HÀr finns ocksÄ exempel pÄ lÄnga begÀrningar som automatiskt samlas in av New Relic. Genom att vÀxla sorteringen Àr det lÀtt att hitta:

  • den mest belastade kontrollern i applikationen;
  • den mest efterfrĂ„gade kontrollern;
  • den lĂ„ngsammaste av kontrollerna.

Dessutom kan man expandera varje transaktion och se vad applikationen sysslade med under kodens körning:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Slutligen sparas exempel pÄ spÄr för lÄnga begÀrningar (som tar mer Àn 2 sekunder) i applikationen. HÀr Àr panelen för en lÄng transaktion:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Det syns att tvÄ metoder tar mycket tid, och samtidigt visas tiden för nÀr begÀran utfördes, dess URI och domÀn. Det hjÀlper ofta att hitta begÀran i loggarna. Genom att gÄ till SpÄr detaljer, kan man se varifrÄn dessa metoder anropas:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Och i DatabasfrĂ„gor — bedöma frĂ„gor till databaserna som kördes under applikationens drift:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Med dessa kunskaper kan vi bedöma orsaken till applikationens försening och tillsammans med utvecklaren arbeta fram en strategi för att lösa problemet. I verkligheten ger New Relic inte alltid en tydlig översikt, men det hjÀlper till att vÀlja riktningen för undersökningen:

  • lĂ„ng PDO::Construct ledde oss till ett mĂ€rkligt fungerande pgpoll;
  • instabilitet över tid Memcache::Get indikerade en felaktig konfiguration av den virtuella maskinen;
  • den misstĂ€nkt förlĂ€ngda tiden för att bearbeta mallen ledde till en inbĂ€ddad cykel med kontroll av förekomsten av 500 avatarer i objektlagringen;
  • och sĂ„ vidare


Det kan ocksĂ„ hĂ€nda att istĂ€llet för att köra kod pĂ„ huvudskĂ€rmen vĂ€xer nĂ„got relaterat till extern datalagring – och spelar ingen roll vad det handlar om: Redis eller PostgreSQL, – de döljer sig alla under fliken Databases.

Inte bara New Relic: en blick pÄ Datadog och Atatus

Du kan vĂ€lja en specifik databas för undersökning och filtrera förfrĂ„gningar – pĂ„ samma sĂ€tt som görs i Transactions. Genom att gĂ„ till fliken förfrĂ„gningar kan du se hur ofta denna förfrĂ„gan förekommer i varje controller i applikationen samt uppskatta hur ofta den anropas. Detta Ă€r mycket bekvĂ€mt:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Liknande data finns under fliken External Services, som döljer förfrÄgningar till externa HTTP-tjÀnster, sÄsom anrop till objektlagring, skickande av hÀndelser till Sentry eller liknande. InnehÄllet i fliken Àr helt analogt med Databases:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Konkurrenter: Möjligheter och intryck

Nu kommer det intressanta — vi jĂ€mför New Relics möjligheter med vad konkurrenterna erbjuder. TyvĂ€rr har vi inte kunnat testa alla tre verktyg pĂ„ en version av en produktionsapplikation. ÄndĂ„ har vi försökt jĂ€mföra sĂ„ identiska situationer/konfigurationer som möjligt.

1. Datadog

Datadog möter oss med en panel med en vÀgg av tjÀnster:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Det försöker dela upp applikationer i komponenter/mikrotjÀnster, sÄ för det givna exemplet med Django-applikationen kommer vi att se 2 anslutningar till PostgreSQL (defaultdb och postgres), samt Celery, Redis. Att arbeta med Datadog krÀver att du har minimala kunskaper om MVC-principer: du mÄste förstÄ vart begÀrningar frÄn anvÀndare överhuvudtaget gÄr. Vanligtvis hjÀlper en tjÀnstkarta:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Förresten finns nÄgot liknande Àven i New Relic:

Inte bara New Relic: en blick pÄ Datadog och Atatus


 vilket gör att deras karta, enligt min mening, Ă€r enklare och tydligare: den visar inte komponenterna i en applikation (vilket skulle göra den alltför detaljerad, som i fallet med Datadog), utan endast specifika tjĂ€nster eller mikrotjĂ€nster.

LÄt oss ÄtervÀnda till Datadog: frÄn tjÀnstekartan syns det att anvÀndarförfrÄgningar kommer in i Django. Vi gÄr till Django-tjÀnsten och ser Àntligen det vi förvÀntade oss:

Inte bara New Relic: en blick pÄ Datadog och Atatus

TyvĂ€rr finns det ingen graf hĂ€r som standard Web transaction time, liknande den vi ser pĂ„ huvudpanelen i New Relic. Men det gĂ„r att stĂ€lla in det pĂ„ grafens plats % of Time spent. Det rĂ€cker med att vĂ€xla till Avg time per request by Type
 och dĂ€r stĂ„r den bekanta grafen framför oss!

Inte bara New Relic: en blick pÄ Datadog och Atatus

Varför Datadog valde en annan graf Àr en gÄta för oss. Dessutom blev vi besvikna över att systemet inte kommer ihÄg anvÀndarens val (till skillnad frÄn bÄda konkurrenterna), och dÀrför Àr den enda lösningen att skapa anvÀndarpaneler.

Men det glÀdjer oss att Datadog erbjuder att gÄ frÄn dessa grafer till mÀtningar av relaterade servrar, lÀsa loggar och utvÀrdera belastningen pÄ webbserverns hanterare (Gunicorn). NÀstan precis som i New Relic
 och till och med lite mer (loggar)!

Nedanför graferna finns transaktioner, helt analogt med New Relic:

Inte bara New Relic: en blick pÄ Datadog och Atatus

I Datadog kallas transaktioner resurser. Du kan sortera kontroller efter antal förfrÄgningar, genomsnittlig svarstid och maximal tidsÄtgÄng under vald tidsperiod.

En resurs kan utökas för att se allt som vi redan har observerat i New Relic:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Det finns bĂ„de statistik över resursen och en sammanfattande lista över interna anrop och exempel pĂ„ förfrĂ„gningar som kan sorteras efter svarskod
 Förresten, den hĂ€r sorteringen gillades mycket av vĂ„ra ingenjörer.

Varje exempel pÄ en resurs i Datadog kan öppnas och studeras:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Parametrarna för förfrÄgan presenteras, ett sammanfattande diagram över den tid som lagts ner pÄ varje komponent och ett vattenfallsdiagram dÀr anropens sekvens syns. Det finns ocksÄ möjlighet att vÀxla till en trÀdvy av vattenfallsdiagrammet:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Och det mest intressanta - att se belastningen pÄ den vÀrd dÀr förfrÄgan exekverades, samt att se loggarna för förfrÄgan.

Inte bara New Relic: en blick pÄ Datadog och Atatus

UtmÀrkt integration!

Det kan uppstÄ en frÄga om var flikarna Databases och External Services, som i New Relic. HÀr finns de inte: eftersom Datadog analyserar applikationen pÄ komponentnivÄ, kommer PostgreSQL att betraktas som en separat tjÀnst, och istÀllet för External Services fÄr man leta efter aws.storage (likas gÀller för varje annan extern tjÀnst som applikationen kan anropa).

Inte bara New Relic: en blick pÄ Datadog och Atatus

HÀr Àr ett exempel med postgres:

Inte bara New Relic: en blick pÄ Datadog och Atatus

I grund och botten finns allt som vi ville ha:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Det Àr tydligt vilket "tjÀnst" som begÀran kom ifrÄn.

Det Àr vÀrt att pÄminna om att Datadog integreras utmÀrkt med NGINX Ingress och möjliggör end-to-end spÄrning frÄn det att begÀran kommer in i klustret, samt att ta emot statsd-mÀtningar, samla loggar och vÀrdmÀtningar.

En stor fördel med Datadog Àr att dess pris bestÄr av infrastrukturövervakning, APM, logghantering och syntetiska tester, sÄ att man flexibelt kan vÀlja plan.

2. Atatus

Atatus-teamet hÀvdar att deras tjÀnst Àr "som New Relic, men bÀttre". LÄt oss se om det verkligen Àr sÄ.

Titelpanelen ser verkligen liknande ut, men det var inte möjligt att identifiera Redis och memcached som anvÀndes i applikationen.

Inte bara New Relic: en blick pÄ Datadog och Atatus

APM vÀljer som standard alla transaktioner, Àven om man oftast endast behöver Web. Precis som i Datadog finns det ingen möjlighet att gÄ till den nödvÀndiga tjÀnsten frÄn huvudpanelen. Dessutom finns transaktionerna i listan efter felen, vilket inte verkar sÀrskilt logiskt för APM.

Transaktionerna i Atatus liknar helt och hÄllet New Relic. Nackdelen Àr att dynamiken för varje kontroller inte syns direkt. Den mÄste hittas i kontrollerlistan genom att sortera efter Mest förbrukad tid:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Den bekanta listan med kontroller finns tillgÀnglig under fliken Utforska:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Denna tabell pÄminner nÄgot om Datadog och Àr mer tilltalande Àn den motsvarande i New Relic.

Varje transaktion kan expanderas för att se vad applikationen sysselsatte sig med:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Panelen liknar ocksĂ„ mer Datadog: det finns antal begĂ€rningar, en allmĂ€n översikt över anrop. Över panelen erbjuder en flik med felen HTTP-fel och exempel pĂ„ lĂ„ngsamma begĂ€rningar SessionsspĂ„rningar:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Om man gÄr in i en transaktion kan man se ett exempel pÄ spÄrning, fÄ en lista över begÀrningar till databasen och se begÀrans rubriker. Allt liknar New Relic:

Inte bara New Relic: en blick pÄ Datadog och Atatus

Generellt sett imponerade Atatus med detaljerade spĂ„rningar — utan de typiska hopslagna anropen i reminder-blocket frĂ„n New Relic:

Inte bara New Relic: en blick pÄ Datadog och Atatus
Inte bara New Relic: en blick pÄ Datadog och Atatus

Men hĂ€r saknas en filter som skulle (som i New Relic) sortera bort super-snabba begĂ€rningar (<5ms). Å andra sidan gillades visningen av det slutliga svaret frĂ„n transaktionen (lyckad eller fel).

Panel Databases kommer att hjÀlpa till att studera begÀrningar till externa databaser som applikationen gör. Jag pÄminner om att Atatus endast hittade PostgreSQL och MySQL, Àven om projektet ocksÄ anvÀnder Redis och memcached.

Inte bara New Relic: en blick pÄ Datadog och Atatus

FrĂ„gor sorteras efter vanliga kriterier: frekvens, genomsnittlig svarstid och sĂ„ vidare. Det Ă€r sĂ€rskilt vĂ€rt att nĂ€mna fliken med de lĂ„ngsammaste frĂ„gorna — det Ă€r vĂ€ldigt praktiskt. Dessutom stĂ€mmer datan i denna flik för PostgreSQL överens med datan frĂ„n tillĂ€gget pg_stat_statements — ett utmĂ€rkt resultat!

Inte bara New Relic: en blick pÄ Datadog och Atatus

Fliken Extern FörfrÄgningar Àr helt identisk med Databaser.

Slutsatser

BÄda de presenterade verktygen har visat sig vara bra APM-verktyg. Vardera av dem kan erbjuda det nödvÀndiga minimumet. Sammanfattningsvis kan vÄra intryck uttryckas sÄ hÀr:

Datadog

Fördelar:

  • en praktisk prisstruktur (APM kostar 31 USD per vĂ€rd);
  • visade sig fungera bra med Python;
  • möjlighet till integration med OpenTracing
  • integration med Kubernetes;
  • integration med NGINX Ingress.

Nackdelar:

  • den enda APM:n som orsakade otillgĂ€nglighet av applikationen pĂ„ grund av ett modulfel (predis);
  • svag auto-instrumentering för PHP;
  • delvis underligt definierande av tjĂ€nster och deras syften.

Atatus

Fördelar:

  • djupgĂ„ende instrumentering för PHP;
  • liknande anvĂ€ndargrĂ€nssnitt som New Relic.

Nackdelar:

  • fungerar inte pĂ„ gamla operativsystem (Ubuntu 12.05, CentOS 5);
  • svag auto-instrumentering;
  • stöd för endast tvĂ„ programmeringssprĂ„k (Node.js och PHP);
  • lĂ„ngsam funktionalitet.

Med tanke pÄ Atatus pris pÄ 69 USD per mÄnad och server, skulle vi snarare anvÀnda Datadog, som passar vÄra behov utmÀrkt (webbapplikationer i K8s) och har mÄnga anvÀndbara funktioner.

P.S.

LÀs Àven i vÄr blogg:

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster