JĂ€lgime Spordimeistrit — kuidas ja millega

Meile tekkis mĂ”te jĂ€lgimissĂŒsteemi loomisest tootegruppide loomise etapis. Selgus, et meie roll - ekspluateerimine - ei kuulu nende ridadesse.

Asi on selles, et kĂ”ik meie meeskonnad on ĂŒles ehitatud eraldi infotehnoloogiliste sĂŒsteemide, mikroteenuste ja frontide ĂŒmber, mistĂ”ttu nad ei nĂ€e kogu sĂŒsteemi ĂŒldiselt. NĂ€iteks ei pruugi nad teada, kuidas mĂ”ni vĂ€ike osa sĂŒgavas tagakĂŒljel mĂ”jutab fronti. Nende huvi piirneb sĂŒsteemidega, millega nende sĂŒsteem on integreeritud. Kui meeskond ja tema teenus A ei ole peaaegu ĂŒldse seotud teenusega B, siis on see teenus meeskonnale peaaegu nĂ€htamatu.

JĂ€lgime Spordimeistrit — kuidas ja millega

Meie meeskond töötab omakorda sĂŒsteemidega, mis on omavahel tihedalt integreeritud: nende vahel on palju seoseid, tegemist on suurte infrastruktuuridega. Ja kĂ”igi nende sĂŒsteemide (millel on muide tohutu hulk) olemasolu sĂ”ltub internetipoe toimimisest.

Nii ongi meie osakond veidi kĂ”rvale jĂ€etud, kuuludes mitte ĂŒhtegi meeskonda. Kogu selles loos on meie ĂŒlesanne mĂ”ista kompleksis, kuidas infotehnoloogilised sĂŒsteemid töötavad, nende funktsionaalsust, integratsioone, tarkvara, vĂ”rku, riistvara ja kuidas kĂ”ik see omavahel seotud on.

Platvorm, millel meie internetipoed toimivad, nÀeb vÀlja niimoodi:

  • front
  • middle-office
  • back-office

Kuigi me igatseksime, et kĂ”ik sĂŒsteemid töötaksid sujuvalt ja veatult, ei ole see siiski vĂ”imalik. Asjaolu on selles, et sĂŒsteemide ja integratsioonide hulk - meie puhul - toob paratamatult kaasa teatud intsidente, hoolimata testimise kvaliteedist. See kehtib nii sisemises eraldi sĂŒsteemis kui ka nende integratsioonide osas. Ja tuleks jĂ€lgida kogu platvormi seisukorda komplekselt, mitte mĂ”ne eraldi osa jĂ€rgi.

Ideaalis tuleks kogu platvormi terviseseisundi jĂ€lgimist automatiseerida. Ja me jĂ”udsime otsuseni, et monitooring on selle protsessi vĂ€ltimatu osa. Alguses oli see loodud ainult frontide jaoks, samal ajal kui sĂŒsteemide jĂ€lgimisvĂ”tted kihtide jĂ€rgi olid ja on olemas vĂ”rguekspertide, tarkvarahaldurite ja riistvara haldurite seas. KĂ”ik need inimesed jĂ€lgisid monitooringut ainult oma tasemel, keegi ei omanud kompleksset arusaamist.

NĂ€iteks, kui virtuaalmasin kukub, teab sellest enamasti ainult administraator, kes vastutab riistvara ja virtuaalmasina eest. Eesrinde meeskond nĂ€eb sellistes olukordades ainult rakenduse kukkumise fakti, kuid neil pole andmeid virtuaalmasina kohta. Administrator vĂ”ib teada, kes on tellija, ja ligikaudselt mĂ”ista, mis just sellel virtuaalmasinal kĂ€ib, eeldusel, et see on mingi suur projekt. VĂ€ikeste projektide kohta ei pruugi ta tĂ”enĂ€oliselt midagi teada. Igatahes peab administraator minema omaniku juurde, kĂŒsima, mis sellel masinal oli, mida tuleb taastada ja mida muuta. Kui midagi tĂ”eliselt tĂ”sist purunes, algab ringjooks — sest keegi ei nĂ€inud sĂŒsteemi tervikuna.

LĂ”ppkokkuvĂ”ttes mĂ”jutavad sellised killustatud lood kogu eesrinde, kasutajaid ja meie peamist Ă€rifunktsiooni — veebimĂŒĂŒki. Kuna me ei kuulu meeskondadesse ja tegeleme kĂ”igi e-kaubanduse rakenduste haldamisega veebipoe raames, oleme endale seadnud ĂŒlesande luua töökindel jĂ€lgimissĂŒsteem e-kaubanduse platvormile.

SĂŒsteemi struktuur ja tehnoloogia virnad

Alustasime sellega, et eraldasime meie sĂŒsteemide jaoks mitmeid jĂ€lgimise kihte, mille kaudu me peame mÔÔdikud koguma. Ja kogu see tuli omavahel siduda, mida me esimese etapina tegime. Praegu viime selle etapi raames lĂ”pule kvaliteetse mÔÔdikute kogumise kĂ”igilt meie kihtidelt, et luua korrelatsioon ja mĂ”ista, kuidas sĂŒsteemid ĂŒksteist mĂ”jutavad.

Kompleksse jĂ€lgimise puudumine rakenduste kĂ€ivitamise algfaasides (sest alustasime selle ehitamist, kui enamik sĂŒsteeme oli töös) viis selleni, et me kogusime mĂ€rkimisvÀÀrse tehnilise vĂ”la kogu platvormi jĂ€lgimise seadistamisel. Keskenduda ĂŒhe teabe sĂŒsteemi jĂ€lgimise seadistamisele ja selle detailsele vĂ€ljatöötamisele me endale ei saanud lubada, sest teiste sĂŒsteemide jĂ€lgimise puudumine tooks ajutiselt kaasa probleemid. Selle probleemi lahendamiseks mÀÀrasime kĂ”ige vajalikud mÔÔdikud teabe sĂŒsteemi seisundi hindamiseks kihtide kaupa ja alustasime nende rakendamist.

SeetĂ”ttu otsustasime, et söödame elevanti tĂŒkkideks.

Meie sĂŒsteem koosneb jĂ€rgmistest komponentidest:

  • riistvarast;
  • operatsioonisĂŒsteemist;
  • tarkvarast;
  • Rakenduse jĂ€lgimise kasutajaliidese osad;
  • Ă€ri nĂ€itajad;
  • integreerimise rakendused;
  • teabe turvalisus;
  • vĂ”rgud;
  • koormuse tasakaalustaja.

JĂ€lgime Spordimeistrit — kuidas ja millega

Selle sĂŒsteemi keskmes on jĂ€lgimine. Et mĂ”ista kogu sĂŒsteemi seisundit, tuleb teada, mis toimub rakendustega kĂ”igil nendel tasanditel ja lĂ€bi nende paljude rakenduste.

Nii et, rÀÀgime tehnoloogiast.

JĂ€lgime Spordimeistrit — kuidas ja millega

Kasutame avatud lĂ€htekoodiga tarkvara. Meie keskmes on Zabbix, mida me kasutame eelkĂ”ige hĂ€irete sĂŒsteemina. KĂ”ik teavad, et see sobib ideaalselt infrastruktuuri jĂ€lgimiseks. Mis selle taga peitub? Just need madalamatasemelised nĂ€itajad, mis igal ettevĂ”ttel, kes haldab oma andmekeskust (ja Sportmasteril on oma andmekeskused), on — serveri temperatuur, mĂ€lu seisund, RAID, vĂ”rgu seadmete nĂ€itajad.

Me oleme integreerinud Zabbixi Telegrami ja Microsoft Teamsiga, mida meeskondades aktiivselt kasutatakse. Zabbix katab fĂŒĂŒsilise vĂ”rgu, riistvara ja osaliselt tarkvarakiht, kuid see pole imerohi. Me rikastame neid andmeid mĂ”nede teiste teenustega. NĂ€iteks riistvara tasandi puhul ĂŒhendame otse API kaudu meie virtualiseerimissĂŒsteemiga ja saame andmeid.

Veel. Lisaks Zabbixile kasutame Prometheust, mis vĂ”imaldab jĂ€lgida dĂŒnaamilise keskkonna rakenduste nĂ€itajaid. See tĂ€hendab, et saame HTTP lĂ”pp-punkti kaudu rakenduse nĂ€itajaid ja ei pea muretsema, milliseid nĂ€itajaid sinna laadida ning milliseid mitte. Sellel alusel saab koostada analĂŒĂŒtilisi pĂ€ringuid.

ÜlejÀÀnud kihtide andmeallikad, nĂ€iteks Ă€ri nĂ€itajate jaoks, jagunevad meil kolme komponenti.

Esiteks on need vĂ€lised Ă€risĂŒsteemid, Google Analytics, kogume nĂ€itajaid logidest. Nendest saame andmed aktiivsete kasutajate, konversioonide ja muude, Ă€ri jaoks oluliste asjade kohta. Teiseks on see kasutajaliidese jĂ€lgimise sĂŒsteem. Sellest tasub rÀÀkida lĂ€hemalt.

Kunagi alustasime manuaalse testimisega ja see kasvas funktsionaalsuse ja integratsioonide automaatseteks testideks. Just sellest tekitasime jÀlgimise, jÀttes alles ainult pÔhifunktsionaalsuse ja seondudes markeritega, mis on vÔimalikult stabiilsed ja ei muutu ajas sageli.

Uus meeskonnastruktuur tĂ€hendab, et kogu rakenduste tegevus keskendub toote meeskondadele, seega oleme puhta testimisega lĂ”petanud. Selle asemel oleme testidest loonud UI-monitooringu, mis on kirjutatud Java, Selenium ja Jenkins'i abil (kasutatakse kĂ€ivitamise ja raportite genereerimise sĂŒsteemina).

Meil oli palju teste, kuid lĂ”puks otsustasime liikuda peele teele, kĂ”rgema taseme metoodikale. Ja kui meil on palju spetsiifilisi teste, on andmete ajakohasena hoidmine keeruline. Iga jĂ€rgmine versioon katkestab kogu sĂŒsteemi oluliselt, ja me tegeleme ainult selle parandamisega. SeetĂ”ttu keskendume midagi tĂ”eliselt pĂ”hilist, mis harva muutub, ja jĂ€lgime ainult neid.

LĂ”puks, kolmandaks, andmeallikaks on tsentraliseeritud logimise sĂŒsteem. Logide jaoks kasutame Elastic Stack'i, ja siis saame neid andmeid tĂ”mmata meie Ă€rimeetodite monitooringu sĂŒsteemi. KĂ”igile sellele lisaks töötab meie enda Monitoring API teenus, mis on kirjutatud Python'is ja kĂŒsib API kaudu mis tahes teenuseid ning toob Zabbix'isse nende andmed.

Veel ĂŒks hĂ€davajalik monitooringu atribuut on visualiseerimine. Meie visualiseerimine pĂ”hineb Grafana'l. Teistest visualiseerimissĂŒsteemidest eristub see sellega, et armatuurlaud suudab visualizeerida erinevate andmeallikate mÔÔdikuid. Saame koguda kĂ”rgema taseme mÔÔdikuid internetipoest, nĂ€iteks viimase tunni jooksul vormistatud tellimuste arvu andmebaasist, operatsioonisĂŒsteemi jĂ”udluse mÔÔdikuid, millel see internetipood töötab, Zabbix'ist, ja selle rakenduse instantside mÔÔdikuid Prometheus'elt. Ja kĂ”ik see on ĂŒhel armatuurlaud. Selgelt ja kergesti kĂ€ttesaadavalt.

Tahan rĂ”hutada turvalisust — praegu viimistleme sĂŒsteemi, mida hiljem integreerime globaalsete monitooringu sĂŒsteemidega. Minu arvates on peamised probleemid, millega e-kaubanduse valdkond tegeleb infotehnoloogia turvalisuses, seotud botide, parsimise ja bruteforce'iga. Sellega tuleb tĂ€helepanu pöörata, sest see vĂ”ib kriitiliselt mĂ”jutada meie rakenduste tööd ja ettevĂ”tte mainet. Ja valitud tehnoloogiastik katab need probleemid edukalt.

Veel tÀhtis punkt on see, et rakenduste taseme metrikad kogub Prometheus. See on ka meil integreeritud Zabbixiga. Meil on ka sitespeed, teenus, mis vÔimaldab meil jÀlgida selliseid parameetreid nagu meie lehe laadimiskiirus, pudelikaelad, lehe renderdamine, skriptide laadimine ja muud, see on samuti API kaudu integreeritud. Seega kogume me Zabbixis metrikad ja alarmeerime ka sealt. KÔik alarmeid saadetakse seni peamiste edastusmeetoditega (praegu on need email ja telegram, lisaks oleme hiljuti lisanud MS Teams). Plaan on tÀiustada alarmeerimist nii, et nutikad botid töötaksid teenusena ja pakuksid jÀlgimise teavet kÔikidele soovijatele toote meeskondadele.

Meie jaoks on olulised metrikad mitte ainult ĂŒksikute infosĂŒsteemide, vaid ka ĂŒldised metrikad kogu infrastruktuuri kohta, mida rakendused kasutavad: klastrid fĂŒĂŒsilised serverid, mille peal töötavad virtuaalmasinad, koormuse tasakaalustajad, Network Load Balancerid, ise vĂ”rgu, sidekanalite kasutamine. Lisaks metrikad meie enda andmekeskuste kohta (meil on neid mitu ja infrastruktuur on ĂŒsna suur).

JĂ€lgime Spordimeistrit — kuidas ja millega

Meie jĂ€lgimissĂŒsteemi pluss on see, et selle kaudu nĂ€eme kĂ”igi sĂŒsteemide tööolekut, saame hinnata nende mĂ”ju ĂŒksteisele ja ĂŒhistele ressurssidele. LĂ”ppkokkuvĂ”ttes vĂ”imaldab see meil tegeleda ressursside planeerimisega, mis kuulub samuti meie vastutusvaldkonda. Halduse all on serveriressursid — e-kaubanduse vajaduste jaoks, toome ja viime vĂ€lja uusi seadmeid, ostame uusi, teeme ressursside kasutuse auditi jne. Igal aastal kavandavad meeskonnad uusi projekte, arendavad oma sĂŒsteeme, ja meil on oluline tagada nendele ressurssidest.

Ja metrikate abil nĂ€eme tendentse ressursside tarbimises meie infosĂŒsteemide poolt. Nende pĂ”hjal saame juba midagi planeerida. Virtualiseerimise tasemel kogume andmeid ja nĂ€eme teavet saadaval olevate ressursside kohta andmekeskuste lĂ”ikes. Ja andmekeskuse sees on nĂ€ha nii kasutus kui ka tegelik jaotumine, ressursside tarbimine. Nii eraldiseisvate serverite, virtuaalmasinate kui ka fĂŒĂŒsiliste serverite klastrite kohta, mille peal kĂ”ik need virtuaalmasinad sujuvalt töötavad.

Prospects

Praegu on meie sĂŒsteemi tuum ĂŒldiselt valmis, kuid meil on veel palju teemasid, millega tuleb tegeleda. VĂ€hemalt on see teabejulgeoleku kiht, kuid oluline on ka jĂ”uda vĂ”rku, arendada hĂ€irete sĂŒsteemi ja lahendada korrelatsiooni kĂŒsimus. Meil on palju kihte ja sĂŒsteeme ning igas kihis on veel mitu mÔÔdikut. Tulemuseks on matryoshka matryoshka sees.

Meie eesmĂ€rk on lĂ”puks luua Ă”iged hĂ€ired. NĂ€iteks, kui tekib probleem riistvaraga, jĂ€lle, virtuaalmasinaga, kus oli oluline rakendus ja teenust ei olnud ĂŒldse reserveeritud. Me saame teada, et virtuaalmasin on kukkunud. Siis hĂ€iritakse Ă€ri mÔÔdikuid: kasutajad on kuhugi kadunud, konversioone ei ole, kasutajaliides pole kĂ€tte saadav, tarkvara ja teenused on samuti kukkunud.

Sellise olukorra korral saame me hĂ€irete rikka spam'i, mis ei sobi juba korraliku monitooringu sĂŒsteemi formaati. KĂ€tkeb kĂŒsimus korrelatsioonist. SeetĂ”ttu peaks meie monitooringusĂŒsteem ideaalis ĂŒtlema: "Mehed, teie fĂŒĂŒsiline masin on kukkunud, koos sellega ka see rakendus ja sellised mÔÔdikud," ĂŒhe hĂ€ire kaudu, mitte ei peaks meid sadade hĂ€iretega ĂŒle ujutama. See peaks teavitama peamisest — pĂ”hjusest, mis aitab probleemide kiiret kĂ”rvaldamist nende lokaliseerimise kaudu.

Meie hĂ€irete sĂŒsteem ja hĂ€irete töötlemine on ĂŒles ehitatud ööpĂ€evaringselt töötavale hĂ€daabi teenusele. KĂ”ik hĂ€ired, mis on meie jaoks must-have ja kuuluvad kontrollnimekirja, edastatakse sinna. Igal hĂ€irel peab olema kindlasti kirjeldus: mis juhtus, mida see tegelikult tĂ€hendab, millele see mĂ”jub. Ja veel lingi juhendile, et mida selles olukorras teha.

Need on kĂ”ik hĂ€irimise nĂ”uded. Edasi vĂ”ib olukord areneda kahes suunas — kas probleem on olemas ja seda tuleb lahendada, vĂ”i on toimunud monitooringu sĂŒsteemi rike. Kuid igal juhul tuleb minna ja selgeks teha.

Keskmiselt saavad meile nĂŒĂŒd ĂŒhe pĂ€eva jooksul umbes sada hĂ€iret, arvestatuna asjaoluga, et hĂ€irete korrelatsioon ei ole veel korralikult seadistatud. Ja kui on vaja teha tehnilisi töid ja me midagi sunniviisiliselt vĂ€lja lĂŒlitame, suureneb nende arv kordades.

Lisaks sĂŒsteemide jĂ€lgimisele, mida me kasutame, ja mÔÔdikute kogumisele, mida meie poolest peetakse oluliseks, vĂ”imaldab jĂ€lgimissĂŒsteem koguda andmeid toote meeskondade jaoks. Need saavad mĂ”jutada mÔÔdikute koostamist meie jĂ€lgitavate infosĂŒsteemide raames.

Meie kolleeg vÔib tulla ja paluda lisada mÔni mÔÔdik, mis osutub kasulikuks nii meie jaoks kui ka meeskonnale. VÔi nÀiteks, vÔib juhtuda, et meeskonnale ei piisa olemasolevatest pÔhimÔÔdikutest, nad vajavad mingit spetsiifilist jÀlgimist. Grafanas loome iga meeskonna jaoks tööruumi ja anname administraatori Ôigused. Samuti, kui meeskond vajab juhtpaneele ja nad ei oska/kui nad ei tea, kuidas seda teha, aitame neid.

Kuna me ei ole tiimi vÀÀrtuse loomise, vĂ€ljaande ja planeerimise protsessis, jĂ”uame jĂ€rk-jĂ€rgult olukorrani, kus kĂ”igi sĂŒsteemide vĂ€ljaanded on sujuvad ja neid saab iga pĂ€ev vĂ€lja panna, ilma et peaksime sellega kooskĂ”lastama. Meie jaoks on oluline neid vĂ€ljaandeid jĂ€lgida, sest need vĂ”ivad potentsiaalselt mĂ”jutada rakenduse tööd ja midagi katki teha, mis on kriitiline. VĂ€ljaannete haldamiseks kasutame Bamboo't, kust saame API kaudu andmeid ja saame nĂ€ha, millised vĂ€ljaanded millistes infosĂŒsteemides on vĂ€lja tulnud ja nende staatust. Ja kĂ”ige olulisem - millal. VĂ€ljaannete markerid paneme peamistesse kriitilistesse mÔÔdikutesse, mis visuaalselt on ĂŒsna nĂ€itlik probleemide korral.

Nii saame nĂ€ha korrelatsiooni uute vĂ€ljaannete ja tekkivate probleemide vahel. Peamine idee on mĂ”ista, kuidas sĂŒsteem töötab kĂ”ikidel tasanditel, kiiresti lokaliseerida probleem ja samuti kiiresti see lahendada. LĂ”ppude lĂ”puks on sageli nii, et kĂ”ige rohkem aega kulub mitte probleemi lahendamisele, vaid pĂ”hjuse leidmisele.

Ja selle suuna osas soovime tulevikus keskenduda proaktiivsusele. Ideaalis tahaksime eelnevalt teada, kui probleem on tulemas, mitte alles siis, kui see on juba juhtunud, et tegeleda selle ennetamisega, mitte lahendamisega. MĂ”nikord esinevad valehĂ€ired seire sĂŒsteemis, olgu need inimlike vigade vĂ”i rakenduse muutuste tĂ”ttu. Me töötame selle kallal, lihvime seda ja pĂŒĂŒame teavitada kasutajaid, kes sĂŒsteemi koos meiega kasutavad, enne kui teeme seire sĂŒsteemis mingeid muudatusi, vĂ”i viia lĂ€bi need tegevused tehnilisel aknal.

Nii et sĂŒsteem on kĂ€ivitatud ja toimib edukalt alates kevade algusest
 ning nĂ€itab ĂŒsna reaalselt kasumit. Muidugi ei ole see selle lĂ”plik versioon, me plaanime veel palju kasulikke lisandeid. Hetkel, nii paljude integratsioonide ja rakendustega, ei saa me ilma seire automatiseerimiseta tĂ”eliselt hakkama.

Kui ka teie jĂ€lgite suuri projekte tĂ”sise integratsioonide arvuga — kirjutage kommentaaridesse, millist hĂ”bepĂŒssi leidsisite selleks.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster