Ne samo New Relic: pogled na Datadog i Atatus

Ne samo New Relic: pogled na Datadog i Atatus

U okruženju SRE/DevOps inženjera, nikoga neće iznenaditi da se jednog dana pojavi klijent (ili sistem za praćenje) i javi da je “sve izgubljeno”: stranica ne radi, plaćanja ne idu, život propada ... Bez obzira koliko biste željeli pomoći u takvoj situaciji, to bez jednostavnog i razumljivog alata može biti vrlo teško. Često je problem skriven u samom kodu aplikacije, samo ga trebate lokalizirati.

I u tuzi i u radosti…

Desilo se da smo se dugo i duboko zaljubili u New Relic. Bio je i ostao odličan alat za praćenje performansi aplikacije, a takođe vam omogućava da instrumentirate mikroservisnu arhitekturu (koristeći njenog agenta) i još mnogo, mnogo više. I sve bi moglo biti odlično da nije bilo promjena u politici cijena usluge: it trošak od 2013 godine porastao 3+ puta. Osim toga, od prošle godine za dobijanje probnog naloga potrebna je komunikacija sa ličnim menadžerom, što otežava predstavljanje proizvoda potencijalnom kupcu.

Uobičajena situacija: Nova relikvija nije potrebna „trajno“ sete je tek u trenutku kada počnu problemi. Ali i dalje morate redovno plaćati (140 USD po serveru mjesečno), a u infrastrukturi oblaka koji se automatski povećava, sume se zbrajaju prilično velike. Iako postoji opcija Pay-As-You-Go, omogućavanje New Relic-a će zahtijevati da ponovo pokrenete aplikaciju, što može dovesti do gubitka problematične situacije zbog koje je sve počelo. Nedavno je New Relic uveo novi tarifni plan - Essentials, - koji na prvi pogled izgleda kao razumna alternativa Professionalu... ali se pomnijim ispitivanjem pokazalo da nedostaju neke važne funkcije (posebno nema Ključne transakcije, Unakrsno praćenje aplikacija, Distributed Tracing).

Kao rezultat toga, počeli smo razmišljati o traženju jeftinije alternative, a naš izbor je pao na dva servisa: Datadog i Atatus. Zašto na njima?

O konkurentima

Odmah da kažem da postoje i druga rješenja na tržištu. Razmotrili smo čak i opcije otvorenog koda, ali nema svaki klijent slobodan kapacitet da ugosti rješenja koja se sami hostuju... - osim toga, zahtijevat će dodatno održavanje. Ispostavilo se da nam je par koji smo odabrali najbliži našim potrebama:

  • ugrađena i razvijena podrška za PHP aplikacije (stog naših klijenata je veoma raznolik, ali ovo je jasan lider u kontekstu traženja alternative za New Relic);
  • pristupačna cijena (manje od 100 USD mjesečno po domaćinu);
  • automatska instrumentacija;
  • integracija sa Kubernetesom;
  • Sličnost sa interfejsom New Relic je primetan plus (jer su naši inženjeri navikli na to).

Stoga smo u početnoj fazi odabira eliminirali nekoliko drugih popularnih rješenja, a posebno:

  • Tideways, AppDynamics i Dynatrace - po cijeni;
  • Stackify je blokiran u Ruskoj Federaciji i prikazuje premalo podataka.

Ostatak članka je strukturiran na način da će prvo ukratko biti predstavljena rješenja o kojima je riječ, nakon čega ću govoriti o našoj tipičnoj interakciji sa New Relic-om i iskustvima/utiscima iz izvođenja sličnih operacija u drugim servisima.

Prezentacija odabranih takmičara

Ne samo New Relic: pogled na Datadog i Atatus
na Nova relikvija, vjerovatno su svi čuli? Ova usluga je započela svoj razvoj prije više od 10 godina, 2008. godine. Aktivno ga koristimo od 2012. godine i nismo imali problema sa integracijom zaista velikog broja aplikacija u PHP, Ruby i Python, a imali smo i iskustvo integracije sa C# i Go. Autori servisa imaju rješenja za praćenje aplikacija, infrastrukture, praćenje mikroservisnih infrastruktura, kreirane pogodne aplikacije za korisničke uređaje i još mnogo toga.

Međutim, agent New Relic radi na vlasničkim protokolima i ne podržava OpenTracing. Napredna instrumentacija zahtijeva izmjene posebno za New Relic. Konačno, podrška za Kubernetes je i dalje eksperimentalna.

Ne samo New Relic: pogled na Datadog i Atatus
Svoj razvoj započeo 2010. godine datadog izgleda znatno zanimljivije od New Relic-a upravo u smislu upotrebe u Kubernetes okruženjima. Konkretno, podržava integraciju sa NGINX Ingress, prikupljanje dnevnika, statsd i OpenTracing protokole, što vam omogućava da pratite korisnički zahtjev od trenutka kada je povezan do završetka, kao i da pronađete dnevnike za ovaj zahtjev (i na strani web servera i na potrošača).

Prilikom korištenja Datadog-a naišli smo na to da je ponekad pogrešno napravio mikroservisnu mapu, kao i na neke tehničke nedostatke. Na primjer, pogrešno je identificirao tip usluge (pomiješavši Django sa uslugom za keširanje) i izazvao 500 grešaka u PHP aplikaciji koristeći popularnu Predis biblioteku.

Ne samo New Relic: pogled na Datadog i Atatus
Atatus — najmlađi instrument; servis je pokrenut 2014. Njegov marketinški budžet je očito inferioran u odnosu na navedene konkurente, spominjanja su mnogo rjeđa. Međutim, sam alat je veoma sličan New Relic-u, ne samo po svojim mogućnostima (APM, Browser monitoring, itd.), već i po izgledu.

Značajan nedostatak je što podržava samo Node.js i PHP. S druge strane, implementiran je primjetno bolje od Datadog-a. Za razliku od potonjeg, Atatus ne zahtijeva od aplikacija da izvrše izmjene ili dodaju dodatne oznake kodu.

Kako radimo sa New Relic-om

Sada da shvatimo kako općenito koristimo New Relic. Recimo da imamo problem koji treba rješenje:

Ne samo New Relic: pogled na Datadog i Atatus

To je lako vidjeti na grafikonu splash - Hajde da ga analiziramo. U New Relic-u se web transakcije odmah biraju za web aplikaciju, sve komponente su naznačene na grafu performansi, postoje paneli za stopu grešaka, stopu zahtjeva... Ono što je najvažnije je da direktno sa ovih panela možete prelaziti između različitih dijelove aplikacije (na primjer, klikom na MySQL vodi se do odjeljka baze podataka).

Budući da u primjeru koji razmatramo vidimo porast aktivnosti PHP, kliknite na ovaj grafikon i automatski idite na transakcije:

Ne samo New Relic: pogled na Datadog i Atatus

Lista transakcija, koje su u suštini kontrolori iz MVC modela, već je sortirana po Najviše vremena oduzima, što je vrlo zgodno: odmah vidimo šta aplikacija radi. Evo primjera dugih upita koje New Relic automatski prikuplja. Promjenom sortiranja lako je pronaći:

  • najopterećeniji aplikacijski kontroler;
  • najčešće traženi kontrolor;
  • najsporiji od kontrolera.

Osim toga, možete proširiti svaku transakciju i vidjeti što je aplikacija radila u vrijeme kada je kod izvršen:

Ne samo New Relic: pogled na Datadog i Atatus

Konačno, aplikacija pohranjuje primjere tragova dugih zahtjeva (onih koji traju više od 2 sekunde). Evo panela za dugu transakciju:

Ne samo New Relic: pogled na Datadog i Atatus

Vidi se da dvije metode oduzimaju dosta vremena, a istovremeno je prikazano i vrijeme kada je zahtjev izvršen, njegov URI i domen. Vrlo često ovo pomaže da se zahtjev pronađe u evidenciji. Idem na Detalji traga, možete vidjeti odakle se pozivaju ove metode:

Ne samo New Relic: pogled na Datadog i Atatus

I unutra Upiti baze podataka — procijeniti upite prema bazama podataka koji su izvršeni dok je aplikacija bila pokrenuta:

Ne samo New Relic: pogled na Datadog i Atatus

Naoružani ovim znanjem, možemo procijeniti zašto se aplikacija usporava i raditi s programerom na iznalaženju strategije za rješavanje problema. U stvarnosti, New Relic ne daje uvijek jasnu sliku, ali pomaže u odabiru vektora istrage:

  • dugo PDO::Construct dovelo nas je do čudnog funkcionisanja pgpoll-a;
  • nestabilnost tokom vremena Memcache::Get sugeriše da je virtuelna mašina pogrešno konfigurisana;
  • sumnjivo produženo vrijeme za obradu šablona dovelo je do ugniježđene petlje koja provjerava prisustvo 500 avatara u skladištu objekata;
  • itd ...

Dešava se i da umjesto izvršavanja koda na glavnom ekranu raste nešto vezano za eksternu pohranu podataka - i nije važno šta će biti: Redis ili PostgreSQL - svi su skriveni u kartici baze podataka.

Ne samo New Relic: pogled na Datadog i Atatus

Možete odabrati određenu bazu za istraživanje i sortiranje upita – slično kao što se to radi u Transakcijama. A odlaskom na karticu zahtjeva možete vidjeti koliko puta se ovaj zahtjev pojavljuje u svakom od kontrolera aplikacije, kao i procijeniti koliko se često poziva. Veoma je udoban:

Ne samo New Relic: pogled na Datadog i Atatus

Kartica sadrži slične podatke Eksterne usluge, koji skriva zahtjeve prema eksternim HTTP uslugama, kao što je pristup skladištu objekata, slanje događaja stražaru i slično. Sadržaj kartice je potpuno sličan bazama podataka:

Ne samo New Relic: pogled na Datadog i Atatus

Konkurenti: prilike i utisci

Sada je najzanimljivije uporediti mogućnosti New Relic-a sa onim što nude konkurenti. Nažalost, nismo bili u mogućnosti testirati sva tri alata na jednoj verziji jedne aplikacije koja radi u produkciji. Međutim, pokušali smo da uporedimo situacije/konfiguracije koje su bile što identične.

1.Datadog

Datadog nas dočekuje sa panoom sa zidom usluga:

Ne samo New Relic: pogled na Datadog i Atatus

Pokušava razbiti aplikacije na komponente/mikroservise, tako da ćemo u primjeru Django aplikacije vidjeti 2 veze na PostgreSQL (defaultdb и postgres), kao i celer, Redis. Rad sa Datadog-om zahteva da imate minimalno znanje o MVC principima: morate da razumete odakle zahtevi korisnika generalno dolaze. Ovo obično pomaže mapa usluga:

Ne samo New Relic: pogled na Datadog i Atatus

Inače, u New Relic-u postoji nešto slično:

Ne samo New Relic: pogled na Datadog i Atatus

... a njihova mapa je, po mom mišljenju, učinjena jednostavnijom i jasnijom: ne prikazuje komponente jedne aplikacije (što bi je učinilo previše detaljnom, kao u slučaju Datadog), već samo određene servise ili mikroservise.

Vratimo se na Datadog: sa karte servisa možemo vidjeti da zahtjevi korisnika dolaze u Django. Idemo na Django servis i konačno vidimo šta smo očekivali:

Ne samo New Relic: pogled na Datadog i Atatus

Nažalost, ovdje po defaultu nema grafikona Vrijeme web transakcije, slično onome što vidimo na glavnom panelu New Relic. Međutim, može se konfigurirati umjesto rasporeda % utrošenog vremena. Dovoljno ga je prebaciti Prosj. vrijeme po zahtjevu prema vrsti... i sada nas poznati graf gleda!

Ne samo New Relic: pogled na Datadog i Atatus

Zašto je Datadog odabrao drugačiji grafikon za nas je misterija. Još jedna frustrirajuća stvar je što sistem ne pamti izbor korisnika (za razliku od oba konkurenta), te je stoga jedino rješenje kreiranje prilagođenih panela.

Ali bio sam zadovoljan mogućnošću u Datadogu da se prebacim sa ovih grafikona na metriku povezanih servera, pročitam logove i procenim opterećenje rukovalaca veb servera (Gunicorn). Sve je skoro isto kao u New Relic-u... pa čak i malo više (logovi)!

Ispod grafikona su transakcije potpuno slične New Relic-u:

Ne samo New Relic: pogled na Datadog i Atatus

U Datadogu se transakcije pozivaju resurse. Kontrolere možete sortirati po broju zahtjeva, po prosječnom vremenu odgovora i po maksimalnom vremenu provedenom za odabrani vremenski period.

Možete proširiti resurs i vidjeti sve što smo već uočili u New Relic-u:

Ne samo New Relic: pogled na Datadog i Atatus

Postoji statistika o resursu, generalizovana lista internih poziva i primeri zahteva koji se mogu sortirati po kodu odgovora... Inače, našim inženjerima se ovo sortiranje jako dopalo.

Bilo koji primjer resursa u Datadogu može se otvoriti i proučavati:

Ne samo New Relic: pogled na Datadog i Atatus

Prikazani su parametri zahtjeva, zbirni dijagram vremena utrošenog na svaku komponentu, i dijagram vodopada koji prikazuje redoslijed poziva. Također se možete prebaciti na prikaz stabla vodopada grafikona:

Ne samo New Relic: pogled na Datadog i Atatus

A najzanimljivija stvar je pregled opterećenja hosta na kojem je zahtjev izvršen i pregled dnevnika zahtjeva.

Ne samo New Relic: pogled na Datadog i Atatus

Odlična integracija!

Možda se pitate gdje su kartice baze podataka и Eksterne usluge, kao u New Relic. Ovdje ih nema: pošto Datadog razlaže aplikaciju na komponente, PostgreSQL će biti uzet u obzir zasebna usluga, a umjesto vanjskih usluga vrijedi tražiti aws.storage (slično će biti za sve druge eksterne usluge kojima aplikacija može pristupiti).

Ne samo New Relic: pogled na Datadog i Atatus

Evo primjera sa postgres:

Ne samo New Relic: pogled na Datadog i Atatus

U suštini postoji sve što smo želeli:

Ne samo New Relic: pogled na Datadog i Atatus

Možete vidjeti iz koje je "servise" stigao zahtjev.

Ne bi bilo loše da vas podsetim da se Datadog savršeno integriše sa NGINX Ingressom i omogućava vam da izvršite praćenje od kraja do kraja od trenutka kada zahtev stigne u klaster, a takođe vam omogućava da primate statsd metrike, prikupljate logove i metriku hosta .

Ogroman plus Datadoga je njegova cijena razvija od nadzora infrastrukture, APM-a, Log Managementa i testa sintetike, tj. Možete birati svoj plan fleksibilno.

2.Atatus

Atatusov tim tvrdi da je njihov servis “isti kao New Relic, ali bolji”. Da vidimo da li je to zaista tako.

Glavni panel izgleda slično, ali nije bilo moguće odrediti Redis i memcached koji se koriste u aplikaciji.

Ne samo New Relic: pogled na Datadog i Atatus

APM podrazumevano bira sve transakcije, iako su obično potrebne samo Web transakcije. Kao i Datadog, ne postoji način za navigaciju do željene usluge sa glavnog panela. Štaviše, transakcije se navode nakon grešaka, što se za APM ne čini logičnim.

U Atatus transakcijama je sve što je moguće sličnije New Relic-u. Loša strana je što dinamika za svaki kontroler nije odmah vidljiva. Morate ga potražiti u tabeli kontrolera, sortirati po Najviše vremena utrošeno:

Ne samo New Relic: pogled na Datadog i Atatus

Uobičajena lista kontrolera dostupna je na kartici istražiti:

Ne samo New Relic: pogled na Datadog i Atatus

Na neki način ova tabela podsjeća na Datadog i više mi se sviđa od slične u New Relic-u.

Možete proširiti svaku transakciju i vidjeti što je aplikacija radila:

Ne samo New Relic: pogled na Datadog i Atatus

Panel takođe više podseća na Datadog: postoji veliki broj zahteva, opšta slika poziva. Gornji panel pruža karticu greške HTTP greške i primjeri sporih upita Tragovi sesije:

Ne samo New Relic: pogled na Datadog i Atatus

Ako odete na transakciju, možete vidjeti primjer praćenja, možete dobiti listu zahtjeva u bazu podataka i pogledati zaglavlja zahtjeva. Sve je slično New Relic-u:

Ne samo New Relic: pogled na Datadog i Atatus

Generalno, Atatus je zadovoljan detaljnim tragovima - bez tipičnog New Relic-a lijepljenja poziva u blok podsjetnika:

Ne samo New Relic: pogled na Datadog i Atatus
Ne samo New Relic: pogled na Datadog i Atatus

Međutim, nedostaje mu filter koji bi (kao New Relic) odsjekao ultra-brze zahtjeve (<5ms). S druge strane, dopao mi se prikaz konačnog odgovora na transakciju (uspjeh ili greška).

Panel baze podataka pomoći će vam da proučite zahtjeve prema vanjskim bazama podataka koje aplikacija postavlja. Da vas podsetim da je Atatus pronašao samo PostgreSQL i MySQL, iako su Redis i memcached takođe uključeni u projekat.

Ne samo New Relic: pogled na Datadog i Atatus

Zahtjevi se sortiraju prema uobičajenim kriterijima: učestalost odgovora, prosječno vrijeme odgovora i tako dalje. Takođe bih želeo da pomenem karticu sa najsporijim upitima - veoma je zgodna. Štaviše, podaci na ovoj kartici za PostgreSQL poklapali su se sa podacima iz ekstenzije pg_stat_statements - odličan rezultat!

Ne samo New Relic: pogled na Datadog i Atatus

Tab Eksterni zahtjevi potpuno identična bazama podataka.

nalazi

Oba predstavljena alata dobro su se pokazala u ulozi APM-a. Bilo koji od njih može ponuditi traženi minimum. Naši utisci se mogu ukratko sumirati na sljedeći način:

datadog

Pros:

  • pogodan tarifni raspored (APM košta 31 USD po domaćinu);
  • dobro radio sa Pythonom;
  • Mogućnost integracije sa OpenTracing
  • integracija sa Kubernetesom;
  • integracija sa NGINX Ingress.

Cons:

  • jedini APM zbog kojeg je aplikacija postala nedostupna zbog greške modula (predis);
  • slaba PHP auto-instrumentacija;
  • djelomično čudna definicija usluga i njihove svrhe.

Atatus

Pros:

  • duboka PHP instrumentacija;
  • korisnički interfejs sličan New Relic-u.

Cons:

  • ne radi na starijim operativnim sistemima (Ubuntu 12.05, CentOS 5);
  • slaba auto-instrumentacija;
  • podrška za samo dva jezika (Node.js i PHP);
  • Sporo interfejs.

S obzirom na Atatusovu cenu od 69 USD mesečno po serveru, radije bismo koristili Datadog, koji se dobro integriše sa našim potrebama (web aplikacije u K8s) i ima mnogo korisnih funkcija.

PS

Pročitajte i na našem blogu:

izvor: www.habr.com

Dodajte komentar