Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

SRE/DevOps inženieru vidē nevienu nepārsteigs, ka kādu dienu uzrodas klients (vai uzraudzÄ«bas sistēma) un ziņo, ka ā€œviss ir zaudētsā€: vietne nedarbojas, maksājumi neiet cauri, dzÄ«ve brÅ«k. ... NeatkarÄ«gi no tā, cik ļoti jÅ«s vēlētos palÄ«dzēt Ŕādā situācijā, to var bÅ«t ļoti grÅ«ti izdarÄ«t bez vienkārÅ”a un saprotama rÄ«ka. Bieži vien problēma ir paslēpta paŔā lietojumprogrammas kodā; jums tā vienkārÅ”i ir jālokalizē.

Un bēdās un priekosā€¦

Tā sagadÄ«jās, ka esam sen un dziļi iemÄ«lējuÅ”i Jauno relikviju. Tas bija un paliek lielisks rÄ«ks lietojumprogrammu veiktspējas uzraudzÄ«bai, kā arÄ« ļauj instrumentēt mikropakalpojumu arhitektÅ«ru (izmantojot tā aÄ£entu) un daudz ko citu. Un viss varētu bÅ«t bijis lieliski, ja nebÅ«tu notikuÅ”as izmaiņas pakalpojuma cenu politikā: tā izmaksāt no 2013 gada pieauga 3+ reizes. Turklāt kopÅ” pagājuŔā gada izmēģinājuma konta iegÅ«Å”anai nepiecieÅ”ama komunikācija ar personÄ«go menedžeri, kas apgrÅ«tina produkta prezentÄ“Å”anu potenciālajam klientam.

Parastā situācija: Jaunā relikvija nav vajadzÄ«ga ā€œpastāvÄ«giā€, viņi to atceras tikai tajā brÄ«dÄ«, kad sākas problēmas. Bet jums joprojām ir jāmaksā regulāri (140 USD par serveri mēnesÄ«), un automātiski mērogojamā mākoņa infrastruktÅ«rā summas ir diezgan lielas. Lai gan ir opcija Pay-As-You-Go, lai iespējotu New Relic, jums bÅ«s jārestartē lietojumprogramma, kas var izraisÄ«t problemātiskās situācijas zaudÄ“Å”anu, kuras dēļ tā tika sākta. Pirms neilga laika New Relic ieviesa jaunu tarifu plānu - Essentials, - kas no pirmā acu uzmetiena izskatās kā saprātÄ«ga alternatÄ«va Professional... bet rÅ«pÄ«gāk izpētot izrādÄ«jās, ka trÅ«kst dažu svarÄ«gu funkciju (konkrēti, tam nav Galvenie darÄ«jumi, Cross Application Trasing, IzplatÄ«ta izsekoÅ”ana).

Rezultātā mēs sākām domāt par lētākas alternatÄ«vas meklÄ“Å”anu, un mÅ«su izvēle krita uz diviem pakalpojumiem: Datadog un Atatus. Kāpēc uz viņiem?

Par konkurentiem

Ä»aujiet man uzreiz teikt, ka tirgÅ« ir arÄ« citi risinājumi. Mēs pat apsvērām atvērtā pirmkoda iespējas, taču ne katram klientam ir brÄ«va jauda, ā€‹ā€‹lai mitinātu paÅ”hostētus risinājumus... - turklāt tiem bÅ«s nepiecieÅ”ama papildu apkope. Pāris, kuru izvēlējāmies, izrādÄ«jās vistuvākais mÅ«su vajadzÄ«bām:

  • iebÅ«vēts un izstrādāts atbalsts PHP aplikācijām (mÅ«su klientu steks ir ļoti dažāds, taču tas ir izteikts lÄ«deris alternatÄ«vas New Relic meklÄ“Å”anas kontekstā);
  • pieņemamas izmaksas (mazāk nekā 100 USD mēnesÄ« vienam saimniekdatoram);
  • automātiskā instrumentācija;
  • integrācija ar Kubernetes;
  • LÄ«dzÄ«ba ar New Relic saskarni ir manāms pluss (jo mÅ«su inženieri pie tā ir pieraduÅ”i).

Tāpēc sākotnējā atlases posmā mēs izslēdzām vairākus citus populārus risinājumus, jo Ä«paÅ”i:

  • Tideways, AppDynamics un Dynatrace ā€” par maksu;
  • Stackify ir bloķēts Krievijas Federācijā un parāda pārāk maz datu.

Pārējais raksts ir strukturēts tā, ka vispirms tiks Ä«si prezentēti attiecÄ«gie risinājumi, pēc tam es pastāstÄ«Å”u par mÅ«su tipisko mijiedarbÄ«bu ar New Relic un pieredzi/iespaidiem, veicot lÄ«dzÄ«gas darbÄ«bas citos servisos.

Izvēlēto konkurentu prezentācija

Ne tikai jaunā relikvija: ieskats Datadog un Atatus
uz Jauns relikts, laikam visi ir dzirdējuÅ”i? Å is pakalpojums savu attÄ«stÄ«bu sāka pirms vairāk nekā 10 gadiem, 2008. gadā. Mēs to aktÄ«vi izmantojam kopÅ” 2012. gada un nav bijuÅ”as problēmas integrēt patieŔām lielu skaitu aplikāciju PHP, Ruby un Python, kā arÄ« ir bijusi pieredze integrācijā ar C# un Go. Pakalpojuma autoriem ir risinājumi aplikāciju uzraudzÄ«bai, infrastruktÅ«rai, mikropakalpojumu infrastruktÅ«ru izsekoÅ”anai, izveidotas ērtas aplikācijas lietotāju ierÄ«cēm un daudz kas cits.

Tomēr New Relic aÄ£ents darbojas ar patentētiem protokoliem un neatbalsta OpenTracing. Uzlabotai instrumentācijai ir nepiecieÅ”ami Ä«paÅ”i rediģējumi jaunajai relikvijai. Visbeidzot, Kubernetes atbalsts joprojām ir eksperimentāls.

Ne tikai jaunā relikvija: ieskats Datadog un Atatus
Sācis savu attÄ«stÄ«bu 2010. gadā Datadogs izskatās manāmi interesantāks par New Relic tieÅ”i izmantoÅ”anas ziņā Kubernetes vidēs. Jo Ä«paÅ”i tas atbalsta integrāciju ar NGINX Ingress, žurnālu apkopoÅ”anu, statsd un OpenTracing protokoliem, kas ļauj izsekot lietotāja pieprasÄ«jumu no brīža, kad tas ir savienots lÄ«dz pabeigÅ”anai, kā arÄ« atrast Ŕī pieprasÄ«juma žurnālus (gan tÄ«mekļa servera pusē un uz patērētāja).

Lietojot Datadog, mēs saskārāmies ar to, ka tas dažreiz nepareizi izveidoja mikropakalpojumu karti, un daži tehniski trÅ«kumi. Piemēram, tas nepareizi identificēja pakalpojuma veidu (jaukt Django ar keÅ”atmiņas pakalpojumu) un izraisÄ«ja 500 kļūdas PHP lietojumprogrammā, izmantojot populāro Predis bibliotēku.

Ne tikai jaunā relikvija: ieskats Datadog un Atatus
Atatus ā€” jaunākais instruments; pakalpojums tika uzsākts 2014. Tā mārketinga budžets ir acÄ«mredzami zemāks par uzskaitÄ«tajiem konkurentiem, pieminÄ“Å”ana notiek daudz retāk. Taču pats rÄ«ks ir ļoti lÄ«dzÄ«gs New Relic ne tikai ar savām iespējām (APM, Browser monitoring u.c.), bet arÄ« pēc izskata.

BÅ«tisks trÅ«kums ir tas, ka tas atbalsta tikai Node.js un PHP. No otras puses, tas ir ieviests ievērojami labāk nekā Datadog. AtŔķirÄ«bā no pēdējās, Atatus neprasa lietojumprogrammām veikt modifikācijas vai pievienot kodam papildu etiÄ·etes.

Kā mēs strādājam ar New Relic

Tagad izdomāsim, kā mēs parasti lietojam New Relic. Pieņemsim, ka mums ir problēma, kurai nepiecieÅ”ams risinājums:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

To ir viegli redzēt grafikā smaile ā€“ Analizēsim. New Relic tÄ«mekļa lietojumprogrammai uzreiz tiek atlasÄ«tas tÄ«mekļa transakcijas, visi komponenti ir norādÄ«ti veiktspējas grafikā, ir kļūdu lÄ«meņa, pieprasÄ«juma ātruma paneļi... Pats galvenais ir tas, ka tieÅ”i no Å”iem paneļiem var pārvietoties starp dažādiem lietojumprogrammas daļas (piemēram, noklikŔķinot uz MySQL, tiks atvērta datu bāzes sadaļa).

Tā kā aplÅ«kotajā piemērā mēs redzam aktivitātes pieaugumu PHP, noklikŔķiniet uz Ŕīs diagrammas un automātiski pārejiet uz DarÄ«jumi:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

DarÄ«jumu saraksts, kas bÅ«tÄ«bā ir MVC modeļa kontrolieri, jau ir sakārtots pēc Visvairāk laika, kas ir ļoti ērti: mēs uzreiz redzam, ko dara lietojumprogramma. Å eit ir piemēri gariem vaicājumiem, kurus New Relic automātiski apkopo. Pārslēdzot kārtoÅ”anu, ir viegli atrast:

  • visvairāk ielādēts lietojumprogrammu kontrolleris;
  • visbiežāk pieprasÄ«tais kontrolieris;
  • lēnākais no kontrolieriem.

Turklāt jūs varat izvērst katru darījumu un redzēt, ko lietojumprogramma darīja koda izpildes laikā:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Visbeidzot, lietojumprogramma saglabā garu pieprasÄ«jumu pēdu piemērus (tos, kas aizņem vairāk nekā 2 sekundes). Å eit ir panelis ilgstoÅ”am darÄ«jumam:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Var redzēt, ka divas metodes aizņem daudz laika, un tajā paŔā laikā tiek parādÄ«ts laiks, kad pieprasÄ«jums tika izpildÄ«ts, tā URI un domēns. Ä»oti bieži tas palÄ«dz atrast pieprasÄ«jumu žurnālos. Ejot uz IzsekoÅ”anas detaļas, varat redzēt, no kurienes tiek izsauktas Ŕīs metodes:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Un Datu bāzes vaicājumi ā€” novērtēt datu bāzu vaicājumus, kas tika izpildÄ«ti lietojumprogrammas darbÄ«bas laikā:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Izmantojot Ŕīs zināŔanas, mēs varam novērtēt, kāpēc lietojumprogramma palēninās, un sadarboties ar izstrādātāju, lai izstrādātu stratēģiju problēmas risināŔanai. Realitātē New Relic ne vienmēr sniedz skaidru priekÅ”statu, bet palÄ«dz izvēlēties izmeklÄ“Å”anas vektoru:

  • ilgi PDO::Construct noveda mÅ«s pie dÄ«vainas pgpoll darbÄ«bas;
  • nestabilitāte laika gaitā Memcache::Get ierosināja, ka virtuālā maŔīna ir konfigurēta nepareizi;
  • aizdomÄ«gi palielināts veidņu apstrādes laiks noveda pie ligzdotas cilpas, kas pārbauda 500 iemiesojumu klātbÅ«tni objekta krātuvē;
  • uttā€¦

Gadās arÄ« tā, ka koda izpildes vietā galvenajā ekrānā izaug kaut kas saistÄ«ts ar ārējo datu glabāŔanu ā€” un nav svarÄ«gi, kas tas bÅ«s: Redis vai PostgreSQL ā€” tie visi ir paslēpti cilnē. Datubāzes.

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Varat atlasÄ«t konkrētu izpētes bāzi un kārtot vaicājumus ā€” lÄ«dzÄ«gi kā tas tiek darÄ«ts sadaļā DarÄ«jumi. Un, dodoties uz pieprasÄ«juma cilni, varat redzēt, cik reižu Å”is pieprasÄ«jums tiek veikts katrā no lietojumprogrammu kontrolleriem, kā arÄ« novērtēt, cik bieži tas tiek izsaukts. Tas ir ļoti ērti:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Cilnē ir lÄ«dzÄ«gi dati Ārējie pakalpojumi, kas slēpj pieprasÄ«jumus ārējiem HTTP pakalpojumiem, piemēram, piekļuvi objektu krātuvei, notikumu nosÅ«tÄ«Å”anu sargam vai tamlÄ«dzÄ«gi. Cilne pēc satura ir pilnÄ«gi lÄ«dzÄ«ga datu bāzēm:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Konkurenti: iespējas un iespaidi

Tagad interesantākais ir salÄ«dzināt New Relic iespējas ar konkurentu piedāvāto. Diemžēl mēs nevarējām pārbaudÄ«t visus trÄ«s rÄ«kus vienā vienas lietojumprogrammas versijā, kas darbojas ražoÅ”anā. Tomēr mēs centāmies salÄ«dzināt situācijas/konfigurācijas, kas bija pēc iespējas identiskas.

1. Datu suns

Datadog mūs sveic ar paneli ar pakalpojumu sienu:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Tas mēģina sadalÄ«t lietojumprogrammas komponentos/mikropakalpojumos, tāpēc Django lietojumprogrammas piemērā mēs redzēsim 2 savienojumus ar PostgreSQL (defaultdb Šø postgres), kā arÄ« Selerijas, Redis. Lai strādātu ar Datadog, jums ir jābÅ«t minimālām zināŔanām par MVC principiem: jums ir jāsaprot, no kurienes parasti nāk lietotāju pieprasÄ«jumi. Tas parasti palÄ«dz pakalpojumu karte:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Starp citu, New Relic ir kaut kas līdzīgs:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

... un to karte, manuprāt, ir padarÄ«ta vienkārŔāka un skaidrāka: tajā nav attēlotas vienas aplikācijas sastāvdaļas (kas to padarÄ«tu pārāk detalizētu, kā tas ir Datadog gadÄ«jumā), bet gan tikai konkrēti servisi vai mikropakalpojumi.

Atgriezīsimies pie Datadog: no pakalpojumu kartes varam redzēt, ka lietotāju pieprasījumi nāk uz Django. Dosimies uz Django servisu un beidzot redzēsim, ko gaidījām:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Diemžēl Å”eit pēc noklusējuma nav grafika TÄ«mekļa darÄ«jumu laiks, lÄ«dzÄ«gi tam, ko mēs redzam galvenajā New Relic panelÄ«. Tomēr to var konfigurēt grafika vietā % no pavadÄ«tā laika. Pietiek ar to pārslēgt Vidējais pieprasÄ«juma ilgums pēc veida... un tagad uz mums skatās pazÄ«stamais grafiks!

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Kāpēc Datadog izvēlējās citu diagrammu, mums ir noslēpums. Vēl viens nomākts ir tas, ka sistēma neatceras lietotāja izvēli (atŔķirÄ«bā no abiem konkurentiem), un tāpēc vienÄ«gais risinājums ir izveidot pielāgotus paneļus.

Bet mani iepriecināja iespēja programmā Datadog pārslēgties no Å”iem grafikiem uz saistÄ«to serveru metriku, lasÄ«t žurnālus un novērtēt tÄ«mekļa servera apstrādātāju (Gunicorn) slodzi. Viss gandrÄ«z tāpat kā Jaunajā relikvijā... un pat nedaudz vairāk (baļķi)!

Zem diagrammām ir darījumi, kas ir pilnībā līdzīgi New Relic:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Programmā Datadog transakcijas tiek izsauktas resursus. Kontrolierus var kārtot pēc pieprasījumu skaita, vidējā atbildes laika un maksimālā laika, kas pavadīts atlasītajā laika periodā.

Varat paplaÅ”ināt resursu un redzēt visu, ko jau esam novērojuÅ”i Jaunajā relikvijā:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Ir gan statistika par resursiem, gan vispārināts iekŔējo zvanu saraksts, gan pieprasÄ«jumu piemēri, kurus var kārtot pēc atbildes koda... Starp citu, mÅ«su inženieriem Ŕī ŔķiroÅ”ana ļoti patika.

Jebkuru Datadog resursu piemēru var atvērt un izpētīt:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Tiek parādīti pieprasījuma parametri, kopsavilkuma diagramma par katru komponentu pavadīto laiku un ūdenskrituma diagramma, kas parāda zvanu secību. Varat arī pārslēgties uz ūdenskrituma diagrammas koka skatu:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Un visinteresantākais ir skatīt resursdatora slodzi, kurā tika izpildīts pieprasījums, un skatīt pieprasījumu žurnālus.

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Lieliska integrācija!

Jums var rasties jautājums, kur atrodas cilnes Datubāzes Šø Ārējie pakalpojumi, kā Jaunajā relikvijā. Å eit tādu nav: tā kā Datadog sadala lietojumprogrammu komponentos, tiks ņemts vērā PostgreSQL atseviŔķu pakalpojumu, un ārējo pakalpojumu vietā ir vērts to meklēt aws.storage (tas bÅ«s lÄ«dzÄ«gi visiem citiem ārējiem pakalpojumiem, kuriem lietojumprogramma var piekļūt).

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Šeit ir piemērs ar postgres:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Būtībā ir viss, ko mēs vēlējāmies:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Varat redzēt, no kura ā€œpakalpojumaā€ ir saņemts pieprasÄ«jums.

NebÅ«tu lieki atgādināt, ka Datadog lieliski integrējas ar NGINX Ingress un ļauj veikt pilnÄ«gu izsekoÅ”anu no brīža, kad klasterÄ« tiek saņemts pieprasÄ«jums, kā arÄ« ļauj saņemt statsd metriku, apkopot žurnālus un resursdatora metriku. .

Milzīgs Datadog pluss ir tā cena attīstās no infrastruktūras monitoringa, APM, Log Management un Synthetics testa, t.i. Jūs varat elastīgi izvēlēties savu plānu.

2.Atatus

Atatus komanda apgalvo, ka viņu pakalpojums ir "tāds pats kā New Relic, bet labāks". PaskatÄ«simies, vai tas tā tieŔām ir.

Galvenais panelis izskatās līdzīgi, taču nebija iespējams noteikt lietojumprogrammā izmantoto Redis un memcached.

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

APM pēc noklusējuma atlasa visus darÄ«jumus, lai gan parasti ir nepiecieÅ”ami tikai tÄ«mekļa darÄ«jumi. Tāpat kā Datadog, no galvenā paneļa nav iespējams pārvietoties uz vēlamo pakalpojumu. Turklāt darÄ«jumi tiek uzskaitÄ«ti pēc kļūdām, kas APM neŔķiet Ä«paÅ”i loÄ£iski.

Atatus darÄ«jumos viss ir maksimāli lÄ«dzÄ«gs New Relic. NegatÄ«vā puse ir tāda, ka katra kontroliera dinamika nav uzreiz redzama. Tas jāmeklē kontroliera tabulā, Ŕķirojot pēc Visvairāk patērētais laiks:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Parastais kontrolieru saraksts ir pieejams cilnē izpētīt:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Savā ziņā Ŕī tabula atgādina Datadog, un man tā patÄ«k labāk nekā lÄ«dzÄ«gā New Relic.

Varat izvērst katru darījumu un redzēt, ko lietojumprogramma darīja:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Panelis arÄ« vairāk atgādina Datadog: ir vairāki pieprasÄ«jumi, vispārējs zvanu attēls. AugŔējā panelÄ« ir kļūdu cilne HTTP kļūmes un lēnu vaicājumu piemēri Sesijas pēdas:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Ja dodaties uz darÄ«jumu, varat redzēt izsekoÅ”anas piemēru, iegÅ«t datu bāzē esoÅ”o pieprasÄ«jumu sarakstu un apskatÄ«t pieprasÄ«jumu galvenes. Viss ir lÄ«dzÄ«gs New Relic:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Kopumā Atatus priecēja ar detalizētām pēdām - bez tipiskās New Relic zvanu ielÄ«mÄ“Å”anas atgādinājumu blokā:

Ne tikai jaunā relikvija: ieskats Datadog un Atatus
Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Tomēr tam trÅ«kst filtra, kas (tāpat kā New Relic) izslēgtu Ä«paÅ”i ātrus pieprasÄ«jumus (<5 ms). No otras puses, man patika gala darÄ«juma atbildes (veiksmes vai kļūdas) attēlojums.

Panelis Datubāzes palÄ«dzēs izpētÄ«t pieprasÄ«jumus ārējām datu bāzēm, ko lietojumprogramma veic. AtgādināŔu, ka Atatus atrada tikai PostgreSQL un MySQL, lai gan projektā ir iesaistÄ«ti arÄ« Redis un memcached.

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

PieprasÄ«jumi tiek kārtoti pēc parastajiem kritērijiem: atbildes biežums, vidējais atbildes laiks utt. Vēlos pieminēt arÄ« cilni ar lēnākajiem vaicājumiem ā€” tas ir ļoti ērti. Turklāt dati Å”ajā PostgreSQL cilnē sakrita ar datiem no paplaÅ”inājuma pg_stat_statements - lielisks rezultāts!

Ne tikai jaunā relikvija: ieskats Datadog un Atatus

Tab Ārējie pieprasījumi pilnīgi identiski datu bāzēm.

Atzinumi

Abi piedāvātie rÄ«ki labi darbojās APM lomā. JebkurÅ” no viņiem var piedāvāt nepiecieÅ”amo minimumu. MÅ«su iespaidus var Ä«sumā apkopot Ŕādi:

Datadogs

Plusi:

  • ērts tarifu grafiks (APM maksā 31 USD par saimnieku);
  • labi strādāja ar Python;
  • Iespēja integrēt ar OpenTracing
  • integrācija ar Kubernetes;
  • integrācija ar NGINX Ingress.

MÄ«nusi:

  • vienÄ«gais APM, kura dēļ lietojumprogramma kļuva nepieejama moduļa kļūdas (predis) dēļ;
  • vāja PHP automātiskā instrumentācija;
  • daļēji dÄ«vaina pakalpojumu definÄ«cija un to mērÄ·is.

Atatus

Plusi:

  • dziļa PHP instrumentācija;
  • lietotāja interfeiss lÄ«dzÄ«gs New Relic.

MÄ«nusi:

  • nedarbojas vecākām operētājsistēmām (Ubuntu 12.05, CentOS 5);
  • vāja auto-instrumentācija;
  • atbalsts tikai divām valodām (Node.js un PHP);
  • Lēns interfeiss.

Ņemot vērā Atatus cenu 69 USD mēnesī par serveri, mēs labprātāk izmantotu Datadog, kas labi integrējas mūsu vajadzībām (tīmekļa lietojumprogrammas K8s) un kam ir daudz noderīgu funkciju.

PS

Lasi arī mūsu emuārā:

Avots: www.habr.com

Pievieno komentāru