KopÅ” 2008. gada mÅ«su uzÅÄmums galvenokÄrt nodarbojas ar infrastruktÅ«ras pÄrvaldÄ«bu un diennakts tehnisko atbalstu tÄ«mekļa projektiem: mums ir vairÄk nekÄ 400 klientu, kas ir aptuveni 15% no Krievijas e-komercijas. AttiecÄ«gi tiek atbalstÄ«ta ļoti daudzveidÄ«ga arhitektÅ«ra. Ja kaut kas nokrÄ«t, mums tas ir jÄnovÄrÅ” 15 minÅ«Å”u laikÄ. Bet, lai saprastu, ka ir noticis negadÄ«jums, ir jÄuzrauga projekts un jÄreaÄ£Ä uz incidentiem. KÄ to izdarÄ«t?
Uzskatu, ka ir problÄmas ar pareizas uzraudzÄ«bas sistÄmas organizÄÅ”anu. Ja nebÅ«tu bijuÅ”as problÄmas, tad mana runa sastÄvÄtu no vienas tÄzes: "LÅ«dzu, instalÄjiet Prometheus + Grafana un spraudÅus 1, 2, 3." DiemžÄl tÄ vairs nedarbojas. Un galvenÄ problÄma ir tÄ, ka programmatÅ«ras komponentu ziÅÄ visi turpina ticÄt kaut kam, kas pastÄvÄja 2008. gadÄ.
RunÄjot par uzraudzÄ«bas sistÄmas organizÄciju, es atļauÅ”os apgalvot, ka... projekti ar kompetentu uzraudzÄ«bu neeksistÄ. Un situÄcija ir tik slikta, ka, ja kaut kas nokrÄ«t, pastÄv risks, ka tas paliks nepamanÄ«ts - galu galÄ visi ir pÄrliecinÄti, ka āviss tiek uzraudzÄ«tsā.
VarbÅ«t viss tiek uzraudzÄ«ts. Bet kÄ?
MÄs visi esam saskÄruÅ”ies ar Å”Ädu stÄstu: konkrÄts devops, noteikts administrators strÄdÄ, pie viÅiem pienÄk izstrÄdes komanda un saka - "esam atbrÄ«voti, tagad uzraugiet." UzraudzÄ«t ko? KÄ tas strÄdÄ?
LABI. MÄs uzraugÄm vecmodÄ«gi. Un tas jau mainÄs, un izrÄdÄs, ka jÅ«s uzraudzÄ«jÄt pakalpojumu A, kas kļuva par pakalpojumu B, kas mijiedarbojas ar pakalpojumu C. Bet izstrÄdes komanda jums saka: "InstalÄjiet programmatÅ«ru, tai jÄuzrauga viss!"
Kas tad ir mainījies? - Viss ir mainījies!
2008. gads Viss ir kÄrtÄ«bÄ
Ir pÄris izstrÄdÄtÄju, viens serveris, viens datu bÄzes serveris. Tas viss iet no Å”ejienes. Mums ir neliela informÄcija, mÄs uzstÄdÄm zabbix, Nagios, kaktusus. Un tad mÄs iestatÄm skaidrus brÄ«dinÄjumus par centrÄlo procesoru, par diska darbÄ«bu un vietu diskÄ. MÄs arÄ« veicam dažas manuÄlas pÄrbaudes, lai pÄrliecinÄtos, ka vietne reaÄ£Ä un pasÅ«tÄ«jumi nonÄk datu bÄzÄ. Un tas arÄ« viss ā mÄs esam vairÄk vai mazÄk aizsargÄti.
Ja salÄ«dzina darba apjomu, ko administrators toreiz veica, lai nodroÅ”inÄtu monitoringu, tad 98% no tÄ bija automÄtiski: personai, kas veic monitoringu, ir jÄsaprot, kÄ instalÄt Zabbix, kÄ to konfigurÄt un konfigurÄt brÄ«dinÄjumus. Un 2% - par ÄrÄjÄm pÄrbaudÄm: vai vietne atbild un veic pieprasÄ«jumu datu bÄzei, ka ir ienÄkuÅ”i jauni pasÅ«tÄ«jumi.
2010. gads Slodze pieaug
MÄs sÄkam mÄrogot tÄ«mekli, pievienojot meklÄtÄjprogrammu. MÄs vÄlamies pÄrliecinÄties, ka preÄu katalogÄ ir visas preces. Un Ŕī produktu meklÄÅ”ana darbojas. Ka datu bÄze darbojas, ka tiek veikti pasÅ«tÄ«jumi, ka vietne reaÄ£Ä ÄrÄji un atbild no diviem serveriem un lietotÄjs netiek izmests no vietnes, kamÄr tÄ tiek pÄrbalansÄta uz citu serveri utt. Ir vairÄk entÄ«tiju.
TurklÄt ar infrastruktÅ«ru saistÄ«tÄ vienÄ«ba joprojÄm ir lielÄkÄ pÄrvaldnieka galvÄ. ManÄ galvÄ joprojÄm ir doma, ka tas, kurÅ” veic monitoringu, ir tas, kurÅ” uzstÄdÄ«s zabbix un varÄs to konfigurÄt.
Bet tajÄ paÅ”Ä laikÄ parÄdÄs darbs pie ÄrÄjo pÄrbaužu veikÅ”anas, meklÄÅ”anas indeksÄtÄja vaicÄjumu skriptu kopas izveidoÅ”anas, skriptu kopas, lai pÄrbaudÄ«tu, vai meklÄÅ”ana mainÄs indeksÄÅ”anas procesa laikÄ, skriptu kopa, kas pÄrbauda, āāvai preces tiek pÄrsÅ«tÄ«tas uz piegÄdes pakalpojums utt. un tÄ tÄlÄk.
PiezÄ«me: es uzrakstÄ«ju āskriptu kopuā 3 reizes. Tas ir, par uzraudzÄ«bu atbildÄ«gÄ persona vairs nav tÄ, kas vienkÄrÅ”i instalÄ zabbix. Tas ir cilvÄks, kurÅ” sÄk kodÄt. TaÄu komandas prÄtos nekas vÄl nav mainÄ«jies.
Bet pasaule mainÄs, kļūst arvien sarežģītÄka. Tiek pievienots virtualizÄcijas slÄnis un vairÄkas jaunas sistÄmas. ViÅi sÄk mijiedarboties viens ar otru. KurÅ” teica: "smaržo pÄc mikropakalpojumiem?" Bet katrs pakalpojums joprojÄm izskatÄs kÄ vietne atseviŔķi. MÄs varam tajÄ vÄrsties un saprast, ka tas sniedz nepiecieÅ”amo informÄciju un darbojas pats no sevis. Un, ja jÅ«s esat administrators, kas pastÄvÄ«gi iesaistÄs projektÄ, kas attÄ«stÄs 5-7-10 gadus, Ŕīs zinÄÅ”anas uzkrÄjas: parÄdÄs jauns lÄ«menis - jÅ«s to sapratÄt, parÄdÄs cits lÄ«menis - jÅ«s to sapratÄt...
Bet reti kurÅ” pavada projektu 10 gadus.
Monitoringman CV
PieÅemsim, ka esat nonÄcis pie jauna starta, kas nekavÄjoties nolÄ«ga 20 izstrÄdÄtÄjus, uzrakstÄ«ja 15 mikropakalpojumus un esat administrators, kuram saka: āBuild CI/CD. LÅ«dzu." JÅ«s esat izveidojis CI/CD un pÄkÅ”Åi dzirdat: "Mums ir grÅ«ti strÄdÄt ar ražoÅ”anu "kubÄ", nesaprotot, kÄ lietojumprogramma tajÄ darbosies. Izveidojiet mums smilÅ”u kasti tajÄ paÅ”Ä "kubÄ".
Å ajÄ kubÄ jÅ«s izveidojat smilÅ”u kasti. ViÅi uzreiz saka: "MÄs vÄlamies posmu datu bÄzi, kas tiek atjauninÄta katru dienu no ražoÅ”anas, lai mÄs saprastu, ka tÄ darbojas datu bÄzÄ, bet tajÄ paÅ”Ä laikÄ nesabojÄtu ražoÅ”anas datu bÄzi."
JÅ«s dzÄ«vojat tajÄ visÄ. LÄ«dz izlaiÅ”anai atlikuÅ”as 2 nedÄļas, viÅi saka: āTagad uzraudzÄ«sim visu Å”o...ā Tas ir. uzraudzÄ«t klastera infrastruktÅ«ru, uzraudzÄ«t mikropakalpojumu arhitektÅ«ru, pÄrraudzÄ«t darbu ar ÄrÄjiem pakalpojumiem...
Un kolÄÄ£i Åem ÄrÄ no galvas ierasto shÄmu un saka: āNu, te viss skaidrs! InstalÄjiet programmu, kas to visu uzraudzÄ«s. JÄ, jÄ: Prometheus + Grafana + spraudÅi.
Un viÅi piebilst: "Jums ir divas nedÄļas, pÄrliecinieties, ka viss ir droÅ”s."
Daudzos projektos, ko mÄs redzam, uzraudzÄ«bai tiek atvÄlÄts viens cilvÄks. IedomÄjieties, ka mÄs vÄlamies nolÄ«gt cilvÄku, kas veiktu monitoringu uz 2 nedÄļÄm, un mÄs uzrakstÄm viÅam CV. KÄdÄm prasmÄm vajadzÄtu bÅ«t Å”im cilvÄkam, Åemot vÄrÄ visu, ko mÄs lÄ«dz Å”im esam teikuÅ”i?
- ViÅam jÄsaprot dzelzs infrastruktÅ«ras uzraudzÄ«ba un darbÄ«bas specifika.
- ViÅam ir jÄsaprot Kubernetes uzraudzÄ«bas specifika (un visi vÄlas iet uz "kubu", jo jÅ«s varat abstrahÄties no visa, paslÄpties, jo ar pÄrÄjo tiks galÄ administrators) - sevi, tÄs infrastruktÅ«ru un saprast, kÄ uzraudzÄ«t lietojumprogrammas. iekÅ”Ä.
- ViÅam jÄsaprot, ka dienesti savÄ starpÄ sazinÄs Ä«paÅ”os veidos, un jÄzina pakalpojumu savstarpÄjÄs mijiedarbÄ«bas specifika. PilnÄ«gi iespÄjams redzÄt projektu, kur daži servisi sazinÄs sinhroni, jo savÄdÄk nevar. PiemÄram, aizmugursistÄma, izmantojot REST, caur gRPC dodas uz kataloga pakalpojumu, saÅem produktu sarakstu un atgriež to atpakaļ. JÅ«s nevarat gaidÄ«t Å”eit. Un ar citiem pakalpojumiem tas darbojas asinhroni. PÄrsÅ«tÄ«t pasÅ«tÄ«jumu piegÄdes dienestam, nosÅ«tÄ«t vÄstuli utt.
Tu laikam jau esi nopeldÄjies no Ŕī visa? Un administrators, kuram tas jÄuzrauga, kļuva vÄl vairÄk apmulsis. - ViÅam jÄprot pareizi plÄnot un plÄnot ā jo darbu kļūst arvien vairÄk.
- TÄpÄc viÅam ir jÄizveido stratÄÄ£ija no izveidotÄ pakalpojuma, lai saprastu, kÄ to Ä«paÅ”i uzraudzÄ«t. ViÅam nepiecieÅ”ama izpratne par projekta arhitektÅ«ru un tÄ attÄ«stÄ«bu + izpratne par izstrÄdÄ izmantotajÄm tehnoloÄ£ijÄm.
AtcerÄsimies pilnÄ«gi normÄlu gadÄ«jumu: daži pakalpojumi ir PHP, daži pakalpojumi ir Go, daži pakalpojumi ir JS. ViÅi kaut kÄ strÄdÄ viens ar otru. No Å”ejienes nÄk termins āmikropakalpojumsā: ir tik daudz atseviŔķu sistÄmu, ka izstrÄdÄtÄji nevar saprast projektu kopumÄ. Viena daļa no komandas raksta pakalpojumus JS, kas darbojas paÅ”i un nezina, kÄ darbojas pÄrÄjÄ sistÄma. Otra daļa raksta pakalpojumus Python un netraucÄ citu pakalpojumu darbÄ«bu; tie ir izolÄti savÄ apgabalÄ. TreÅ”ais ir pakalpojumu rakstÄ«Å”ana PHP vai kaut ko citu.
Visi Å”ie 20 cilvÄki ir sadalÄ«ti 15 pakalpojumos, un ir tikai viens administrators, kuram tas viss ir jÄsaprot. Stop! mÄs vienkÄrÅ”i sadalÄ«jÄm sistÄmu 15 mikropakalpojumos, jo 20 cilvÄki nevar saprast visu sistÄmu.
Bet tas kaut kÄ jÄuzrauga...
KÄds ir rezultÄts? RezultÄtÄ ir viens cilvÄks, kurÅ” izdomÄ visu, ko nevar saprast visa izstrÄdÄtÄju komanda, un tajÄ paÅ”Ä laikÄ viÅam ir arÄ« jÄzina un jÄspÄj izdarÄ«t tas, ko mÄs iepriekÅ” norÄdÄ«jÄm - aparatÅ«ras infrastruktÅ«ra, Kubernetes infrastruktÅ«ra utt.
Ko lai saka... HjÅ«stona, mums ir problÄmas.
Mūsdienu programmatūras projekta uzraudzība ir programmatūras projekts pats par sevi
No maldÄ«giem uzskatiem, ka uzraudzÄ«ba ir programmatÅ«ra, mÄs veidojam ticÄ«bu brÄ«numiem. Bet brÄ«numi, diemžÄl, nenotiek. JÅ«s nevarat instalÄt zabbix un gaidÄ«t, ka viss darbosies. Nav jÄgas instalÄt GrafÄnu un cerÄt, ka viss bÅ«s ok. LielÄkÄ daļa laika tiks veltÄ«ta pakalpojumu darbÄ«bas un to savstarpÄjÄs mijiedarbÄ«bas pÄrbaužu organizÄÅ”anai, pÄrbaudot, kÄ darbojas ÄrÄjÄs sistÄmas. PatiesÄ«bÄ 90% laika tiks veltÄ«ts nevis skriptu rakstÄ«Å”anai, bet gan programmatÅ«ras izstrÄdei. Un tas bÅ«tu jÄrisina komandai, kas saprot projekta darbu.
Ja Å”ajÄ situÄcijÄ viens cilvÄks tiek iemests uzraudzÄ«bÄ, tad notiks katastrofa. Kas arÄ« notiek visur.
PiemÄram, ir vairÄki pakalpojumi, kas savÄ starpÄ sazinÄs, izmantojot Kafka. PasÅ«tÄ«jums atnÄca, nosÅ«tÄ«jÄm Kafkai ziÅu par pasÅ«tÄ«jumu. Ir pakalpojums, kas noklausÄs informÄciju par pasÅ«tÄ«jumu un nosÅ«ta preces. Ir serviss, kas noklausÄs informÄciju par pasÅ«tÄ«jumu un nosÅ«ta lietotÄjam vÄstuli. Un tad parÄdÄs vÄl daudz pakalpojumu, un mÄs sÄkam apjukt.
Un, ja jÅ«s to nododat arÄ« administratoram un izstrÄdÄtÄjiem posmÄ, kad lÄ«dz izlaiÅ”anai ir atlicis Ä«ss laiks, personai bÅ«s jÄsaprot viss protokols. Tie. Å Äda mÄroga projekts aizÅem ievÄrojamu laiku, un tas ir jÄÅem vÄrÄ sistÄmas izstrÄdÄ.
TaÄu ļoti bieži, it Ä«paÅ”i jaunuzÅÄmumos, redzam, kÄ uzraudzÄ«ba tiek atlikta uz vÄlÄku laiku. āTagad mÄs izveidosim Proof of Concept, mÄs ar to startÄsim, ļaujiet tam nokrist - mÄs esam gatavi upurÄties. Un tad mÄs to visu uzraudzÄ«sim.ā Kad (vai ja) projekts sÄk pelnÄ«t naudu, uzÅÄmums vÄlas pievienot vÄl vairÄk funkciju - jo tas ir sÄcis darboties, tÄpÄc tas ir jÄattÄ«sta tÄlÄk! Un jÅ«s esat tajÄ brÄ«dÄ«, kad vispirms ir jÄuzrauga viss iepriekÅ”Äjais, kas aizÅem nevis 1% laika, bet daudz vairÄk. Un, starp citu, uzraudzÄ«bai bÅ«s nepiecieÅ”ami izstrÄdÄtÄji, un viÅiem ir vieglÄk ļaut strÄdÄt pie jaunÄm funkcijÄm. RezultÄtÄ tiek rakstÄ«tas jaunas funkcijas, viss tiek sabojÄts, un jÅ«s nonÄkat bezgalÄ«gÄ strupceļÄ.
TÄtad, kÄ pÄrraudzÄ«t projektu, sÄkot no sÄkuma, un ko darÄ«t, ja saÅemat projektu, kas ir jÄuzrauga, bet nezinÄt, ar ko sÄkt?
PirmkÄrt, jums ir jÄplÄno.
Liriska atkÄpe: ļoti bieži tÄs sÄkas ar infrastruktÅ«ras uzraudzÄ«bu. PiemÄram, mums ir Kubernetes. SÄksim ar Prometheus instalÄÅ”anu ar Grafana, instalÄjot spraudÅus ākubaā uzraudzÄ«bai. Ne tikai izstrÄdÄtÄjiem, bet arÄ« administratoriem ir neveiksmÄ«ga prakse: "MÄs instalÄsim Å”o spraudni, bet spraudnis, iespÄjams, zina, kÄ to izdarÄ«t." CilvÄkiem patÄ«k sÄkt ar vienkÄrÅ”u un saprotamu, nevis ar svarÄ«gÄm darbÄ«bÄm. Un infrastruktÅ«ras uzraudzÄ«ba ir vienkÄrÅ”a.
Vispirms izlemiet, ko un kÄ vÄlaties pÄrraudzÄ«t, un pÄc tam atlasiet rÄ«ku, jo citi cilvÄki nevar domÄt jÅ«su vietÄ. Un vai viÅiem vajadzÄtu? Citi cilvÄki domÄja par universÄlu sistÄmu vai vispÄr nedomÄja, kad tika rakstÄ«ts Å”is spraudnis. Un tas, ka Å”im spraudnim ir 5 tÅ«kstoÅ”i lietotÄju, nenozÄ«mÄ, ka tas ir noderÄ«gs. IespÄjams, jÅ«s kļūsiet par 5001. vienkÄrÅ”i tÄpÄc, ka tur jau iepriekÅ” bija 5000 cilvÄku.
Ja sÄkat uzraudzÄ«t infrastruktÅ«ru un jÅ«su lietojumprogrammas aizmugure pÄrstÄj reaÄ£Ät, visi lietotÄji zaudÄs savienojumu ar mobilo lietojumprogrammu. ParÄdÄ«sies kļūda. ViÅi nÄks pie jums un teiks: "AplikÄcija nedarbojas, ko jÅ«s Å”eit darÄt?" - "MÄs uzraugÄm." ā "KÄ jÅ«s uzraugÄt, ja neredzat, ka lietojumprogramma nedarbojas?!"
- Es uzskatu, ka jums ir jÄsÄk uzraudzÄ«ba tieÅ”i no lietotÄja ieejas punkta. Ja lietotÄjs neredz, ka lietojumprogramma darbojas, tas ir, tÄ ir kļūme. Un uzraudzÄ«bas sistÄmai par to vispirms vajadzÄtu brÄ«dinÄt.
- Un tikai tad mÄs varam uzraudzÄ«t infrastruktÅ«ru. Vai arÄ« dariet to paralÄli. Ar infrastruktÅ«ru tas ir vienkÄrÅ”Äk ā Å”eit mÄs beidzot varam vienkÄrÅ”i instalÄt zabbix.
- Un tagad jums ir jÄiet pie lietojumprogrammas saknÄm, lai saprastu, kur lietas nedarbojas.
Mana galvenÄ doma ir tÄda, ka uzraudzÄ«bai jÄnotiek paralÄli izstrÄdes procesam. Ja novÄrsÄ«sit uzraudzÄ«bas komandas uzmanÄ«bu uz citiem uzdevumiem (CI/CD izveide, smilÅ”kastes izveide, infrastruktÅ«ras reorganizÄcija), uzraudzÄ«ba sÄks aizkavÄties, un jÅ«s, iespÄjams, nekad nepanÄksit attÄ«stÄ«bu (vai agrÄk vai vÄlÄk jums tas bÅ«s jÄpÄrtrauc).
Viss pÄc lÄ«meÅiem
TÄ es redzu uzraudzÄ«bas sistÄmas organizÄciju.
1) Lietojuma līmenis:
- lietojumprogrammu biznesa loģikas uzraudzība;
- pakalpojumu veselÄ«bas rÄdÄ«tÄju uzraudzÄ«ba;
- integrÄcijas uzraudzÄ«ba.
2) Infrastruktūras līmenis:
- orÄ·estrÄcijas lÄ«meÅa uzraudzÄ«ba;
- sistÄmas programmatÅ«ras uzraudzÄ«ba;
- dzelzs lÄ«meÅa uzraudzÄ«ba.
3) Atkal lietojuma lÄ«menis ā bet kÄ inženierijas produkts:
- lietojumprogrammu žurnÄlu apkopoÅ”ana un uzraudzÄ«ba;
- APM;
- izsekoŔana.
4) BrÄ«dinÄjums:
- brÄ«dinÄÅ”anas sistÄmas organizÄÅ”ana;
- dežūras sistÄmas organizÄÅ”ana;
- āzinÄÅ”anu bÄzesā un darbplÅ«smas organizÄÅ”ana incidentu apstrÄdei.
Tas ir svarÄ«gi: pie brÄ«dinÄjuma nonÄkam nevis pÄc, bet uzreiz! Nav nepiecieÅ”ams uzsÄkt uzraudzÄ«bu un ākaut kÄ vÄlÄkā noskaidrot, kurÅ” saÅems brÄ«dinÄjumus. Galu galÄ, kÄds ir uzraudzÄ«bas uzdevums: saprast, kur sistÄmÄ kaut kas nedarbojas, un informÄt par to pareizajiem cilvÄkiem. Ja atstÄsit to lÄ«dz beigÄm, tad pareizie cilvÄki uzzinÄs, ka kaut kas nav kÄrtÄ«bÄ, tikai nosaucot āmums nekas nelÄ«dzā.
Lietojumprogrammu slÄnis ā biznesa loÄ£ikas uzraudzÄ«ba
Å eit mÄs runÄjam par paÅ”a fakta pÄrbaudi, vai lietojumprogramma darbojas lietotÄja labÄ.
Å is lÄ«menis jÄveic izstrÄdes posmÄ. PiemÄram, mums ir nosacÄ«ts Prometheus: tas iet uz serveri, kas veic pÄrbaudes, izvelk galapunktu, bet galapunkts pÄrbauda API.
Kad bieži tiek lÅ«gts pÄrraudzÄ«t sÄkumlapu, lai pÄrliecinÄtos, ka vietne darbojas, programmÄtÄji dod rokturi, kuru var pavilkt ikreiz, kad nepiecieÅ”ams, lai pÄrliecinÄtos, ka API darbojas. Un programmÄtÄji Å”obrÄ«d joprojÄm Åem un raksta /api/test/helloworld
VienÄ«gais veids, kÄ pÄrliecinÄties, ka viss darbojas? - NÄ!
- Å Ädu pÄrbaužu izveide bÅ«tÄ«bÄ ir izstrÄdÄtÄju uzdevums. VienÄ«bas testi jÄraksta programmÄtÄjiem, kuri raksta kodu. TÄ kÄ, ja jÅ«s to noplÅ«dÄ«sit administratoram: "Draugs, Å”eit ir API protokolu saraksts visÄm 25 funkcijÄm, lÅ«dzu, uzraugiet visu!" - nekas neizdosies.
- Ja izdrukÄsiet āsveiki pasauleā, neviens nekad neuzzinÄs, ka API jÄdarbojas un tÄ darbojas. Katrai API izmaiÅai ir jÄmaina pÄrbaudes.
- Ja jums jau ir Å”Äda problÄma, pÄrtrauciet funkcijas un pieŔķiriet izstrÄdÄtÄjus, kas izrakstÄ«s Ŕīs pÄrbaudes, vai pieÅems zaudÄjumus, piekrÄ«tiet, ka nekas netiek pÄrbaudÄ«ts un neizdosies.
Tehniskie padomi:
- Noteikti organizÄjiet ÄrÄju serveri, lai organizÄtu pÄrbaudes - jums ir jÄbÅ«t pÄrliecinÄtiem, ka jÅ«su projekts ir pieejams Ärpasaulei.
- OrganizÄjiet pÄrbaudes visÄ API protokolÄ, nevis tikai atseviŔķos galapunktos.
- Izveidojiet prometheus gala punktu ar testa rezultÄtiem.
Lietojumprogrammas slÄnis ā veselÄ«bas rÄdÄ«tÄju uzraudzÄ«ba
Tagad mÄs runÄjam par pakalpojumu ÄrÄjo veselÄ«bas rÄdÄ«tÄju.
MÄs nolÄmÄm, ka uzraugÄm visus lietojumprogrammas ārokturusā, izmantojot ÄrÄjÄs pÄrbaudes, kuras izsaucam no ÄrÄjas uzraudzÄ«bas sistÄmas. Bet tie ir ārokturiā, kurus lietotÄjs āredzā. MÄs vÄlamies bÅ«t pÄrliecinÄti, ka paÅ”i mÅ«su pakalpojumi darbojas. Å eit ir labÄks stÄsts: K8s ir veselÄ«bas pÄrbaudes, lai vismaz pats "kubs" varÄtu pÄrliecinÄties, ka pakalpojums darbojas. Bet puse no Äekiem, ko esmu redzÄjis, ir tas pats drukÄtais "sveika pasaule". Tie. TÄpÄc viÅÅ” velk vienu reizi pÄc izvietoÅ”anas, viÅÅ” atbildÄja, ka viss ir kÄrtÄ«bÄ - tas arÄ« viss. Un pakalpojumam, ja tas nodroÅ”ina savu API, ir ļoti daudz ieejas punktu Å”ai paÅ”ai API, kas arÄ« ir jÄuzrauga, jo mÄs vÄlamies zinÄt, ka tas darbojas. Un mÄs to jau uzraugÄm iekÅ”Ä.
KÄ to pareizi tehniski ieviest: katrs pakalpojums parÄda galapunktu par tÄ paÅ”reizÄjo veiktspÄju, un Grafana (vai jebkuras citas lietojumprogrammas) grafikos mÄs redzam visu pakalpojumu statusu.
- Katrai API izmaiÅai ir jÄmaina pÄrbaudes.
- NekavÄjoties izveidojiet jaunu pakalpojumu ar veselÄ«bas rÄdÄ«tÄjiem.
- Administrators var nÄkt pie izstrÄdÄtÄjiem un lÅ«gt āpievienot man pÄris lÄ«dzekļus, lai es visu saprastu un pievienotu informÄciju par to manai uzraudzÄ«bas sistÄmaiā. Bet izstrÄdÄtÄji parasti atbild: "MÄs neko nepievienosim divas nedÄļas pirms izlaiÅ”anas."
Dariet zinÄmu attÄ«stÄ«bas vadÄ«tÄjiem, ka bÅ«s Å”Ädi zaudÄjumi, dariet to zinÄmu arÄ« izstrÄdes vadÄ«tÄju vadÄ«bai. Jo, kad viss nokrÄ«t, kÄds joprojÄm zvanÄ«s un pieprasÄ«s uzraudzÄ«t "pastÄvÄ«gi krÄ«toÅ”o pakalpojumu" (c) - Starp citu, pieŔķiriet izstrÄdÄtÄjiem Grafana spraudÅu rakstÄ«Å”anu - tas bÅ«s labs palÄ«gs administratoriem.
Lietojumprogrammu slÄnis ā integrÄcijas uzraudzÄ«ba
IntegrÄcijas uzraudzÄ«ba ir vÄrsta uz sakaru pÄrraudzÄ«bu starp biznesam kritiskÄm sistÄmÄm.
PiemÄram, ir 15 pakalpojumi, kas sazinÄs savÄ starpÄ. Å Ä«s vairs nav atseviŔķas vietnes. Tie. mÄs nevaram izvilkt pakalpojumu pats par sevi, iegÅ«t /helloworld un saprast, ka pakalpojums darbojas. TÄ kÄ pasÅ«tÄ«Å”anas tÄ«mekļa servisam ir jÄnosÅ«ta informÄcija par pasÅ«tÄ«jumu uz autobusu - no autobusa, noliktavas dienestam jÄsaÅem Å”is ziÅojums un jÄstrÄdÄ ar to tÄlÄk. Un e-pasta izplatÄ«Å”anas pakalpojumam tas kaut kÄ tÄlÄk ir jÄapstrÄdÄ utt.
AttiecÄ«gi mÄs nevaram saprast, bakstoties uz katru atseviŔķu servisu, ka tas viss darbojas. Jo mums ir noteikts autobuss, caur kuru viss sazinÄs un mijiedarbojas.
TÄpÄc Å”im posmam vajadzÄtu iezÄ«mÄt pakalpojumu testÄÅ”anas posmu mijiedarbÄ«bai ar citiem pakalpojumiem. Nav iespÄjams organizÄt komunikÄcijas uzraudzÄ«bu, uzraugot ziÅojumu brokeri. Ja ir pakalpojums, kas izsniedz datus, un pakalpojums, kas tos saÅem, uzraugot brokeri, mÄs redzÄsim tikai datus, kas lido no vienas puses uz otru. Pat ja mums kaut kÄ izdevÄs iekÅ”Äji uzraudzÄ«t Å”o datu mijiedarbÄ«bu - ka kÄds ražotÄjs ievieto datus, kÄds tos nolasa, Ŕī plÅ«sma turpina iet uz Kafku - tas mums joprojÄm nesniegs informÄciju, ja viens dienests nosÅ«tÄ«ja ziÅojumu vienÄ versijÄ. , bet otrs pakalpojums Å”o versiju nesagaidÄ«ja un to izlaida. MÄs par to neuzzinÄsim, jo āādienesti mums pateiks, ka viss darbojas.
Ko iesaku darīt:
- Sinhronai saziÅai: galapunkts veic pieprasÄ«jumus saistÄ«tajiem pakalpojumiem. Tie. mÄs Åemam Å”o beigu punktu, ievelkam skriptu servisa iekÅ”ienÄ, kas iet uz visiem punktiem un saka āEs varu vilkt tur, un vilkt tur, es varu vilkt tur...ā
- Asinhronai komunikÄcijai: ienÄkoÅ”ie ziÅojumi ā galapunkts pÄrbauda, āāvai kopnÄ nav testa ziÅojumu, un parÄda apstrÄdes statusu.
- Asinhronai komunikÄcijai: izejoÅ”ie ziÅojumi - galapunkts nosÅ«ta testa ziÅojumus uz kopni.
KÄ tas parasti notiek: mums ir pakalpojums, kas iemet datus autobusÄ. MÄs nÄkam uz Å”o pakalpojumu un lÅ«dzam pastÄstÄ«t mums par tÄ integrÄcijas stÄvokli. Un, ja pakalpojumam ir jÄrada ziÅojums kaut kur tÄlÄk (WebApp), tas izveidos Å”o testa ziÅojumu. Un, ja mÄs palaižam pakalpojumu OrderProcessing pusÄ, tas vispirms ievieto to, ko var ievietot neatkarÄ«gi, un, ja ir dažas atkarÄ«gas lietas, tad tas nolasa testa ziÅojumu kopu no autobusa, saprot, ka var tos apstrÄdÄt, ziÅot un , ja vajag, ievieto tos tÄlÄk, un par Å”o viÅÅ” saka - viss ir ok, esmu dzÄ«vs.
Ä»oti bieži mÄs dzirdam jautÄjumu "kÄ mÄs varam to pÄrbaudÄ«t ar kaujas datiem?" PiemÄram, mÄs runÄjam par vienu un to paÅ”u pasÅ«tÄ«Å”anas pakalpojumu. PasÅ«tÄ«jums nosÅ«ta ziÅojumus uz noliktavu, kurÄ preces tiek norakstÄ«tas: mÄs nevaram to pÄrbaudÄ«t uz kaujas datiem, jo āā"manas preces tiks norakstÄ«tas!" RisinÄjums: plÄnojiet visu Å”o pÄrbaudi jau paÅ”Ä sÄkumÄ. Jums ir arÄ« vienÄ«bu testi, kas izsmejas. TÄpÄc dariet to dziļÄkÄ lÄ«menÄ«, kur jums ir komunikÄcijas kanÄls, kas nekaitÄ uzÅÄmuma darbÄ«bai.
Infrastruktūras līmenis
Infrastruktūras uzraudzība jau sen tiek uzskatīta par paŔu uzraudzību.
- InfrastruktÅ«ras uzraudzÄ«bu var un vajag uzsÄkt kÄ atseviŔķu procesu.
- Jums nevajadzÄtu sÄkt ar esoÅ”Ä projekta infrastruktÅ«ras uzraudzÄ«bu, pat ja jÅ«s patieÅ”Äm vÄlaties. Tas ir sÄpes visiem devops. āVispirms uzraudzÄ«Å”u klasteri, uzraudzÄ«Å”u infrastruktÅ«ruā ā t.i. PirmkÄrt, tas pÄrraudzÄ«s to, kas atrodas zemÄk, bet neiedziļinÄs lietojumprogrammÄ. Jo aplikÄcija devopiem ir nesaprotama lieta. Tas viÅam tika nopludinÄts, un viÅÅ” nesaprot, kÄ tas darbojas. Bet viÅÅ” saprot infrastruktÅ«ru un sÄk ar to. Bet nÄ - vispirms vienmÄr ir jÄuzrauga lietojumprogramma.
- NepÄrspÄ«lÄjiet ar brÄ«dinÄjumu skaitu. Å emot vÄrÄ mÅ«sdienu sistÄmu sarežģītÄ«bu, brÄ«dinÄjumi nepÄrtraukti lido, un jums ir kaut kÄ jÄsadzÄ«vo ar Å”o brÄ«dinÄjumu kopumu. Un dežūrpersona, apskatÄ«jusi simts nÄkamo brÄ«dinÄjumu, nolems: āEs nevÄlos par to domÄtā. BrÄ«dinÄjumiem vajadzÄtu ziÅot tikai par kritiskÄm lietÄm.
Lietojumprogrammas lÄ«menis kÄ biznesa vienÄ«ba
Galvenie punkti:
- ELK. Å is ir nozares standarts. Ja kÄda iemesla dÄļ neapkopojat žurnÄlus, sÄciet to darÄ«t nekavÄjoties.
- APM. ÄrÄjie APM kÄ veids, kÄ Ätri aizvÄrt lietojumprogrammu uzraudzÄ«bu (NewRelic, BlackFire, Datadog). Varat uz laiku instalÄt Å”o lietu, lai vismaz kaut kÄ saprastu, kas ar jums notiek.
- IzsekoÅ”ana. Desmitiem mikropakalpojumu viss ir jÄizseko, jo pieprasÄ«jums vairs nedzÄ«vo pats no sevis. To ir ļoti grÅ«ti pievienot vÄlÄk, tÄpÄc labÄk ir nekavÄjoties ieplÄnot izsekoÅ”anu izstrÄdes laikÄ - tas ir izstrÄdÄtÄju darbs un lietderÄ«ba. Ja vÄl neesi to ieviesis, tad ievies! SkatÄ«t JÄgeru/Zipkinu
BrÄ«dinÄjums
- PaziÅojumu sistÄmas organizÄcija: daudzu lietu uzraudzÄ«bas apstÄkļos vajadzÄtu bÅ«t vienotai paziÅojumu nosÅ«tÄ«Å”anas sistÄmai. JÅ«s varat GrafÄnÄ. Rietumos visi izmanto PagerDuty. BrÄ«dinÄjumiem jÄbÅ«t skaidriem (piemÄram, no kurienes tie nÄk...). Un vÄlams kontrolÄt, lai paziÅojumi vispÄr tiktu saÅemti
- Dežūru sistÄmas organizÄcija: brÄ«dinÄjumus nevajadzÄtu sÅ«tÄ«t visiem (vai nu visi reaÄ£Äs pÅ«lÄ«, vai arÄ« neviens nereaÄ£Äs). IzstrÄdÄtÄjiem arÄ« jÄbÅ«t dežūrÄm: noteikti definÄjiet atbildÄ«bas jomas, sniedziet skaidrus norÄdÄ«jumus un ierakstiet tajÄs, kam tieÅ”i zvanÄ«t pirmdien un treÅ”dien un kam zvanÄ«t otrdien un piektdien (pretÄjÄ gadÄ«jumÄ viÅi nevienam nezvanÄ«s pat lielas problÄmas gadÄ«jumÄ - viÅi baidÄ«sies jÅ«s pamodinÄt vai traucÄt: cilvÄkiem parasti nepatÄ«k zvanÄ«t un modinÄt citus cilvÄkus, it Ä«paÅ”i naktÄ«). Un paskaidrojiet, ka palÄ«dzÄ«bas lÅ«gÅ”ana nav nekompetences rÄdÄ«tÄjs (āes lÅ«dzu palÄ«dzÄ«bu, tas nozÄ«mÄ, ka esmu slikts darbinieksā), veiciniet palÄ«dzÄ«bas lÅ«gumus.
- āZinÄÅ”anu bÄzesā organizÄÅ”ana un darbplÅ«sma incidentu apstrÄdei: katram nopietnam incidentam ir jÄplÄno pÄcnÄves pÄrbaude un kÄ pagaidu pasÄkums jÄreÄ£istrÄ darbÄ«bas, kas atrisinÄs incidentu. Un padariet to par praksi, ka atkÄrtoti brÄ«dinÄjumi ir grÄks; tie ir jÄlabo kodÄ vai infrastruktÅ«ras darbÄ.
Tehnoloģiju kaudze
IedomÄsimies, ka mÅ«su kaudze ir Å”Äda:
- datu vÄkÅ”ana - Prometejs + Grafana;
- baļķu analīze - ELK;
- APM vai Tracing ā Jaeger (Zipkin).
Opciju izvÄle nav kritiska. Jo, ja sÄkumÄ sapratÄt, kÄ uzraudzÄ«t sistÄmu, un pierakstÄ«jÄt plÄnu, tad sÄkat izvÄlÄties rÄ«kus atbilstoÅ”i savÄm prasÄ«bÄm. JautÄjums ir par to, ko jÅ«s izvÄlÄjÄties pÄrraudzÄ«t vispirms. Jo, iespÄjams, sÄkumÄ izvÄlÄtais rÄ«ks nemaz neatbilst jÅ«su prasÄ«bÄm.
Daži tehniski punkti, ko pÄdÄjÄ laikÄ redzu visur:
Prometejs tiek stumts iekÅ”Ä Kubernetes - kurÅ” to izdomÄja?! Ja jÅ«su klasteris avarÄ, ko jÅ«s darÄ«sit? Ja jums ir sarežģīts klasteris iekÅ”pusÄ, tad klastera iekÅ”ienÄ un ÄrpusÄ ir jÄbÅ«t kÄdai uzraudzÄ«bas sistÄmai, kas apkopos datus no klastera iekÅ”puses.
Klastera iekÅ”pusÄ mÄs savÄcam baļķus un visu pÄrÄjo. Bet uzraudzÄ«bas sistÄmai jÄbÅ«t ÄrpusÄ. Ä»oti bieži klasterÄ«, kur iekÅ”Äji ir uzstÄdÄ«ts Promtheus, ir arÄ« sistÄmas, kas veic vietnes darbÄ«bas ÄrÄjÄs pÄrbaudes. Ko darÄ«t, ja jÅ«su sakari ar Ärpasauli ir pÄrtrÅ«kuÅ”i un lietojumprogramma nedarbojas? IzrÄdÄs, ka iekÅ”Ä viss ir kÄrtÄ«bÄ, taÄu tas lietotÄjiem neatvieglo darbu.
Atzinumi
- IzstrÄdes uzraudzÄ«ba nav utilÄ«tu instalÄÅ”ana, bet gan programmatÅ«ras produkta izstrÄde. 98% mÅ«sdienu monitoringa ir kodÄÅ”ana. KodÄÅ”ana pakalpojumos, ÄrÄjo pÄrbaužu kodÄÅ”ana, ÄrÄjo pakalpojumu pÄrbaude un tas arÄ« viss.
- NetÄrÄjiet savu izstrÄdÄtÄju laiku uzraudzÄ«bai: tas var aizÅemt lÄ«dz pat 30% no viÅu darba, taÄu tas ir tÄ vÄrts.
- Devops, neuztraucieties, ka nevarat kaut ko uzraudzÄ«t, jo dažas lietas ir pilnÄ«gi atŔķirÄ«gas domÄÅ”anas veids. JÅ«s nebijÄt programmÄtÄjs, un pÄrraudzÄ«bas darbs ir tieÅ”i viÅu darbs.
- Ja projekts jau darbojas un netiek uzraudzÄ«ts (un jÅ«s esat vadÄ«tÄjs), pieŔķiriet resursus uzraudzÄ«bai.
- Ja produkts jau tiek ražots, un jÅ«s esat devops, kuram tika teikts āiestatÄ«t uzraudzÄ«buā - mÄÄ£iniet paskaidrot vadÄ«bai, par ko es to visu rakstÄ«ju.
Å Ä« ir Saint Highload++ konferences ziÅojuma paplaÅ”inÄta versija.
Ja jÅ«s interesÄ manas idejas un domas par to un saistÄ«tajÄm tÄmÄm, tad Å”eit varat
Avots: www.habr.com