Monitoraġġ bħala servizz: sistema modulari għall-arkitettura tal-mikroservizz

Illum, minbarra l-kodiċi monolitiku, il-proġett tagħna jinkludi għexieren ta 'mikroservizzi. Kull wieħed minnhom jeħtieġ li jiġi mmonitorjat. Li tagħmel dan fuq skala bħal din bl-użu ta 'inġiniera DevOps hija problematika. Żviluppajna sistema ta’ monitoraġġ li taħdem bħala servizz għall-iżviluppaturi. Jistgħu b'mod indipendenti jiktbu metriċi fis-sistema ta 'monitoraġġ, jużawhom, jibnu dashboards ibbażati fuqhom, u jehmżu twissijiet magħhom li se jiġu attivati ​​meta jintlaħqu l-valuri limitu. Għall-inġiniera DevOps, infrastruttura u dokumentazzjoni biss.

Din il-kariga hija traskrizzjoni tad-diskors tiegħi ma' tagħna sezzjonijiet fil-RIT++. Ħafna nies talbuna nagħmlu verżjonijiet tat-test tar-rapporti minn hemm. Jekk kont fil-konferenza jew rajt il-video, ma ssib xejn ġdid. U kulħadd - merħba lill-qattus. Jien ngħidlek kif wasalna għal sistema bħal din, kif taħdem u kif qed nippjanaw li naġġornawha.

Monitoraġġ bħala servizz: sistema modulari għall-arkitettura tal-mikroservizz

Il-passat: skemi u pjanijiet

Kif wasalna għas-sistema ta' monitoraġġ attwali? Sabiex twieġeb din il-mistoqsija, trid tmur għall-2015. Hekk kien jidher allura:

Monitoraġġ bħala servizz: sistema modulari għall-arkitettura tal-mikroservizz

Kellna madwar 24 node li kienu responsabbli għall-monitoraġġ. Hemm pakkett sħiħ ta 'kuruni differenti, skripts, daemons li b'xi mod jimmonitorjaw xi ħaġa, jibagħtu messaġġi, u jwettqu funzjonijiet. Ħsibna li aktar ma mmorru, inqas tkun vijabbli sistema bħal din. M'hemm l-ebda skop li tiżviluppaha: hija wisq ingombranti.
Iddeċidejna li nagħżlu dawk l-elementi ta’ monitoraġġ li se nżommu u niżviluppaw, u dawk li se nabbandunaw. Kienu minnhom 19. Baqgħu biss grafiti, aggregaturi u Grafana bħala dashboard. Imma kif se tkun is-sistema l-ġdida? Bħal dan:

Monitoraġġ bħala servizz: sistema modulari għall-arkitettura tal-mikroservizz

Għandna ħażna ta 'metriċi: dawn huma grafiti, li se jkunu bbażati fuq drives SSD veloċi, dawn huma ċerti aggregaturi għall-metriċi. Li jmiss - Grafana għall-wiri dashboards u Moira għat-twissija. Ridna wkoll niżviluppaw sistema ta’ tiftix għal anomaliji.

Standard: Monitoraġġ 2.0

Hekk dehru l-pjanijiet fl-2015. Imma kellna nippreparaw mhux biss l-infrastruttura u s-servizz innifsu, iżda wkoll id-dokumentazzjoni għaliha. Aħna żviluppajna standard korporattiv għalina nfusna, li nsejħu monitoraġġ 2.0. X'kienu r-rekwiżiti għas-sistema?

  • disponibbiltà kostanti;
  • intervall tal-ħażna tal-metriċi = 10 sekondi;
  • ħażna strutturata ta' metriċi u dashboards;
  • SLA > 99,99%
  • ġbir ta' metriċi ta' avvenimenti permezz ta' UDP (!).

Kellna l-UDP għax għandna fluss kbir ta’ traffiku u avvenimenti li jiġġeneraw metriċi. Jekk tiktebhom kollha fil-grafita f'daqqa, il-ħażna tiġġarraf. Aħna għażilna wkoll prefissi tal-ewwel livell għall-metriċi kollha.

Monitoraġġ bħala servizz: sistema modulari għall-arkitettura tal-mikroservizz

Kull wieħed mill-prefissi għandu xi proprjetà. Hemm metriċi għal servers, netwerks, kontenituri, riżorsi, applikazzjonijiet, eċċ. Ġie implimentat iffiltrar ċar, strett u ittajpjat, fejn naċċettaw metriċi tal-ewwel livell u sempliċement inħallu l-bqija. Hekk ippjanajna din is-sistema fl-2015. X'hemm fil-preżent?

Preżenti: dijagramma tal-interazzjoni tal-komponenti tal-monitoraġġ

L-ewwelnett, aħna nissorveljaw l-applikazzjonijiet: il-kodiċi PHP, l-applikazzjonijiet u l-mikroservizzi tagħna - fil-qosor, dak kollu li jiktbu l-iżviluppaturi tagħna. L-applikazzjonijiet kollha jibagħtu metriċi permezz tal-UDP lill-aggregatur Brubeck (statsd, miktuba mill-ġdid f'Ċ). Irriżulta li kien l-aktar mgħaġġel fit-testijiet sintetiċi. U jibgħat il-metriċi diġà aggregati lil Graphite permezz tat-TCP.

Għandu tip ta 'metriċi msejħa tajmers. Din hija ħaġa konvenjenti ħafna. Pereżempju, għal kull konnessjoni tal-utent għas-servizz, inti tibgħat metrika bil-ħin tar-rispons lil Brubeck. Daħlu miljun tweġiba, iżda l-aggregatur irritorna biss 10 metriċi. Għandek in-numru ta 'nies li ġew, il-ħin massimu, minimu u medju ta' rispons, il-medjan u 4 perċentili. Imbagħad id-dejta tiġi trasferita għal Graphite u narawha kollha ħajjin.

Għandna wkoll aggregazzjoni għal metriċi fuq ħardwer, softwer, metriċi tas-sistema u s-sistema ta 'monitoraġġ Munin l-antika tagħna (ħadmet għalina sal-2015). Aħna niġbru dan kollu permezz tad-daemon C CollectD (għandha mazz sħiħ ta 'plugins differenti mibnijin fih, tista' tistħarreġ ir-riżorsi kollha tas-sistema ospitanti li fuqha hija installata, speċifika biss fil-konfigurazzjoni fejn tikteb id-dejta) u ikteb id-dejta lil Graphite permezz tagħha. Jappoġġja wkoll plugins python u skripts tal-qoxra, sabiex tkun tista 'tikteb is-soluzzjonijiet tad-dwana tiegħek: CollectD se jiġbor din id-dejta minn ospitanti lokali jew remot (jekk wieħed jassumi Curl) u jibgħatha lil Graphite.

Imbagħad nibagħtu l-metriċi kollha li ġbarna lil Carbon-c-relay. Din hija s-soluzzjoni Carbon Relay minn Graphite, modifikata f'C. Dan huwa router li jiġbor il-metriċi kollha li nibagħtu mill-aggregaturi tagħna u jnaqqashom lejn in-nodi. Ukoll fl-istadju tar-rotta, jiċċekkja l-validità tal-metriċi. L-ewwelnett, għandhom jikkorrispondu għall-iskema tal-prefiss li wrejt qabel u, it-tieni, huma validi għall-grafita. Inkella se jinżlu.

Carbon-c-relay imbagħad jibgħat il-metriċi lill-cluster Graphite. Aħna nużaw Carbon-cache, miktuba mill-ġdid f'Go, bħala l-ħażna ewlenija tal-metriċi. Go-carbon, minħabba l-multithreading tiegħu, jisboq bil-bosta Carbon-cache. Jirċievi data u jiktebha fuq diski bl-użu tal-pakkett whisper (standard, miktub f'python). Sabiex naqraw data mill-ħażniet tagħna, nużaw l-API Graphite. Huwa ħafna aktar mgħaġġel minn Graphite WEB standard. X'jiġri mid-dejta li jmiss?

Huma jmorru Grafana. Aħna nużaw il-clusters tal-grafita tagħna bħala s-sors ewlieni tad-dejta, kif ukoll għandna Grafana bħala interface tal-web għall-wiri tal-metriċi u l-bini ta’ dashboards. Għal kull wieħed mis-servizzi tagħhom, l-iżviluppaturi joħolqu d-dashboard tagħhom stess. Imbagħad jibnu graffs ibbażati fuqhom, li juru l-metriċi li jiktbu mill-applikazzjonijiet tagħhom. Minbarra Grafana, għandna wkoll SLAM. Dan huwa dimonju python li jikkalkula SLA ibbażat fuq data mill-grafita. Kif diġà għedt, għandna diversi tużżani mikroservizzi, li kull wieħed minnhom għandu r-rekwiżiti tiegħu. Bl-użu SLAM, immorru għad-dokumentazzjoni u nqabbluha ma 'dak li hemm fil-Graphite u nqabblu kemm ir-rekwiżiti jaqblu mad-disponibbiltà tas-servizzi tagħna.

Ejja mmorru aktar: twissija. Huwa organizzat bl-użu ta 'sistema b'saħħitha - Moira. Hija indipendenti minħabba li għandha l-Graphite tagħha taħt il-barnuża. Żviluppat mill-guys minn SKB "Kontur", miktub f'python u Go, sors kompletament miftuħ. Moira tirċievi l-istess fluss li jidħol fil-grafiti. Jekk għal xi raġuni l-ħażna tiegħek tmut, it-twissija tiegħek xorta se taħdem.

Aħna skjerati Moira f'Kubernetes; juża grupp ta 'servers Redis bħala d-database prinċipali. Ir-riżultat kien sistema li tollera l-ħsarat. Tqabbel in-nixxiegħa ta 'metriċi mal-lista ta' triggers: jekk ma jkunx hemm referenza fiha, allura twaqqa' l-metrika. Għalhekk huwa kapaċi jiddiġerixxi gigabytes ta 'metriċi kull minuta.

Aħna mehmuż ukoll LDAP korporattiv miegħu, li bl-għajnuna tiegħu kull utent tas-sistema korporattiva jista 'joħloq notifiki għalihom infushom ibbażati fuq triggers eżistenti (jew maħluqa ġodda). Peress li Moira fiha Graphite, tappoġġja l-karatteristiċi kollha tagħha. Allura l-ewwel tieħu l-linja u tikkopjaha fi Grafana. Ara kif id-dejta tintwera fuq il-graffs. U mbagħad tieħu l-istess linja u tikkopjaha f'Moira. Inti hang bil-limiti u tikseb twissija fl-output. Biex tagħmel dan kollu, m'għandekx bżonn xi għarfien speċifiku. Moira tista 'twissija permezz ta' SMS, email, Jira, Slack... Tappoġġja wkoll l-eżekuzzjoni ta 'skripts tad-dwana. Meta jiġrilha trigger, u hija sottoskritta għal skript personalizzat jew binarju, hija tmexxiha u tibgħat JSON għal stdin għal dan binarju. Għaldaqstant, il-programm tiegħek għandu jparsah. X'se tagħmel b'dan il-JSON huwa f'idejk. Jekk trid, ibgħatha lil Telegram, jekk trid, iftaħ kompiti f'Jira, agħmel dak kollu.

Aħna nużaw ukoll l-iżvilupp tagħna stess għat-twissija - Imagotag. Adattajna l-pannell, li normalment jintuża għal tikketti tal-prezzijiet elettroniċi fil-ħwienet, biex jaqbel mal-bżonnijiet tagħna. Ġibna triggers minn Moira għaliha. Tindika f'liema stat jinsabu u meta seħħew. Uħud mill-ġuvni tal-iżvilupp abbandunaw notifiki fi Slack u email favur dan il-panel.

Monitoraġġ bħala servizz: sistema modulari għall-arkitettura tal-mikroservizz

Ukoll, peress li aħna kumpanija progressiva, aħna mmonitorjajna wkoll Kubernetes f'din is-sistema. Aħna inkludewha fis-sistema bl-użu ta 'Heapster, li installajna fil-cluster, tiġbor id-dejta u tibgħatha lil Graphite. Bħala riżultat, id-dijagramma tidher bħal din:

Monitoraġġ bħala servizz: sistema modulari għall-arkitettura tal-mikroservizz

Komponenti ta' Monitoraġġ

Hawnhekk hawn lista ta' links għall-komponenti li użajna għal dan il-kompitu. Kollha kemm huma huma sors miftuħ.

Grafita:

Carbon-c-relay:

github.com/grobian/carbon-c-relay

Brubeck:

github.com/github/brubeck

Miġbura:

collectd.org

Moira:

github.com/moira-alert

Grafana:

grafana.com

Heapster:

github.com/kubernetes/heapster

Statistika

U hawn xi numri dwar kif taħdem is-sistema għalina.

Aggregatur (brubeck)

Numru ta 'metriċi: ~ 300/sec
Intervall biex jintbagħtu metriċi lil Graphite: 30 sek
Użu tar-riżorsi tas-server: ~ 6% CPU (qed nitkellmu dwar servers sħaħ); ~ 1Gb RAM; ~3 Mbps LAN

Grafit (go-carbon)

Numru ta 'metriċi: ~ 1 / min
Intervall tal-aġġornament tal-metriċi: 30 sek
Skema ta' ħażna ta' metriċi: 30sec 35d, 5min 90d, 10min 365d (jtik tifhem x'jiġri mis-servizz fuq perjodu twil ta' żmien)
Użu tar-riżorsi tas-server: ~ 10% CPU; ~ 20Gb RAM; ~30 Mbps LAN

Flessibilità

Aħna ta 'Avito verament napprezzaw il-flessibbiltà fis-servizz ta' monitoraġġ tagħna. Għaliex fil-fatt irriżulta hekk? L-ewwelnett, il-komponenti tiegħu huma interkambjabbli: kemm il-komponenti nfushom kif ukoll il-verżjonijiet tagħhom. It-tieni, l-appoġġ. Peress li l-proġett kollu huwa sors miftuħ, tista 'teditja l-kodiċi lilek innifsek, tagħmel bidliet, u timplimenta funzjonijiet li mhumiex disponibbli barra mill-kaxxa. Jintużaw munzelli pjuttost komuni, prinċipalment Go u Python, għalhekk dan isir b'mod pjuttost sempliċi.

Hawn eżempju ta 'problema reali. Metrika fil-Graphite hija fajl. Għandu isem. Isem tal-fajl = isem metriku. U hemm mod kif naslu s'hemm. L-ismijiet tal-fajls fil-Linux huma limitati għal 255 karattru. U għandna (bħala "klijenti interni") guys mid-dipartiment tad-database. Jgħidulna: “Irridu nissorveljaw il-mistoqsijiet SQL tagħna. U mhumiex 255 karattru, iżda 8 MB kull wieħed. Irridu nuruhom fi Grafana, naraw il-parametri għal din it-talba, u saħansitra aħjar, irridu naraw il-quċċata ta 'talbiet bħal dawn. Ikun kbir jekk jintwera f'ħin reali. Ikun tassew frisk li tpoġġihom fl-allert.”

Monitoraġġ bħala servizz: sistema modulari għall-arkitettura tal-mikroservizz
Il-mistoqsija SQL eżempju hija meħuda bħala eżempju minn sit postgrespro.ru

Aħna waqqafna server Redis u nużaw il-plugins Collectd tagħna, li jmorru għand Postgres u jieħdu d-dejta kollha minn hemm, u nibagħtu metriċi lil Graphite. Imma nissostitwixxu l-isem metriku b'hashes. Aħna fl-istess ħin nibagħtu l-istess hash lil Redis bħala ċavetta, u l-mistoqsija SQL kollha bħala valur. Kulma rridu nagħmlu hu li niżguraw li Grafana tista’ tmur għand Redis u tieħu din l-informazzjoni. Qed niftħu l-API Graphite għax... din hija l-interface ewlenija għall-interazzjoni tal-komponenti kollha tal-monitoraġġ bil-grafita, u aħna nidħlu funzjoni ġdida hemmhekk imsejħa aliasByHash() - minn Grafana niksbu l-isem tal-metrika, u nużawha f'talba lil Redis bħala ċavetta, f' rispons irridu nġibu l-valur taċ-ċavetta, li hija l-"mistoqsija SQL" tagħna ". Għalhekk, urejna fi Grafana wirja ta 'mistoqsija SQL, li fit-teorija kienet impossibbli li tintwera hemm, flimkien ma' statistika dwarha (sejħiet, ringieli, total_time, ...).

Riżultati ta '

Disponibbiltà Is-servizz ta 'monitoraġġ tagħna huwa disponibbli 24/7 minn kwalunkwe applikazzjoni u kwalunkwe kodiċi. Jekk għandek aċċess għal faċilitajiet ta 'ħażna, tista' tikteb dejta lis-servizz. Il-lingwa mhix importanti, id-deċiżjonijiet mhumiex importanti. Għandek bżonn biss tkun taf kif tiftaħ sokit, poġġi metrika hemmhekk u tagħlaq is-sokit.

Affidabilità Il-komponenti kollha huma tolleranti għall-ħsarat u jimmaniġġjaw it-tagħbijiet tagħna sew.

Barriera baxxa għad-dħul. Sabiex tuża din is-sistema, m'għandekx bżonn titgħallem lingwi ta 'programmar u mistoqsijiet f'Grafana. Iftaħ l-applikazzjoni tiegħek, daħħal socket fiha li tibgħat metriċi lil Graphite, agħlaqha, tiftaħ Grafana, oħloq dashboards hemmhekk u tħares lejn l-imġieba tal-metriċi tiegħek, tirċievi notifiki permezz ta 'Moira.

Indipendenza. Tista 'tagħmel dan kollu lilek innifsek, mingħajr l-għajnuna ta' inġiniera DevOps. U dan huwa vantaġġ, għaliex tista 'tissorvelja l-proġett tiegħek bħalissa, m'għandekx għalfejn titlob lil ħadd - la biex tibda taħdem jew biex tagħmel bidliet.

Għal xiex qed nimmiraw?

Dak kollu mniżżel hawn taħt mhuwiex biss ħsibijiet astratti, iżda xi ħaġa li lejha tal-inqas ittieħdu l-ewwel passi.

  1. Rilevatur ta' anomaliji. Irridu noħolqu servizz li jmur għall-ħażniet tal-Graphite tagħna u niċċekkja kull metrika billi tuża diversi algoritmi. Diġà hemm algoritmi li rridu naraw, hemm data, nafu kif naħdmu magħha.
  2. Metadata. Għandna ħafna servizzi, jinbidlu maż-żmien, bħall-persuni li jaħdmu magħhom. Iż-żamma kostanti tad-dokumentazzjoni manwalment mhijiex għażla. Huwa għalhekk li issa qed ninkorporaw metadata fil-mikroservizzi tagħna. Jistqarr min żviluppaha, il-lingwi li jinteraġixxi magħhom, ir-rekwiżiti tal-SLA, fejn u lil min għandhom jintbagħtu n-notifiki. Meta jiġi skjerat servizz, id-dejta kollha tal-entità tinħoloq b'mod indipendenti. Bħala riżultat, ikollok żewġ links - waħda biex tqajjem, l-oħra għad-dashboards fi Grafana.
  3. Monitoraġġ f'kull dar. Aħna nemmnu li l-iżviluppaturi kollha għandhom jużaw sistema bħal din. F'dan il-każ, inti dejjem tifhem fejn hu t-traffiku tiegħek, x'jiġrilu, fejn jaqa ', fejn huma d-dgħufijiet tiegħu. Jekk, pereżempju, tiġi xi ħaġa u tiġġarraf is-servizz tiegħek, allura titgħallem dwarha mhux waqt sejħa mill-maniġer, iżda minn twissija, u tista 'minnufih tiftaħ l-aħħar zkuk u tara x'ġara hemmhekk.
  4. Prestazzjoni għolja. Il-proġett tagħna qed jikber kontinwament, u llum jipproċessa madwar 2 valuri metriċi kull minuta. Sena ilu, din iċ-ċifra kienet 000 000. U t-tkabbir ikompli, u dan ifisser li wara xi żmien Graphite (whisper) se jibda jgħabbi ħafna s-subsistema tad-diska. Kif diġà għedt, din is-sistema ta 'monitoraġġ hija pjuttost universali minħabba l-interkambjabbiltà tal-komponenti. Xi ħadd iżomm u jespandi kontinwament l-infrastruttura tiegħu speċifikament għall-Graphite, iżda ddeċidejna li nimxu rotta differenti: uża IkklikkjaHouse bħala repożitorju għall-metriċi tagħna. Din it-tranżizzjoni hija kważi kompluta, u dalwaqt se ngħidlek f'aktar dettall kif dan sar: x'diffikultajiet kien hemm u kif ġew megħluba, kif mexa l-proċess tal-migrazzjoni, ser niddeskrivi l-komponenti magħżula bħala vinkolanti u l-konfigurazzjonijiet tagħhom.

Grazzi tal-attenzjoni tiegħek! Staqsi l-mistoqsijiet tiegħek dwar is-suġġett, ser nipprova nwieġeb hawn jew fil-postijiet li ġejjin. Forsi xi ħadd għandu esperjenza fil-bini ta 'sistema ta' monitoraġġ simili jew jaqleb għal Clickhouse f'sitwazzjoni simili - aqsamha fil-kummenti.

Sors: www.habr.com

Żid kumment