Ass d'Iwwerwaachung dout? - Laang liewen Iwwerwachung

Ass d'Iwwerwaachung dout? - Laang liewen Iwwerwachung

Zënter 2008 ass eis Firma haaptsächlech an der Infrastrukturverwaltung an der Ronn-der-Auer technescher Ënnerstëtzung fir Webprojeten engagéiert: mir hu méi wéi 400 Clienten, wat ongeféier 15% vum russesche E-Commerce ass. Deementspriechend gëtt eng ganz divers Architektur ënnerstëtzt. Falls eppes fält, si mir verflicht et bannent 15 Minutten ze fixéieren. Awer fir ze verstoen datt en Accident geschitt ass, musst Dir de Projet iwwerwaachen an op Tëschefäll reagéieren. Wéi dëst ze maachen?

Ech gleewen datt et e Problem ass fir e richtegt Iwwerwaachungssystem z'organiséieren. Wann et keng Probleemer gewiescht wier, da géif meng Ried aus enger Dissertatioun bestoen: "Installéiert w.e.g. Prometheus + Grafana a Plugins 1, 2, 3." Leider funktionéiert dat net méi esou. An den Haaptproblem ass datt jidderee weider un eppes gleeft wat 2008 existéiert, wat Softwarekomponenten ugeet.

Wat d’Organisatioun vum Iwwerwaachungssystem ugeet, géif ech géing soen, datt... Projete mat enger kompetenter Iwwerwaachung net existéieren. An d'Situatioun ass sou schlecht, datt wann eppes fällt, et de Risiko besteet datt et net bemierkt gëtt - schliisslech ass jiddereen sécher datt "alles iwwerwaacht gëtt."
Vläicht gëtt alles iwwerwaacht. Mee wéi?

Mir hunn all eng Geschicht wéi déi folgend begéint: e gewëssen Devops, e bestëmmte Administrateur schafft, en Entwécklungsteam kënnt bei hinnen a seet - "mir sinn fräigelooss, elo iwwerwaachen." Monitor wat? Wéi funktionéiert et?

OK. Mir iwwerwaachen déi almoudesch Manéier. An et ännert sech schonn, an et stellt sech eraus datt Dir de Service A iwwerwaacht hutt, deen Service B gouf, dee mam Service C interagéiert. Awer d'Entwécklungsteam seet Iech: "Installéiert d'Software, et soll alles iwwerwaachen!"

Also wat huet geännert? - Alles huet sech verännert!

2008 Alles ass gutt

Et ginn e puer Entwéckler, ee Server, een Datebankserver. Et geet alles vun hei. Mir hunn e puer Informatiounen, mir installéieren zabbix, Nagios, Cacti. An da setzen mir kloer Alarmer op der CPU, op Diskoperatioun an op Disk Space. Mir maachen och e puer manuell Kontrollen fir sécherzestellen datt de Site reagéiert an datt Bestellungen an der Datebank ukommen. An dat ass et - mir si méi oder manner geschützt.

Wa mir d'Quantitéit vun der Aarbecht vergläicht, déi den Administrateur dunn gemaach huet fir d'Iwwerwaachung ze bidden, da war 98% dovun automatesch: déi Persoun, déi d'Iwwerwaachung mécht, muss verstoen wéi Zabbix installéiert gëtt, wéi se et konfiguréieren an Alarmer konfiguréieren. An 2% - fir extern Kontrollen: datt de Site reagéiert an eng Ufro un d'Datebank mécht, datt nei Bestellungen ukomm sinn.

Ass d'Iwwerwaachung dout? - Laang liewen Iwwerwachung

2010 D'Laascht wiisst

Mir fänken un de Web ze skaléieren, e Sichmotor derbäi. Mir wëllen sécherstellen datt de Produktkatalog all d'Produkter enthält. An déi Produktsich funktionnéiert. Dass d'Datebank funktionnéiert, datt Bestellunge gemaach ginn, datt de Site extern reagéiert a vun zwee Serveren reagéiert an de Benotzer net vum Site erausgehäit gëtt wärend en op en anere Server rebalancéiert ass, asw. Et gi méi Entitéite.

Ausserdeem bleift d'Entitéit verbonne mat Infrastruktur nach ëmmer déi gréisste am Kapp vum Manager. Et gëtt nach ëmmer eng Iddi a mengem Kapp datt déi Persoun déi d'Iwwerwaachung mécht déi Persoun ass déi Zabbix installéiere wäert an et fäeg ass ze konfiguréieren.

Awer zur selwechter Zäit erschéngt d'Aarbecht fir extern Kontrollen ze maachen, fir eng Rei vu Sichindexer Ufro Scripten ze kreéieren, e Set vu Scripte fir ze kontrolléieren ob d'Sich während dem Indexéierungsprozess ännert, e Set vu Scripten déi iwwerpréiwen ob Wueren un d'Transport Liwwerung Service, etc. a sou weider.

Ass d'Iwwerwaachung dout? - Laang liewen Iwwerwachung

Bemierkung: Ech hunn 3 Mol "e Set vu Skripte" geschriwwen. Dat heescht, dee fir d'Iwwerwaachung verantwortlech ass net méi deen deen einfach Zabbix installéiert. Dëst ass eng Persoun déi ufänkt ze codéieren. Awer näischt huet sech am Kapp vun der Equipe geännert.

Awer d'Welt ännert sech, gëtt ëmmer méi komplex. Eng Virtualiséierungsschicht a verschidde nei Systemer ginn derbäi. Si fänken un mateneen ze interagéieren. Wien sot "Räicht wéi Mikroservicer?" Awer all Service gesäit nach ëmmer aus wéi eng Websäit individuell. Mir kënnen derzou wenden a verstoen datt et déi néideg Informatioun gëtt a eleng funktionnéiert. A wann Dir en Administrateur sidd, deen dauernd an engem Projet involvéiert ass, dee sech zënter 5-7-10 Joer entwéckelt, sammelt dëst Wëssen: en neien Niveau erschéngt - Dir hutt et realiséiert, en aneren Niveau erschéngt - Dir hutt et realiséiert ...

Ass d'Iwwerwaachung dout? - Laang liewen Iwwerwachung

Mee selten begleet een e Projet fir 10 Joer.

Iwwerwaachungsmans Resumé

Ugeholl, Dir kommt zu engem neie Startup, deen direkt 20 Entwéckler agestallt huet, 15 Mikroservicer geschriwwen huet, an Dir sidd en Administrateur deen gesot gëtt: "Build CI / CD. Wann ech glift." Dir hutt CI/CD gebaut an op eemol héiert Dir: "Et ass schwéier fir eis mat der Produktioun an engem "Cube" ze schaffen, ouni ze verstoen wéi d'Applikatioun dran funktionnéiert. Maacht eis eng Sandkëscht am selwechte "Würfel".
Dir maacht eng Sandkëscht an dësem Kubus. Si soen Iech direkt: "Mir wëllen eng Bühndatenbank déi all Dag vun der Produktioun aktualiséiert gëtt, sou datt mir verstinn datt et op der Datebank funktionnéiert, awer gläichzäiteg d'Produktiounsdatenbank net verwinnt."

Dir wunnt an all deem. Et sinn nach 2 Wochen virun der Verëffentlechung, se soen Iech: "Elo loosst eis dat alles iwwerwaachen ..." Dat ass. Iwwerwaacht d'Clusterinfrastruktur, iwwerwaacht d'Mikroservicearchitektur, iwwerwaacht d'Aarbecht mat externe Servicer ...

A meng Kollegen huelen dat gewéinlecht Schema aus dem Kapp a soen: „Ma, hei ass alles kloer! Installéiert e Programm deen dëst alles iwwerwaacht. Jo, jo: Prometheus + Grafana + Plugins.
A si addéieren: "Dir hutt zwou Wochen, gitt sécher datt alles sécher ass."

A ville Projeten, déi mir gesinn, gëtt eng Persoun fir d'Iwwerwaachung zougewisen. Stellt Iech vir datt mir eng Persoun wëllen astellen fir Iwwerwaachung fir 2 Wochen ze maachen, a mir schreiwen e CV fir hien. Wéi eng Fäegkeeten soll dës Persoun hunn, alles wat mir bis elo gesot hunn?

  • Hie muss d'Iwwerwaachung an d'Spezifizitéite vun der Operatioun vun der Eiseninfrastruktur verstoen.
  • Hie muss d'Spezifizitéite vun der Iwwerwaachung vu Kubernetes verstoen (a jidderee wëll an de "Würfel" goen, well Dir kënnt aus alles abstrakt, verstoppen, well den Administrateur mat de Rescht këmmert) - selwer, seng Infrastruktur, a verstoen wéi d'Applikatiounen iwwerwaachen bannen.
  • Hie muss verstoen datt Servicer op speziell Manéier matenee kommunizéieren, an d'Spezifizitéite kennen wéi d'Servicer matenee interagéieren. Et ass ganz méiglech e Projet ze gesinn, wou verschidde Servicer synchron kommunizéieren, well et keng aner Manéier gëtt. Zum Beispill geet de Backend iwwer REST, iwwer gRPC an de Katalogservice, kritt eng Lëscht vu Produkter a bréngt se zréck. Dir kënnt hei net waarden. A mat anere Servicer funktionnéiert et asynchron. Transfert d'Bestellung un de Liwwerservice, schéckt e Bréif, asw.
    Du hues wuel schon vun all deem geschwommen? An den Admin, deen dat muss iwwerwaachen, gouf nach méi duercherneen.
  • Hie muss fäeg sinn ze plangen a richteg ze plangen - wéi d'Aarbecht ëmmer méi gëtt.
  • Hien muss also eng Strategie aus dem erstalltem Service erstellen fir ze verstoen wéi een se spezifesch iwwerwaacht. Hie brauch e Verständnis vun der Architektur vum Projet a senger Entwécklung + e Verständnis vun den Technologien déi an der Entwécklung benotzt ginn.

Loosst eis un en absolut normale Fall erënneren: e puer Servicer sinn am PHP, e puer Servicer sinn am Go, e puer Servicer sinn am JS. Si schaffen iergendwéi mateneen. Dëst ass wou de Begrëff "Mikroservice" hierkënnt: et gi sou vill individuell Systemer datt d'Entwéckler de Projet als Ganzt net verstinn. Een Deel vum Team schreift Servicer an JS déi eleng funktionnéieren an net wësse wéi de Rescht vum System funktionnéiert. Deen aneren Deel schreift Servicer am Python a stéiert net wéi aner Servicer funktionnéieren; si sinn an hirem eegene Beräich isoléiert. Déi drëtt ass Schreiwen Servicer an PHP oder soss eppes.
All dës 20 Leit sinn a 15 Servicer opgedeelt, an et gëtt nëmmen een Admin deen dat alles muss verstoen. Stop! mir hunn de System just op 15 Mikroservicer opgedeelt, well 20 Leit kënnen de ganze System net verstoen.

Awer et muss iergendwéi iwwerwaacht ginn ...

Wat ass d'Resultat? Als Resultat gëtt et eng Persoun déi mat alles kënnt wat d'ganz Team vun Entwéckler net verstinn, a gläichzäiteg muss hien och wëssen a fäeg maachen wat mir uewen uginn hunn - Hardwareinfrastruktur, Kubernetes Infrastruktur, etc.

Wat kann ech soen ... Houston, mir hu Problemer.

Iwwerwaachung vun engem modernen Softwareprojet ass e Softwareprojet u sech

Vun der falscher Iwwerzeegung datt Iwwerwaachung Software ass, entwéckelen mir e Glawen u Wonner. Awer Wonner, leider, geschéien net. Dir kënnt Zabbix net installéieren an erwaarden datt alles funktionnéiert. Et huet kee Sënn Grafana z'installéieren an ze hoffen datt alles an der Rei ass. Déi meescht vun der Zäit gëtt verbruecht fir d'Kontrollen vun der Operatioun vun de Servicer an hir Interaktioun mateneen ze organiséieren, ze kontrolléieren wéi extern Systemer funktionnéieren. Tatsächlech ginn 90% vun der Zäit net fir Scripten ze schreiwen, mee fir Software z'entwéckelen. An et soll vun engem Team gehandhabt ginn, dat d'Aarbecht vum Projet versteet.
Wann an dëser Situatioun eng Persoun an d'Iwwerwaachung geworf gëtt, da geschitt eng Katastroph. Wat ass wat iwwerall geschitt.

Zum Beispill ginn et verschidde Servicer, déi mateneen iwwer Kafka kommunizéieren. D'Bestellung ass ukomm, mir hunn e Message iwwer d'Bestellung un de Kafka geschéckt. Et gëtt e Service deen d'Informatioun iwwer d'Bestellung lauschtert an d'Wuer verschéckt. Et gëtt e Service deen Informatioun iwwer d'Bestellung lauschtert an e Bréif un de Benotzer schéckt. An dann erschéngen eng Rëtsch méi Servicer, a mir fänken un duercherneen ze ginn.

A wann Dir dëst och dem Administrateur an d'Entwéckler op der Bühn gitt, wann et eng kuerz Zäit virun der Verëffentlechung ass, muss d'Persoun dëse ganze Protokoll verstoen. Déi. E Projet vun dëser Skala hëlt eng bedeitend Zäit, an dëst soll an d'Systementwécklung berücksichtegt ginn.
Awer ganz dacks, besonnesch bei Startups, gesi mir wéi d'Iwwerwaachung bis spéider ausgestallt gëtt. "Elo wäerte mir e Proof of Concept maachen, mir wäerte mat lancéieren, loosse et falen - mir si prett fir ze offréieren. An da wäerte mir dat alles iwwerwaachen." Wann (oder wann) de Projet ufänkt Suen ze verdéngen, wëll d'Geschäft nach méi Features addéieren - well et ugefaang huet ze schaffen, also muss et weider ausgerullt ginn! An Dir sidd um Punkt wou Dir als éischt alles muss iwwerwaachen virdrun, wat net 1% vun der Zäit dauert, awer vill méi. An iwwregens, Entwéckler wäerte gebraucht ginn fir d'Iwwerwaachung, an et ass méi einfach hinnen un nei Features ze schaffen. Als Resultat ginn nei Feature geschriwwe, alles gëtt verschrauft, an Dir sidd an engem endlosen Deadlock.

Also wéi Dir e Projet vun Ufank un iwwerwaacht, a wat maache wann Dir e Projet kritt, dee muss iwwerwaacht ginn, awer Dir wësst net wou ufänken?

Als éischt musst Dir plangen.

Lyresch Digression: Ganz dacks fänken se mat Infrastruktur Iwwerwaachung un. Zum Beispill hu mir Kubernetes. Loosst eis ufänken Prometheus mat Grafana z'installéieren, Plugins z'installéieren fir de "Würfel" ze iwwerwaachen. Net nëmmen Entwéckler, awer och Administrateuren hunn déi onglécklech Praxis vun: "Mir installéieren dëse Plugin, awer de Plugin weess wahrscheinlech wéi et ze maachen." D'Leit fänken gär mat dem einfachen an einfachen un, anstatt mat de wichtegen Aktiounen. An Infrastruktur Iwwerwaachung ass einfach.

Als éischt, entscheede wat a wéi Dir wëllt iwwerwaachen, a wielt dann en Tool, well aner Leit kënnen net fir Iech denken. A sollen se? Aner Leit hunn un sech selwer geduecht, iwwer en universelle System - oder hu guer net geduecht wéi dëse Plugin geschriwwe gouf. A just well dëse Plugin 5 dausend Benotzer huet heescht net datt et vun all Notzung ass. Vläit gidd Dir de 5001. einfach well et virdru scho 5000 Leit waren.

Wann Dir ufänkt d'Infrastruktur ze iwwerwaachen an de Backend vun Ärer Applikatioun ophält ze reagéieren, verléieren all Benotzer d'Verbindung mat der mobiler Applikatioun. E Feeler wäert schéngen. Si kommen bei Iech a soen "D'Applikatioun funktionnéiert net, wat maacht Dir hei?" - "Mir iwwerwaachen." - "Wéi iwwerwaacht Dir wann Dir net gesitt datt d'Applikatioun net funktionnéiert?!"

  1. Ech gleewen datt Dir musst ufänken genau ze iwwerwaachen vum Entréespunkt vum Benotzer. Wann de Benotzer net gesäit datt d'Applikatioun funktionnéiert, dat ass et, et ass e Feeler. An d'Iwwerwaachungssystem soll fir d'éischt doriwwer warnen.
  2. An nëmmen dann kënne mir d'Infrastruktur iwwerwaachen. Oder maachen et parallel. Et ass méi einfach mat Infrastruktur - hei kënne mir endlech just Zabbix installéieren.
  3. An elo musst Dir op d'Wuerzelen vun der Applikatioun goen fir ze verstoen wou d'Saachen net funktionnéieren.

Meng Haaptidee ass datt d'Iwwerwaachung parallel mam Entwécklungsprozess soll goen. Wann Dir d'Iwwerwaachungsteam fir aner Aufgaben oflenkt (CI / CD erstellen, Sandboxen, Reorganisatioun vun Infrastrukturen), fänkt d'Iwwerwaachung un ze laachen an Dir kënnt ni mat der Entwécklung ophalen (oder fréier oder spéider musst Dir et stoppen).

Alles op Niveauen

Esou gesinn ech d’Organisatioun vun engem Iwwerwaachungssystem.

1) Applikatioun Niveau:

  • Iwwerwachung Applikatioun Affär Logik;
  • Iwwerwaachung vu Gesondheetsmetriken vu Servicer;
  • Integratioun Iwwerwachung.

2) Infrastrukturniveau:

  • Iwwerwaachung vun der Orchestratiounsniveau;
  • System Software Iwwerwachung;
  • Eisen Niveau Iwwerwaachung.

3) Erëm den Uwendungsniveau - awer als Ingenieursprodukt:

  • Sammelen an Iwwerwachung vun Applikatioun Logbicher;
  • APM;
  • tracing.

4) Alarm:

  • Organisatioun vun engem Warnungssystem;
  • Organisatioun vun engem Flicht System;
  • Organisatioun vun enger "Wëssensbasis" a Workflow fir Incidentveraarbechtung.

wichteg: Mir kommen op d'Alarm net no, mä direkt! Et ass net néideg fir Iwwerwaachung ze starten an "irgendwéi méi spéit" erauszefannen wien Alarmer kritt. Ëmmerhin, wat ass d'Aufgab vun der Iwwerwaachung: ze verstoen, wou am System eppes falsch fonctionnéiert, an déi richteg Leit doriwwer ze loossen. Wann Dir dëst bis zum Schluss léisst, da wäerte déi richteg Leit wëssen datt eppes falsch leeft nëmmen andeems Dir "näischt funktionnéiert fir eis."

Applikatioun Layer - Business Logik Iwwerwachung

Hei schwätze mir iwwer d'Tatsaach ze kontrolléieren datt d'Applikatioun fir de Benotzer funktionnéiert.

Dëse Niveau soll während der Entwécklungsphase gemaach ginn. Zum Beispill hu mir e bedingte Prometheus: et geet op de Server deen d'Kontrollen mécht, zitt den Endpunkt, an den Endpunkt geet a kontrolléiert d'API.

Wann dacks gefrot fir d'Homepage ze iwwerwaachen fir sécher ze sinn datt de Site funktionnéiert, ginn d'Programméierer e Grëff, deen all Kéier gezunn ass, fir sécher ze stellen datt d'API funktionnéiert. A Programméierer op dësem Moment nach huelen a schreiwen /api/test/helloworld
Deen eenzege Wee fir sécher ze sinn datt alles funktionnéiert? - Nee!

  • Esou Kontrollen erstellen ass wesentlech d'Aufgab vun den Entwéckler. Eenheetstester solle vun de Programméierer geschriwwe ginn, déi de Code schreiwen. Well wann Dir et un den Admin leckt, "Dude, hei ass eng Lëscht vun API-Protokoller fir all 25 Funktiounen, iwwerwaacht w.e.g. alles!" - näischt geet eraus.
  • Wann Dir "Hallo Welt" dréckt, wäert keen jee wëssen datt d'API soll a funktionnéiert. All API Ännerung muss zu enger Ännerung vun de Schecken féieren.
  • Wann Dir schonn esou e Problem hutt, stoppt d'Features an verdeelt Entwéckler déi dës Schecken schreiwen, oder d'Verloschter akzeptéieren, akzeptéieren datt näischt iwwerpréift gëtt a wäert versoen.

Technesch Tipps:

  • Gitt sécher en externen Server z'organiséieren fir Schecken ze organiséieren - Dir musst sécher sinn datt Äre Projet no baussen zougänglech ass.
  • Organiséiert Kontrollen iwwer de ganze API Protokoll, net nëmmen eenzel Endpunkte.
  • Erstellt e Prometheus-Endpunkt mat den Testresultater.

Uwendungsschicht - Gesondheetsmetriken Iwwerwaachung

Elo schwätze mir iwwer extern Gesondheetsmetriken vu Servicer.

Mir hunn décidéiert datt mir all d'"Handle" vun der Applikatioun iwwerwaachen mat externe Kontrollen, déi mir vun engem externen Iwwerwaachungssystem nennen. Awer dëst sinn d'"Griffen", déi de Benotzer "gesinn". Mir wëllen sécher sinn datt eis Servicer selwer funktionnéieren. Et gëtt eng besser Geschicht hei: K8s huet Gesondheetschecken, sou datt op d'mannst de "Cube" selwer iwwerzeegt ka ginn datt de Service funktionnéiert. Awer d'Halschent vun de Schecken, déi ech gesinn hunn, sinn dee selwechte Print "Hallo Welt". Déi. Also zitt hien eemol nom Ofbau, hien huet geäntwert datt alles gutt ass - dat ass alles. An de Service, wann en seng eege API ubitt, huet eng riesech Unzuel vun Entréespunkte fir déi selwecht API, déi och muss iwwerwaacht ginn, well mir wëllen wëssen datt et funktionnéiert. A mir iwwerwaachen et schonn dobannen.

Wéi kann een dat technesch richteg ëmsetzen: all Service stellt en Endpunkt iwwer seng aktuell Leeschtung aus, an an de Grafike vu Grafana (oder all aner Applikatioun) gesi mir de Status vun all de Servicer.

  • All API Ännerung muss zu enger Ännerung vun de Schecken féieren.
  • Erstellt en neie Service direkt mat Gesondheetsmetriken.
  • En Administrateur kann un d'Entwéckler kommen a froen "Füügt mir e puer Features derbäi fir datt ech alles verstinn an Informatioun iwwer dëst a mengem Iwwerwaachungssystem addéieren." Awer d'Entwéckler äntweren normalerweis: "Mir wäerten näischt zwou Woche virun der Verëffentlechung derbäisetzen."
    Loosst d'Entwécklungsmanager wëssen datt et sou Verloschter gëtt, loosst d'Gestioun vun den Entwécklungsmanager och wëssen. Well wann alles fällt, rufft nach ëmmer een a verlaangt de "konstant falende Service" ze iwwerwaachen (c)
  • Iwwregens, allokéieren Entwéckler fir Plugins fir Grafana ze schreiwen - dëst wäert eng gutt Hëllef fir Administrateuren sinn.

Applikatioun Layer - Integratioun Iwwerwachung

Integratioun Iwwerwachung konzentréiert sech op d'Iwwerwaachung vu Kommunikatiounen tëscht Geschäftskriteschen Systemer.

Zum Beispill ginn et 15 Servicer déi matenee kommunizéieren. Dëst sinn net méi separat Siten. Déi. mir kënnen de Service net eleng zéien, kréien /helloworld a verstinn datt de Service leeft. Well den Uerdnungswebservice muss Informatioun iwwer d'Bestellung un de Bus schécken - vum Bus, muss de Lagerservice dës Noriicht kréien a weider domat schaffen. An den E-Mail-Verdeelungsservice muss dat iergendwéi weider veraarbecht, etc.

Deementspriechend kënne mir net verstoen, op all eenzelne Service pochen, datt et alles funktionnéiert. Well mir hunn e bestëmmte Bus duerch deen alles kommunizéiert an interagéiert.
Dofir soll dës Etapp d'Etapp vun Testservicer fir Interaktioun mat anere Servicer markéieren. Et ass onméiglech d'Kommunikatiounsiwwerwaachung ze organiséieren andeems de Message Broker iwwerwaacht. Wann et e Service gëtt deen Daten erausginn an e Service deen se kritt, wann Dir de Broker iwwerwaacht, gesi mir nëmmen Daten déi vu Säit zu Säit fléien. Och wa mir et iergendwéi fäerdeg bruecht hunn d'Interaktioun vun dësen Donnéeën intern ze iwwerwaachen - datt e bestëmmte Produzent d'Donnéeën postt, een se liest, dëse Floss geet weider op Kafka - dëst wäert eis nach ëmmer keng Informatioun ginn, wann ee Service de Message an enger Versioun geschéckt huet , awer deen anere Service huet dës Versioun net erwaart an huet se iwwersprangen. Mir wëssen net iwwer dëst, well d'Servicer eis soen datt alles funktionnéiert.

Wat ech recommandéieren ze maachen:

  • Fir synchron Kommunikatioun: den Endpunkt mécht Ufroe fir verbonne Servicer. Déi. mir huelen dësen Endpunkt, lafen e Skript am Service, deen op all Punkte geet a seet "Ech kann dohinner zéien, an dohinner zéien, ech kann dohinner zéien ..."
  • Fir asynchron Kommunikatioun: Entréeën Messagen - den Endpunkt kontrolléiert de Bus fir Testmeldungen a weist den Veraarbechtungsstatus.
  • Fir asynchron Kommunikatioun: erausginn Messagen - den Endpunkt schéckt Testmeldungen un de Bus.

Wéi et normalerweis geschitt: Mir hunn e Service, deen Daten an de Bus werft. Mir kommen op dëse Service a froen Iech eis iwwer seng Integratiounsgesondheet ze soen. A wann de Service e Message iergendwou weider muss produzéieren (WebApp), da wäert en dësen Testmeldung produzéieren. A wa mir e Service op der OrderProcessing Säit lafen, postt et fir d'éischt wat et onofhängeg poste kann, a wann et e puer ofhängeg Saache sinn, da liest en eng Rei Testmeldungen aus dem Bus, versteet datt et se veraarbecht kann, mellen an , wann néideg, post se weider, an doriwwer seet hien - alles ass ok, ech liewen.

Ganz dacks héiere mir d'Fro "Wéi kënne mir dëst op Kampfdaten testen?" Zum Beispill schwätze mir iwwer deeselwechte Bestellungsservice. D'Bestellung schéckt Messagen un d'Lager, wou d'Wuer ofgeschriwwe ginn: mir kënnen dat net op Kampfdaten testen, well "meng Wueren ginn ofgeschriwwe!" Léisung: Plan dëse ganzen Test am Ufank. Dir hutt och Eenheetstester déi Spott maachen. Also, maacht et op engem méi déif Niveau wou Dir e Kommunikatiounskanal hutt deen d'Operatioun vum Geschäft net schued.

Infrastrukturniveau

Infrastruktur Iwwerwaachung ass eppes wat laang als Iwwerwaachung selwer ugesi gouf.

  • Infrastruktur Iwwerwachung kann a soll als separat Prozess lancéiert ginn.
  • Dir sollt net mat Infrastruktur Iwwerwachung op engem lafende Projet ufänken, och wann Dir wierklech wëllt. Dëst ass e Péng fir all Devops. "Fir d'éischt iwwerwaachen ech de Cluster, ech iwwerwaachen d'Infrastruktur" - d.h. Als éischt wäert et iwwerwaachen wat drënner läit, awer wäert net an d'Applikatioun goen. Well d'Applikatioun eng onverständlech Saach fir Devops ass. Et gouf him ausgelaf, an hie versteet net wéi et funktionnéiert. Mä hie versteet d'Infrastruktur a fänkt domat un. Awer nee - Dir musst ëmmer d'Applikatioun als éischt iwwerwaachen.
  • Gitt net iwwer Bord mat der Unzuel vun den Alarmer. Wann Dir d'Komplexitéit vun de modernen Systemer berécksiichtegt, fléien Alarmer permanent, an Dir musst iergendwéi mat dëser Rëtsch Alarmer liewen. An den Affekot, no honnert vun den nächsten Alarmer gekuckt huet, wäert entscheeden "Ech wëll net driwwer nodenken." Alarmer sollen nëmmen iwwer kritesch Saachen informéieren.

Uwendungsniveau als Geschäftsunitéit

Schlëssel Punkten:

  • ELK. Dëst ass den Industriestandard. Wann Dir aus iergendengem Grond keng Logbicher aggregéiert, fänkt un dat direkt un.
  • APM. Extern APMs als e Wee fir séier Applikatiounsiwwerwaachung zouzemaachen (NewRelic, BlackFire, Datadog). Dir kënnt dës Saach temporär installéieren fir op d'mannst iergendwéi ze verstoen wat mat Iech lass ass.
  • Tracing. An Dosende vu Mikroservicer musst Dir alles tracéieren, well d'Ufro net méi eleng lieft. Et ass ganz schwéier méi spéit ze addéieren, also ass et besser fir direkt Tracing an der Entwécklung ze plangen - dat ass d'Aarbecht an d'Utilitéit vun den Entwéckler. Wann Dir et nach net implementéiert hutt, implementéiert et! See Jaeger/Zipkin

Alarméieren

  • Organisatioun vun engem Notifikatiounssystem: a Bedingungen fir eng Rëtsch Saachen ze iwwerwaachen, sollt et e vereenegt System fir Notifikatiounen schécken. Dir kënnt zu Grafana. Am Westen benotzt jiddereen PagerDuty. D'Alerte solle kloer sinn (z.B. vu wou se hierkommen...). An et ass ubruecht ze kontrolléieren datt Notifikatiounen iwwerhaapt kritt ginn
  • Organisatioun vun engem Flicht System: Alarmer sollen net jidderengem geschéckt ginn (entweder jidderee reagéiert an enger Mass, oder kee reagéiert). D'Entwéckler mussen och oncall sinn: gitt sécher d'Verantwortungsberäicher ze definéieren, kloer Instruktiounen ze maachen an dran ze schreiwen, wien genee e Méindeg a Mëttwoch uruffe soll, a wien en Dënschdeg a Freideg uruffe sollen (soss ruffe se kee souguer an der Event vun engem grousse Problem - si fäerten Iech z'erwächen oder ze stéieren : d'Leit ruffen allgemeng net gär aner Leit un, besonnesch nuets). An erklärt datt d'Hëllef froen net en Indikator vun der Inkompetenz ass ("Ech froen ëm Hëllef, dat heescht datt ech e schlechten Aarbechter sinn"), encouragéieren Ufroe fir Hëllef.
  • Organisatioun vun enger "Wëssensbasis" a Workflow fir Tëschefallveraarbechtung: fir all schlëmmen Zwëschefall soll e Postmortem geplangt ginn, an als temporär Moossnam sollen Aktiounen opgeholl ginn, déi den Tëschefall léisen. A maacht et eng Praxis datt widderholl Alarmer eng Sënn sinn; se mussen am Code oder Infrastrukturaarbecht fixéiert ginn.

Technologie Stack

Loosst eis virstellen datt eise Stack wéi follegt ass:

  • Datensammlung - Prometheus + Grafana;
  • Log Analyse - ELK;
  • fir APM oder Tracing - Jaeger (Zipkin).

Ass d'Iwwerwaachung dout? - Laang liewen Iwwerwachung

D'Wiel vun Optiounen ass net kritesch. Well wann Dir am Ufank verstanen hutt wéi Dir de System iwwerwaacht an e Plang schreift, da fänkt Dir un Tools ze wielen fir Är Ufuerderungen ze passen. D'Fro ass wat Dir gewielt hutt fir iwwerhaapt ze iwwerwaachen. Well vläicht passt dat Tool dat Dir am Ufank gewielt hutt guer net Ären Ufuerderunge.

E puer technesch Punkten déi ech zënter kuerzem iwwerall gesinn:

De Prometheus gëtt an de Kubernetes gedréckt - wien ass domat erauskomm?! Wann Äre Stärekoup Crash, wat wäert Dir maachen? Wann Dir e komplexe Stärekoup bannen hutt, da sollt et eng Aart Iwwerwaachungssystem am Stärekoup sinn, an e puer dobaussen, déi Daten aus dem Stärekoup sammelen.

Am Cluster sammele mir Logbicher an alles anescht. Awer den Iwwerwaachungssystem muss dobausse sinn. Ganz oft, an engem Cluster wou Promtheus intern installéiert ass, ginn et och Systemer déi extern Kontrollen vun der Operatioun vum Site maachen. Wat wann Är Verbindunge mat der Äussewelt erofgaang sinn an d'Applikatioun net funktionnéiert? Et stellt sech eraus datt alles bannen gutt ass, awer et mécht d'Saachen net méi einfach fir d'Benotzer.

Conclusiounen

  • Iwwerwachung Entwécklung ass net d'Installatioun vun Utilities, mee d'Entwécklung vun engem Software Produkt. 98% vun der heiteger Iwwerwaachung ass Kodéierung. Kodéieren a Servicer, codéieren extern Schecken, iwwerpréift extern Servicer, an dat ass alles.
  • Offäll Är Entwéckler Zäit net op Iwwerwaachung: et kann bis zu 30% vun hirer Aarbecht daueren, awer et ass et wäert.
  • Devops, maach der keng Suergen datt Dir eppes net iwwerwaache kënnt, well verschidde Saache sinn e ganz anere Wee fir ze denken. Dir waart kee Programméierer, an d'Iwwerwaachungsaarbecht ass genau hir Aarbecht.
  • Wann de Projet scho leeft an net iwwerwaacht (an Dir sidd e Manager), allokéiert Ressourcen fir Iwwerwaachung.
  • Wann de Produit schonn an der Produktioun ass, an Dir sidd en Devops, deen gesot huet "Iwwerwaachung opzestellen" - probéiert d'Gestioun z'erklären, wat ech dat alles geschriwwen hunn.

Dëst ass eng erweidert Versioun vum Bericht op der Saint Highload++ Konferenz.

Wann Dir un meng Iddien a Gedanken doriwwer an Zesummenhang Themen interesséiert sidd, da kënnt Dir hei liesen de Kanal 🙂

Source: will.com

Setzt e Commentaire