Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Sa kapaligiran ng mga inhinyero ng SRE/DevOps, hindi magugulat ang sinuman na isang araw ay lilitaw ang isang kliyente (o isang sistema ng pagsubaybay) at nag-uulat na "nawala ang lahat": ang site ay hindi gumagana, ang mga pagbabayad ay hindi napupunta, ang buhay ay nabubulok. ... Kahit gaano mo gustong tumulong sa ganitong sitwasyon , maaaring napakahirap gawin ito nang walang simple at naiintindihan na tool. Kadalasan ang problema ay nakatago sa mismong application code; kailangan mo lang itong i-localize.

At sa lungkot at saya...

Nagkataon na matagal at malalim na nahulog ang loob namin sa New Relic. Ito ay at nananatiling isang mahusay na tool para sa pagsubaybay sa pagganap ng application, at nagbibigay-daan din sa iyo na instrumento ang microservice architecture (gamit ang ahente nito) at marami pa. At maaaring maging maganda ang lahat kung hindi dahil sa mga pagbabago sa patakaran sa pagpepresyo ng serbisyo: ito gastos mula sa 2013 na taon lumaki ng 3+ beses. Bilang karagdagan, mula noong nakaraang taon, ang pagkuha ng isang pagsubok na account ay nangangailangan ng pakikipag-usap sa isang personal na tagapamahala, na nagpapahirap sa pagpapakita ng produkto sa isang potensyal na customer.

Ang karaniwang sitwasyon: Ang Bagong Relic ay hindi kailangan sa "permanenteng batayan"; naaalala lamang nila ito sa sandaling magsimula ang mga problema. Ngunit kailangan mo pa ring regular na magbayad (140 USD bawat server bawat buwan), at sa isang awtomatikong pag-scale ng imprastraktura ng ulap, ang mga kabuuan ay nagdaragdag ng medyo malaki. Bagama't mayroong opsyon na Pay-As-You-Go, ang pagpapagana sa New Relic ay mangangailangan sa iyo na i-restart ang application, na maaaring humantong sa pagkawala ng problemang sitwasyon kung saan nagsimula ang lahat. Hindi nagtagal, ipinakilala ng New Relic ang isang bagong plano ng taripa - Mahahalaga, - na sa unang sulyap ay mukhang isang makatwirang alternatibo sa Propesyonal... ngunit sa mas malapit na pagsusuri ay lumabas na ang ilang mahahalagang function ay nawawala (sa partikular, wala itong Mga Pangunahing Transaksyon, Cross Application Tracing, Ibinahagi ang Pagsubaybay).

Bilang resulta, nagsimula kaming mag-isip tungkol sa paghahanap ng mas murang alternatibo, at ang aming napili ay nahulog sa dalawang serbisyo: Datadog at Atatus. Bakit sa kanila?

Tungkol sa mga kakumpitensya

Hayaan akong sabihin kaagad na may iba pang mga solusyon sa merkado. Isinaalang-alang pa namin ang mga opsyon sa Open Source, ngunit hindi lahat ng kliyente ay may libreng kapasidad na mag-host ng mga self-hosted na solusyon... - bilang karagdagan, mangangailangan sila ng karagdagang maintenance. Ang napili naming mag-asawa ang pinaka-close ating mga pangangailangan:

  • built-in at binuo na suporta para sa mga application ng PHP (ang stack ng aming mga kliyente ay napaka-magkakaibang, ngunit ito ay isang malinaw na pinuno sa konteksto ng paghahanap ng alternatibo sa New Relic);
  • abot-kayang halaga (mas mababa sa 100 USD bawat buwan bawat host);
  • awtomatikong instrumentasyon;
  • pagsasama sa Kubernetes;
  • Ang pagkakapareho sa interface ng New Relic ay isang kapansin-pansing plus (dahil ang aming mga inhinyero ay nakasanayan na).

Samakatuwid, sa paunang yugto ng pagpili, inalis namin ang ilang iba pang mga tanyag na solusyon, at sa partikular:

  • Tideways, AppDynamics at Dynatrace - para sa gastos;
  • Naka-block ang Stackify sa Russian Federation at nagpapakita ng masyadong maliit na data.

Ang natitirang bahagi ng artikulo ay nakabalangkas sa paraang ang mga solusyon na pinag-uusapan ay unang ipapakita sa madaling sabi, pagkatapos nito ay magsasalita ako tungkol sa aming karaniwang pakikipag-ugnayan sa New Relic at karanasan/mga impression mula sa pagsasagawa ng mga katulad na operasyon sa iba pang mga serbisyo.

Pagtatanghal ng mga napiling kakumpitensya

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus
Tungkol sa New Relic, malamang narinig na ng lahat? Sinimulan ng serbisyong ito ang pag-unlad nito mahigit 10 taon na ang nakalilipas, noong 2008. Aktibong ginagamit namin ito mula noong 2012 at wala kaming mga problema sa pagsasama ng napakalaking bilang ng mga application sa PHP, Ruby at Python, at nagkaroon din kami ng karanasan sa pagsasama sa C# at Go. Ang mga may-akda ng serbisyo ay may mga solusyon para sa pagsubaybay sa mga aplikasyon, imprastraktura, pagsubaybay sa mga imprastraktura ng microservice, lumikha ng mga maginhawang aplikasyon para sa mga device ng gumagamit, at marami pang iba.

Gayunpaman, ang ahente ng Bagong Relic ay tumatakbo sa mga proprietary protocol at hindi sumusuporta sa OpenTracing. Ang advanced na instrumentation ay nangangailangan ng mga pag-edit partikular para sa New Relic. Sa wakas, ang suporta ng Kubernetes ay eksperimental pa rin.

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus
Sinimulan ang pag-unlad nito noong 2010 datadog mukhang kapansin-pansing mas kawili-wili kaysa sa New Relic nang eksakto sa mga tuntunin ng paggamit sa mga kapaligiran ng Kubernetes. Sa partikular, sinusuportahan nito ang pagsasama sa NGINX Ingress, koleksyon ng log, statsd at OpenTracing na mga protocol, na nagbibigay-daan sa iyong subaybayan ang kahilingan ng user mula sa sandaling ito ay konektado hanggang sa pagkumpleto, pati na rin ang paghahanap ng mga log para sa kahilingang ito (parehong nasa panig ng web server. at sa panig ng mamimili).

Kapag gumagamit ng Datadog, nakatagpo kami ng katotohanan na kung minsan ay mali nitong binuo ang mapa ng microservice, at ilang mga teknikal na pagkukulang. Halimbawa, maling natukoy nito ang uri ng serbisyo (napagkakamalang Django ang isang serbisyo sa pag-cache) at nagdulot ng 500 error sa isang PHP application gamit ang sikat na Predis library.

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus
Atatus — ang pinakabatang instrumento; ang serbisyo ay inilunsad noong 2014. Ang badyet sa marketing nito ay malinaw na mas mababa sa mga nakalistang kakumpitensya, ang mga pagbanggit ay hindi gaanong karaniwan. Gayunpaman, ang tool mismo ay halos kapareho sa New Relic, hindi lamang sa mga kakayahan nito (APM, pagsubaybay sa Browser, atbp.), kundi pati na rin sa hitsura.

Ang isang makabuluhang disbentaha ay sinusuportahan lamang nito ang Node.js at PHP. Sa kabilang banda, ito ay ipinatupad na kapansin-pansing mas mahusay kaysa sa Datadog. Hindi tulad ng huli, ang Atatus ay hindi nangangailangan ng mga application para gumawa ng mga pagbabago o magdagdag ng mga karagdagang label sa code.

Paano kami nagtatrabaho sa New Relic

Ngayon tingnan natin kung paano natin karaniwang ginagamit ang New Relic. Sabihin nating mayroon tayong problema na nangangailangan ng solusyon:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Madaling makita sa graph sabog - Pag-aralan natin ito. Sa New Relic, ang mga transaksyon sa web ay agad na pinipili para sa isang web application, ang lahat ng mga bahagi ay ipinahiwatig sa graph ng pagganap, may mga error-rate, mga panel ng rate ng kahilingan... Ang pinakamahalaga ay na direkta mula sa mga panel na ito maaari kang lumipat sa pagitan ng iba't ibang bahagi ng application (halimbawa, ang pag-click sa MySQL ay hahantong sa seksyon ng database).

Dahil sa halimbawang isinasaalang-alang ay nakikita natin ang isang pagsulong sa aktibidad PHP, mag-click sa chart na ito at awtomatikong pumunta sa Linay:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Ang listahan ng mga transaksyon, na mahalagang mga controller mula sa MVC model, ay pinagsunod-sunod na Pinakakaubos ng oras, na napaka-maginhawa: agad naming nakikita kung ano ang ginagawa ng application. Narito ang mga halimbawa ng mahabang query na awtomatikong kinokolekta ng New Relic. Sa pamamagitan ng paglipat ng pag-uuri, madaling mahanap:

  • ang pinaka-load na application controller;
  • pinaka-madalas na hinihiling na controller;
  • ang pinakamabagal sa mga controllers.

Bilang karagdagan, maaari mong palawakin ang bawat transaksyon at makita kung ano ang ginagawa ng application sa oras na naisakatuparan ang code:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Sa wakas, ang application ay nag-iimbak ng mga halimbawa ng mga bakas ng mahahabang kahilingan (mga tumatagal ng higit sa 2 segundo). Narito ang panel para sa mahabang transaksyon:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Makikita na ang dalawang pamamaraan ay tumatagal ng maraming oras, at sa parehong oras kapag ang kahilingan ay naisakatuparan, ang URI at domain nito ay ipinapakita din. Kadalasan nakakatulong ito upang mahanap ang kahilingan sa mga log. Papunta sa Subaybayan ang mga detalye, makikita mo kung saan tinawag ang mga pamamaraang ito:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

At sa Mga query sa database — suriin ang mga query sa mga database na naisakatuparan habang tumatakbo ang application:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Gamit ang kaalamang ito, maaari nating suriin kung bakit bumabagal ang application at makipagtulungan sa developer upang makabuo ng isang diskarte upang malutas ang problema. Sa katotohanan, ang New Relic ay hindi palaging nagbibigay ng isang malinaw na larawan, ngunit nakakatulong ito upang piliin ang vector ng pagsisiyasat:

  • mahaba PDO::Construct humantong sa amin sa kakaibang paggana ng pgpoll;
  • kawalang-tatag sa paglipas ng panahon Memcache::Get iminungkahi na ang virtual machine ay na-configure nang hindi tama;
  • ang isang kahina-hinalang pagtaas ng oras para sa pagpoproseso ng template ay humantong sa isang nested loop na sinusuri ang pagkakaroon ng 500 avatar sa imbakan ng bagay;
  • atbp…

Nangyayari din na sa halip na mag-execute ng code, isang bagay na nauugnay sa external na storage ng data ang lumalaki sa pangunahing screen - at hindi mahalaga kung ano ito: Redis o PostgreSQL - lahat sila ay nakatago sa tab Databases.

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Maaari kang pumili ng partikular na base para sa pananaliksik at pag-uri-uriin ang mga query - katulad ng kung paano ito ginagawa sa Mga Transaksyon. At sa pamamagitan ng pagpunta sa tab ng kahilingan, makikita mo kung gaano karaming beses nangyayari ang kahilingang ito sa bawat isa sa mga controllers ng application, at tantiyahin din kung gaano kadalas ito tinatawag. Ito ay napaka komportable:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Ang tab ay naglalaman ng katulad na data Panlabas na Serbisyo, na nagtatago ng mga kahilingan sa mga panlabas na serbisyo ng HTTP, tulad ng pag-access sa imbakan ng bagay, pagpapadala ng mga kaganapan sa sentri, o katulad nito. Ang nilalaman ng tab ay ganap na katulad sa Mga Database:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Mga kakumpitensya: mga pagkakataon at impression

Ngayon ang pinaka-kagiliw-giliw na bagay ay upang ihambing ang mga kakayahan ng New Relic sa kung ano ang inaalok ng mga kakumpitensya. Sa kasamaang palad, hindi namin nasubukan ang lahat ng tatlong tool sa isang bersyon ng isang application na tumatakbo sa produksyon. Gayunpaman, sinubukan naming ihambing ang mga sitwasyon/configuration na magkapareho hangga't maaari.

1.Datadog

Binabati kami ng Datadog ng isang panel na may pader ng mga serbisyo:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Sinusubukan nitong hatiin ang mga application sa mga bahagi/microservice, kaya sa halimbawa ng Django application ay makikita natin ang 2 koneksyon sa PostgreSQL (defaultdb и postgres), pati na rin ang Celery, Redis. Ang pagtatrabaho sa Datadog ay nangangailangan sa iyo na magkaroon ng kaunting kaalaman sa mga prinsipyo ng MVC: kailangan mong maunawaan kung saan karaniwang nagmumula ang mga kahilingan ng user. Ito ay kadalasang nakakatulong mapa ng mga serbisyo:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Sa pamamagitan ng paraan, mayroong isang bagay na katulad sa New Relic:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

... at ang kanilang mapa, sa palagay ko, ay ginawang mas simple at mas malinaw: hindi ito nagpapakita ng mga bahagi ng isang application (na gagawin itong sobrang detalyado, tulad ng sa kaso ng Datadog), ngunit mga partikular na serbisyo o microservice lamang.

Bumalik tayo sa Datadog: mula sa mapa ng serbisyo makikita natin na ang mga kahilingan ng user ay dumarating sa Django. Pumunta tayo sa serbisyo ng Django at sa wakas ay makita kung ano ang inaasahan namin:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Sa kasamaang palad, walang graph dito bilang default Oras ng transaksyon sa web, katulad ng nakikita natin sa pangunahing panel ng New Relic. Gayunpaman, maaari itong i-configure bilang kapalit ng iskedyul % ng Oras na ginugol. Ito ay sapat na upang ilipat ito sa Avg na oras bawat kahilingan ayon sa Uri... at ngayon ang pamilyar na graph ay nakatingin sa amin!

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Kung bakit pumili ng ibang chart si Datadog ay isang misteryo sa amin. Ang isa pang nakakadismaya ay hindi naaalala ng system ang pinili ng user (hindi katulad ng parehong mga kakumpitensya), at samakatuwid ang tanging solusyon ay ang lumikha ng mga custom na panel.

Ngunit nasiyahan ako sa kakayahan ng Datadog na lumipat mula sa mga graph na ito sa mga sukatan ng mga kaugnay na server, basahin ang mga log at suriin ang pagkarga sa mga humahawak ng web server (Gunicorn). Ang lahat ay halos pareho sa New Relic... at kahit kaunti pa (mga log)!

Sa ibaba ng mga graph ay ang mga transaksyon na ganap na katulad ng New Relic:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Sa Datadog, tinatawag ang mga transaksyon mapagkukunan. Maaari mong pag-uri-uriin ang mga controller ayon sa bilang ng mga kahilingan, ayon sa average na oras ng pagtugon, at sa maximum na oras na ginugol para sa isang napiling yugto ng panahon.

Maaari mong palawakin ang mapagkukunan at makita ang lahat ng naobserbahan na namin sa New Relic:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

May mga istatistika sa mapagkukunan, isang pangkalahatang listahan ng mga panloob na tawag, at mga halimbawa ng mga kahilingan na maaaring pag-uri-uriin ayon sa code ng pagtugon... Siyanga pala, talagang nagustuhan ng aming mga inhinyero ang pag-uuri na ito.

Ang anumang halimbawang mapagkukunan sa Datadog ay maaaring buksan at pag-aralan:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Ang mga parameter ng kahilingan, isang buod na tsart ng oras na ginugol sa bawat bahagi, at isang waterfall chart na nagpapakita ng pagkakasunud-sunod ng mga tawag ay ipinakita. Maaari ka ring lumipat sa isang tree view ng waterfall chart:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

At ang pinaka-kagiliw-giliw na bagay ay ang pagtingin sa pag-load ng host kung saan ang kahilingan ay naisakatuparan at ang pagtingin sa mga log ng kahilingan.

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Mahusay na pagsasama!

Maaari kang magtaka kung nasaan ang mga tab Databases и Panlabas na Serbisyo, tulad ng sa New Relic. Wala dito: dahil nabubulok ng Datadog ang application sa mga bahagi, isasaalang-alang ang PostgreSQL isang hiwalay na serbisyo, at sa halip na Mga Panlabas na Serbisyo ito ay sulit na hanapin aws.storage (magiging katulad ito para sa bawat iba pang panlabas na serbisyo na maa-access ng application).

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Narito ang isang halimbawa na may postgres:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Sa pangkalahatan, nariyan ang lahat ng gusto namin:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Makikita mo kung saang “serbisyo” nanggaling ang kahilingan.

Hindi mali na ipaalala sa iyo na ang Datadog ay ganap na sumasama sa NGINX Ingress at nagbibigay-daan sa iyong magsagawa ng end-to-end na pagsubaybay mula sa sandaling dumating ang isang kahilingan sa cluster, at nagbibigay-daan din sa iyong makatanggap ng mga sukatan ng statsd, mangolekta ng mga log at mga sukatan ng host. .

Ang isang malaking plus ng Datadog ay ang presyo nito ay humuhubog mula sa pagsubaybay sa imprastraktura, APM, Log Management at Synthetics test, i.e. Maaari mong piliin ang iyong plano nang may kakayahang umangkop.

2.Atatus

Sinasabi ng koponan ng Atatus na ang kanilang serbisyo ay "kapareho ng New Relic, ngunit mas mahusay." Tingnan natin kung ito talaga.

Ang pangunahing panel ay mukhang magkatulad, ngunit hindi posible na matukoy ang Redis at memcached na ginamit sa application.

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Pinipili ng APM ang lahat ng transaksyon bilang default, bagama't karaniwang mga transaksyon sa Web lang ang kailangan. Tulad ng Datadog, walang paraan upang mag-navigate sa nais na serbisyo mula sa pangunahing panel. Bukod dito, ang mga transaksyon ay nakalista pagkatapos ng mga error, na tila hindi masyadong lohikal para sa APM.

Sa mga transaksyon sa Atatus, lahat ay katulad ng posible sa New Relic. Ang downside ay ang dynamics para sa bawat controller ay hindi agad makikita. Kailangan mong hanapin ito sa talahanayan ng controller, pag-uuri ayon sa Karamihan sa Oras na Naubos:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Ang karaniwang listahan ng mga controller ay available sa tab galugarin:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Sa ilang mga paraan, ang talahanayang ito ay nakapagpapaalaala sa Datadog at mas gusto ko ito kaysa sa katulad sa New Relic.

Maaari mong palawakin ang bawat transaksyon at makita kung ano ang ginagawa ng application:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Ang panel ay higit na nakapagpapaalaala sa Datadog: mayroong isang bilang ng mga kahilingan, isang pangkalahatang larawan ng mga tawag. Ang tuktok na panel ay nagbibigay ng tab ng error Mga Pagkabigo sa HTTP at mga halimbawa ng mabagal na query Mga Bakas ng Sesyon:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Kung pupunta ka sa isang transaksyon, maaari kang makakita ng isang halimbawa ng isang bakas, maaari kang makakuha ng isang listahan ng mga kahilingan sa database at tingnan ang mga header ng kahilingan. Ang lahat ay katulad ng New Relic:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Sa pangkalahatan, nalulugod si Atatus sa mga detalyadong bakas - nang walang karaniwang New Relic na pagdikit ng mga tawag sa isang block ng paalala:

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus
Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Gayunpaman, wala itong filter na (tulad ng New Relic) ay pumutol sa mga napakabilis na kahilingan (<5ms). Sa kabilang banda, nagustuhan ko ang pagpapakita ng huling tugon sa transaksyon (tagumpay o pagkakamali).

Panel Databases ay tutulong sa iyo na pag-aralan ang mga kahilingan sa mga panlabas na database na ginagawa ng application. Hayaan mong ipaalala ko sa iyo na natagpuan lamang ni Atatus ang PostgreSQL at MySQL, bagaman ang Redis at memcached ay kasangkot din sa proyekto.

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Ang mga kahilingan ay pinagsunod-sunod ayon sa karaniwang pamantayan: dalas ng pagtugon, average na oras ng pagtugon, at iba pa. Gusto ko ring banggitin ang tab na may pinakamabagal na mga query - ito ay napaka-maginhawa. Bukod dito, ang data sa tab na ito para sa PostgreSQL ay kasabay ng data mula sa extension pg_stat_statements - mahusay na resulta!

Not New Relic alone: ​​isang pagtingin sa Datadog at Atatus

Tab Mga Panlabas na Kahilingan ganap na magkapareho sa mga Database.

Natuklasan

Parehong ipinakita ang mga tool nang mahusay sa papel ng APM. Anuman sa kanila ay maaaring mag-alok ng kinakailangang minimum. Ang aming mga impression ay maaaring maibuod nang maikli gaya ng sumusunod:

datadog

Pros:

  • maginhawang iskedyul ng taripa (ang APM ay nagkakahalaga ng 31 USD bawat host);
  • nagtrabaho nang maayos sa Python;
  • Posibilidad ng pagsasama sa OpenTracing
  • pagsasama sa Kubernetes;
  • pagsasama sa NGINX Ingress.

Cons:

  • ang nag-iisang APM na naging sanhi ng pagiging hindi magagamit ng application dahil sa isang error sa module (predis);
  • mahinang PHP auto-instrumentation;
  • bahagyang kakaibang kahulugan ng mga serbisyo at ang kanilang layunin.

Atatus

Pros:

  • malalim na instrumento ng PHP;
  • user interface na katulad ng New Relic.

Cons:

  • ay hindi gumagana sa mas lumang mga operating system (Ubuntu 12.05, CentOS 5);
  • mahina ang auto-instrumentasyon;
  • suporta para sa dalawang wika lamang (Node.js at PHP);
  • Mabagal na interface.

Isinasaalang-alang ang presyo ng Atatus na 69 USD bawat buwan bawat server, mas gugustuhin naming gamitin ang Datadog, na mahusay na sumasama sa aming mga pangangailangan (mga web application sa K8s) at may maraming kapaki-pakinabang na tampok.

PS

Basahin din sa aming blog:

Pinagmulan: www.habr.com

Magdagdag ng komento