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
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.
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.
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:
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:
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:
TurklÄt jÅ«s varat izvÄrst katru darÄ«jumu un redzÄt, ko lietojumprogramma darÄ«ja koda izpildes laikÄ:
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:
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:
Un Datu bÄzes vaicÄjumi ā novÄrtÄt datu bÄzu vaicÄjumus, kas tika izpildÄ«ti lietojumprogrammas darbÄ«bas laikÄ:
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.
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:
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:
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:
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:
Starp citu, New Relic ir kaut kas līdzīgs:
... 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:
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!
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:
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Ä:
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:
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:
Un visinteresantÄkais ir skatÄ«t resursdatora slodzi, kurÄ tika izpildÄ«ts pieprasÄ«jums, un skatÄ«t pieprasÄ«jumu žurnÄlus.
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).
Å eit ir piemÄrs ar postgres:
BÅ«tÄ«bÄ ir viss, ko mÄs vÄlÄjÄmies:
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.
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:
Parastais kontrolieru saraksts ir pieejams cilnÄ izpÄtÄ«t:
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:
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:
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:
KopumÄ Atatus priecÄja ar detalizÄtÄm pÄdÄm - bez tipiskÄs New Relic zvanu ielÄ«mÄÅ”anas atgÄdinÄjumu blokÄ:
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.
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!
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);
Å 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.