Vi overvĂ„ker Sportmaster — hvordan og med hva

Vi begynte Ă„ tenke pĂ„ opprettelsen av et overvĂ„kingssystem i lĂžpet av dannelsen av produktteamene. Det ble klart at vĂ„rt ansvar — driften — ikke er en del av disse teamene. Hvorfor er det slik?

Saken er den at alle vÄre team er bygget rundt separate informasjonssystemer, mikrotjenester og grensesnitt, sÄ de ser ikke den generelle helsetilstanden til hele systemet. For eksempel kan de vÊre uvitende om hvordan en liten del av backend pÄvirker frontend. Deres interesseomrÄde er begrenset til systemene de har integrert sine systemer med. Hvis et team og dets tjeneste A knapt har noe Ä gjÞre med tjeneste B, sÄ er den tjenesten stort sett usynlig for teamet.

Vi overvĂ„ker Sportmaster — hvordan og med hva

VÄrt team, derimot, jobber med systemer som er sterkt integrert med hverandre: det finnes mange forbindelser mellom dem, og dette utgjÞr en ganske stor infrastruktur. Arbeidet til nettbutikken er avhengig av alle disse systemene (som vi forresten har et stort antall av).

SÄ det viser seg at vÄr avdeling ikke tilhÞrer noe spesifikt team, men ligger litt utenfor. I denne historien er vÄr oppgave Ä forstÄ helheten av hvordan informasjonssystemene fungerer, deres funksjonalitet, integrasjoner, programvare, nettverk, maskinvare, og hvordan alt henger sammen.

Plattformen som driver vÄre nettbutikker ser slik ut:

  • front
  • middle-office
  • back-office

SĂ„ mye vi skulle Ăžnske, finnes det ikke noe som heter at alle systemer fungerer jevnt og feilfritt. Det kommer igjen an pĂ„ antall systemer og integrasjoner — med et slikt volum som vi har, er visse hendelser uunngĂ„elige, til tross for kvaliteten pĂ„ testingen. Dette gjelder bĂ„de innenfor et enkelt system og i forhold til deres integrasjon. Det er nĂždvendig Ă„ overvĂ„ke tilstanden til hele plattformen helhetlig, og ikke bare en viss del av den.

I idealtilfellet bÞr overvÄkningen av helsetilstanden til hele plattformen automatiseres. Vi kom til overvÄkning som en uunngÄelig del av denne prosessen. I utgangspunktet ble det bygget bare for frontend-delen, mens egne overvÄkingssystemer for lagene ble og blir brukt av nettverksfolk, programvareadministratorer og maskinvare. Alle disse menneskene overvÄket bare pÄ sitt nivÄ, ingen hadde noe helhetlig forstÄelse.

For example, if a virtual machine fails, in most cases only the administrator responsible for the hardware and the virtual machine is aware of this. The frontend team sees the fact of the application's failure, but they have no data about the failure of the virtual machine. The administrator may know who the client is and have a rough idea of what is currently running on that virtual machine, provided it is a large project. For smaller projects, they are likely unaware. In any case, the administrator needs to approach the owner and inquire about what was on that machine, what needs to be restored, and what should be changed. If something serious was broken, a frantic search would begin — because no one had a holistic view of the system.

Ultimately, such fragmented stories affect the entire frontend, the users, and our core business function — online sales. As we are not part of the teams, but rather manage all ecommerce applications within the online store, we took on the task of creating a comprehensive monitoring system for the ecommerce platform.

System Structure and Stack

We started by identifying several layers of monitoring for our systems, across which we would need to collect metrics. All of this needed to be integrated, which we accomplished in the first phase. Now at this stage, we are refining the collection of metrics across all our layers to establish correlations and understand how systems affect one another.

The lack of comprehensive monitoring at the initial stages of application launches (since we started building it when most systems were already in operation) resulted in a significant technical debt regarding the configuration of monitoring for the entire platform. We could not afford to focus on configuring monitoring for a single information system in detail, as the other systems would be without monitoring for some time. To solve this challenge, we identified a list of the most necessary metrics for assessing the state of the information system across layers and began to implement it.

Therefore, we decided to tackle the elephant in parts.

Our system consists of:

  • hardware;
  • operating system;
  • software;
  • UI-deler i overvĂ„kingsapplikasjonen;
  • forretningsmetrikker;
  • integrasjonsapplikasjoner;
  • informasjonssikkerhet;
  • nettverk;
  • trafikkbalanserer.

Vi overvĂ„ker Sportmaster — hvordan og med hva

I sentrum av dette systemet er selve overvÄkingen. For Ä forstÄ tilstanden til hele systemet, er det nÞdvendig Ä vite hva som skjer med applikasjonene pÄ alle disse lagene og i lys av det store antallet applikasjoner.

SĂ„, la oss snakke om stakken.

Vi overvĂ„ker Sportmaster — hvordan og med hva

Vi bruker programvare med Ă„pen kildekode. I sentrum har vi Zabbix, som vi primĂŠrt bruker som et alarmsystem. Alle vet at det passer perfekt for overvĂ„kning av infrastruktur. Hva menes med dette? Det er nettopp de lavnivĂ„metrikker som finnes hos hver bedrift som har sitt eget datasenter (og Sportmaster har sine datasentre) — servertemperatur, minnestatus, RAID-status, metrikker for nettverksenheter.

Vi har integrert Zabbix med meldingssystemene Telegram og Microsoft Teams, som er mye brukt i teamene. Zabbix dekker laget av den faktiske nettverket, maskinvaren og delvis programvaren, men det er ikke en panacea. Vi beriker disse dataene fra noen andre tjenester. For eksempel, pÄ maskinvare-nivÄ kobler vi oss direkte via API til vÄrt virtualiseringssystem og henter data.

Hva mer. I tillegg til Zabbix bruker vi Prometheus, som tillater oss Ä overvÄke metrikker i applikasjonen av dynamiske omgivelser. Det vil si at vi kan motta applikasjonsmetrikker via HTTP-endepunkt og ikke bekymre oss for hvilke metrikker vi skal laste opp og hvilke vi ikke skal. Basert pÄ disse dataene kan vi lage analytiske forespÞrsel.

Datakilder for de andre lagene, for eksempel forretningsmetrikker, er delt inn i tre komponenter.

For det fÞrste, ekstern forretningssystemer, Google Analytics, vi samler metrikker fra logger. Fra dem fÄr vi data om aktive brukere, konverteringer og alt annet relatert til forretningen. For det andre, det er brukermonitoreringssystemet. Dette bÞr beskrives mer detaljert.

En gang startet vi med manuell testing, og det utviklet seg til automatiserte tester for funksjonalitet og integrasjoner. Derfra laget vi overvÄkingen, og beholdt bare hovedfunksjonaliteten, og knyttet oss til marker som er sÄ stabile som mulig og ikke endres ofte over tid.

Den nye teamstrukturen innebÊrer at all aktivitet knyttet til applikasjoner er konsolidert innen produktteamene, sÄ vi har sluttet med ren testing. I stedet har vi utviklet UI-overvÄking, skrevet i Java, Selenium og Jenkins (som brukes som system for kjÞring og rapportgenerering).

Vi hadde mange tester, men til slutt bestemte vi oss for Ä fokusere pÄ hovedveien, den overordnede metrikken. Og hvis vi har mange spesifikke tester, vil det bli vanskelig Ä opprettholde datakvaliteten. Hver pÄfÞlgende utgivelse vil i stor grad bryte hele systemet, og vi vil bare ende opp med Ä fikse det. Derfor har vi fokusert pÄ helt grunnleggende ting som sjelden endres, og bare overvÄker dem.

Til slutt, for det tredje, er kilden til dataene et sentralisert loggingssystem. Vi bruker Elastic Stack for logger, og deretter kan vi trekke disse dataene inn i vÄrt overvÄkingssystem for forretningsmetrikker. I tillegg til dette fungerer vÄr egen Monitoring API-tjeneste, skrevet i Python, som forespÞr API-er fra forskjellige tjenester og henter data fra dem inn i Zabbix.

En annen uunnvÊrlig komponent i overvÄking er visualisering. VÄr visualisering er bygget pÄ Grafana. Blandt andre visualiseringssystemer utmerker den seg ved at den pÄ dashbordet kan visualisere metrikker fra forskjellige datakilder. Vi kan samle de overordnede metrikene til nettbutikken, for eksempel antall bestillinger gjort den siste timen, fra databasene, ytelsesmeter fra operativsystemet som nettbutikken kjÞrer pÄ, fra Zabbix, og metrikker fra applikasjonsinstansene fra Prometheus. Alt dette vil vÊre pÄ ett dashbord. Klart og tilgjengelig.

Jeg vil nevne sikkerhet – vi jobber nĂ„ med Ă„ forbedre systemet som vi senere skal integrere med det globale overvĂ„kingssystemet. Etter min mening er de viktigste utfordringene som e-handel mĂžter innen informasjonssikkerhet knyttet til roboter, parsere og brute force-angrep. Dette mĂ„ overvĂ„kes, fordi det kan kritisk pĂ„virke bĂ„de ytelsen til applikasjonene vĂ„re og omdĂžmmet vĂ„rt fra et forretningsperspektiv. Og med den valgte stakken dekker vi disse oppgavene.

En viktig punkt Àr att applikationsnivÄn samlas in av Prometheus. Den Àr ocksÄ integrerad med Zabbix. Dessutom har vi sitespeed, en tjÀnst som gör att vi kan se parametrar som laddningstiden för vÄr sida, flaskhalsar, rendering av sidan, laddning av skript och mer, och den Àr ocksÄ integrerad via API. SÄ vÄra mÀtningar samlas i Zabbix, och vi skickar Àven larm dÀrifrÄn. Alla larm gÄr för nÀrvarande till de huvudsakliga sÀtten att skicka (framför allt e-post och Telegram, och vi har nyligen kopplat in MS Teams). Vi planerar att förbÀttra larmhanteringen sÄ att smarta bots fungerar som en tjÀnst och tillhandahÄller information om övervakning till alla intresserade produktteam.

För oss Àr det viktigt med mÀtningar inte bara av enskilda informationssystem, utan Àven övergripande mÀtningar av hela infrastrukturen som applikationerna anvÀnder: kluster fysiska servrar, dÀr virtuell maskiner körs, trafikbalanserare, Network Load Balancer, sjÀlva nÀtverket, utnyttjande av kommunikationskanaler. Dessutom mÀtningar frÄn vÄra egna datacenter (vi har flera och infrastrukturen Àr av betydande storlek).

Vi overvĂ„ker Sportmaster — hvordan og med hva

Fördelarna med vĂ„rt övervakningssystem Ă€r att vi kan se tillstĂ„ndet för alla system, bedöma deras pĂ„verkan pĂ„ varandra och pĂ„ gemensamma resurser. Slutligen gör det oss i stĂ„nd att planera resurser, vilket ocksĂ„ ingĂ„r i vĂ„rt ansvarsomrĂ„de. Vi hanterar serverresurser — ett pool inom e-handel, sĂ€tter in och tar ur drift ny utrustning, köper ny utrustning, genomför revision av resursutnyttjande och mer. Varje Ă„r planerar teamen nya projekt, utvecklar sina system, och det Ă€r viktigt för oss att sĂ€kra resurserna.

Och med hjÀlp av mÀtningar ser vi trenden för resursförbrukning av vÄra informationssystem. Och baserat pÄ detta kan vi planera nÄgot. PÄ virtualiseringsnivÄ samlar vi in data och ser information om tillgÀngligt antal resurser uppdelat per datacenter. Och inom datacentret syns bÄde utnyttjande och faktisk fördelning samt resursanvÀndning. Detta gÀller bÄde standalone-servrar och virtuella maskiner samt kluster av fysiska servrar dÀr alla dessa virtuella maskiner smidigt körs.

Fremtiden

NÄ er kjernen i systemet vÄrt stort sett klar, men det gjenstÄr fortsatt en del punkter vi mÄ jobbe med. Minst av alt er det laget for informasjonssikkerhet, men det er ogsÄ viktig Ä komme til nettverket, utvikle varsling og lÞse spÞrsmÄlet om korrelasjon. Vi har mange lag og systemer, og pÄ hvert lag finnes det mange metrikk.

Oppgaven vÄr er i siste instans Ä lage de riktige varslingene. For eksempel, hvis det oppstÄr et problem med maskinvaren, igjen med den virtuelle maskinen, og der var det en viktig applikasjon som ikke var reservert. Vi finner ut at den virtuelle maskinen har krasjet. Deretter vil forretningsmetrikker varsles: brukere er forsvunnet, det er ingen konverteringer, UI i grensesnittet er utilgjengelig, programvare og tjenester har ogsÄ krasjet.

Med et slikt oppsett vil vi fÄ spam fra varsler, og det passer ikke inn i formatet for et riktig overvÄkningssystem. SpÞrsmÄlet om korrelasjon oppstÄr. Derfor bÞr vÄrt overvÄkningssystem ideelt sett si: «Folkens, maskinvaren deres har krasjet, og sammen med den, denne applikasjonen og disse metrikene», med ett varsel i stedet for Ä drukne oss i hundre varsler. Det bÞr informere om hovedÄrsaken som bidrar til rask lÞsning av problemet gjennom lokaliseringsmetoden.

Varslingssystemet vÄrt og hÄndteringen av varsler er bygget rundt en dÞgnÄpen supporttjeneste. Alle varsler vi anser som nÞdvendige og som er inkludert i sjekklisten, sendes dit. Hver varsling mÄ alltid ha en beskrivelse: hva som har skjedd, hva det egentlig betyr, og hva det pÄvirker. Og en lenke til dashbordet samt instruksjoner om hva som mÄ gjÞres i dette tilfellet.

Dette er alt som gjelder kravene til bygging av varslinger. Situasjonen kan deretter utvikle seg i to retninger – enten er det et problem som mĂ„ lĂžses, eller det har oppstĂ„tt en feil i overvĂ„kningssystemet. Men uansett mĂ„ man gĂ„ inn og undersĂžke.

I gjennomsnitt fÄr vi nÄ omtrent hundre varsler per dag, dette med forbehold om at korrelasjonen av varsler ennÄ ikke er riktig innstilt. Og hvis tekniske arbeider mÄ utfÞres, og vi tvinger noe til Ä bli stengt, vil antallet Þke betraktelig.

I tillegg til overvÄking av systemene vi bruker og innsamling av metrikker som er viktige for oss, lar overvÄkningssystemet oss samle data for produktteamene. De kan pÄvirke hvilke metrikker som overvÄkes i vÄre informasjonssystemer.

VÄr kollega kan komme og be om Ä legge til en metrikk som viser seg Ä vÊre nyttig for bÄde oss og teamet. Eller teamet kan for eksempel mangle de grunnleggende metrikene vi har, og de trenger Ä overvÄke noe spesifikt. I Grafana oppretter vi et omrÄde for hvert team og gir administrativ tilgang. Hvis teamet trenger dashbord, og de ikke kan eller ikke vet hvordan de skal lage det selv, hjelper vi dem.

Siden vi er utenfor strĂžmmen av verdiskaping til teamet, deres utgivelser og planlegging, kommer vi gradvis til Ă„ oppnĂ„ sĂžmlĂžse utgivelser av alle systemene, som kan rulles ut daglig uten Ă„ mĂ„tte koordinere med oss. Det er viktig for oss Ă„ overvĂ„ke disse utgivelsene, fordi de potensielt kan pĂ„virke appens funksjonalitet og forĂ„rsake feil, noe som er kritisk. For styring av utgivelser bruker vi Bamboo, hvorfra vi fĂ„r data via API, og vi kan se hvilke utgivelser som har blitt gjort i hvilke informasjonssystemer og deres status. Og det viktigste — nĂ„r de skjer. Vi plasserer markeringspunkter om utgivelser pĂ„ de viktigste kritiske metrikene, noe som visuelt er ganske indikativt i tilfelle problemer.

PÄ denne mÄten kan vi se sammenhengen mellom nye utgivelser og oppstÄtte problemer. Hovedideen er Ä forstÄ hvordan systemet fungerer pÄ alle nivÄer, raskt lokalisere problemet og ogsÄ raskt lÞse det. For ofte tar det mer tid Ä finne Ärsaken enn Ä lÞse problemet.

Og i denne retningen vil vi i fremtiden fokusere pÄ proaktivitet. Ideelt sett Þnsker vi Ä vite om en kommende problemstilling pÄ forhÄnd, heller enn i etterkant, slik at vi kan forebygge det, ikke bare lÞse det. Noen ganger skjer det falske alarmer fra overvÄkningssystemet, enten pÄ grunn av menneskelig feil eller endringer i applikasjonen. Vi jobber med dette, finjusterer, og prÞver Ä informere brukerne som bruker systemet sammen med oss, fÞr vi gjÞr noen endringer, eller vi gjennomfÞrer disse aktivitetene i vedlikeholdsvinduet.

SÄ systemet er i gang og fungerer godt siden tidlig vÄr... og viser en ganske reell fortjeneste. SelvfÞlgelig er dette ikke den endelige versjonen, vi vil implementere mange flere nyttige funksjoner. Men akkurat nÄ, med sÄ mange integrasjoner og applikasjoner, er det faktisk umulig Ä unngÄ automatisert overvÄking.

Hvis du ogsĂ„ overvĂ„ker store prosjekter med betydelig antall integrasjoner – skriv i kommentarene hvilken sĂžlvkule du har funnet for dette.

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster