Monatóireacht mar sheirbhís: córas modúlach le haghaidh ailtireacht microservice

Sa lá atá inniu ann, chomh maith le cód monolithic, cuimsíonn ár dtionscadal mórán de mhicrisheirbhísí. Is gá monatóireacht a dhéanamh ar gach ceann acu. Is fadhb é seo a dhéanamh ar scála den sórt sin ag baint úsáide as innealtóirí DevOps. Tá córas monatóireachta forbartha againn a oibríonn mar sheirbhís d’fhorbróirí. Is féidir leo méadracht a scríobh go neamhspleách isteach sa chóras monatóireachta, iad a úsáid, deais a thógáil bunaithe orthu, agus foláirimh a chur i gceangal leo a spreagfar nuair a shroichfear luachanna tairsí. I gcás innealtóirí DevOps, bonneagar agus doiciméadú amháin.

Is tras-scríbhinn é an post seo de mo chuid cainte lenár alt ag RIT++. D’iarr go leor daoine orainn leaganacha téacs de thuarascálacha a dhéanamh as sin. Má bhí tú ag an gcomhdháil nó má d'fhéach tú ar an bhfíseán, ní bhfaighidh tú aon rud nua. Agus gach duine eile - fáilte roimh an cat. Inseoidh mé duit conas a tháinig muid chuig a leithéid de chóras, conas a oibríonn sé agus conas a bheartaímid é a nuashonrú.

Monatóireacht mar sheirbhís: córas modúlach le haghaidh ailtireacht microservice

An t-am atá thart: scéimeanna agus pleananna

Conas a tháinig muid ar an gcóras monatóireachta reatha? Chun an cheist seo a fhreagairt, ní mór duit dul go dtí 2015. Seo an chuma a bhí air ansin:

Monatóireacht mar sheirbhís: córas modúlach le haghaidh ailtireacht microservice

Bhí thart ar 24 nóid againn a bhí freagrach as monatóireacht a dhéanamh. Tá pacáiste iomlán de choróin éagsúla, scripteanna, deamhain a dhéanann monatóireacht ar bhealach éigin ar rud éigin, teachtaireachtaí a sheoladh, agus feidhmeanna a chomhlíonadh. Shíl muid dá fhaide a rachaimid, is ea is lú inmharthana a bheadh ​​córas dá leithéid. Níl aon phointe ann é a fhorbairt: tá sé ró-chasta.
Chinneamar na heilimintí faireacháin sin a choimeádfaimid agus a fhorbróimid, agus na heilimintí sin a dtréigfimid. Bhí 19 acu.Níor fhan ach graifítí, comhbhailitheoirí agus Grafana mar dheais. Ach cén chuma a bheidh ar an gcóras nua? Mar seo:

Monatóireacht mar sheirbhís: córas modúlach le haghaidh ailtireacht microservice

Tá stór méadrachta againn: is graifítí iad seo, a bheidh bunaithe ar thiomáineann tapa SSD, is comhbhailitheoirí áirithe iad seo le haghaidh méadrachta. Ar Aghaidh - Grafana chun deais a thaispeáint agus Moira le haghaidh foláirimh. Theastaigh uainn freisin córas a fhorbairt chun aimhrialtachtaí a chuardach.

Caighdeán: Monatóireacht 2.0

Seo an chuma a bhí ar na pleananna in 2015. Ach bhí orainn ní hamháin an bonneagar agus an tseirbhís féin a ullmhú, ach freisin na doiciméid chuige. Tá caighdeán corparáideach forbartha againn dúinn féin, ar a dtugaimid monatóireacht 2.0. Cad iad na riachtanais a bhí leis an gcóras?

  • infhaighteacht leanúnach;
  • eatramh stórála méadrachta = 10 soicind;
  • stóráil struchtúrtha méadrachta agus deais;
  • CLS > 99,99%
  • bailiú méadrachta imeachtaí trí UDP (!).

Bhí UDP ag teastáil uainn toisc go bhfuil sreabhadh mór tráchta agus imeachtaí againn a ghineann méadracht. Má scríobhann tú iad go léir i graifít ag an am céanna, tiocfaidh an stóráil as a chéile. Roghnaíomar réimíreanna céadleibhéil do gach méadracht freisin.

Monatóireacht mar sheirbhís: córas modúlach le haghaidh ailtireacht microservice

Tá maoin éigin ag gach ceann de na réimíreanna. Tá méadracht ann le haghaidh freastalaithe, líonraí, coimeádáin, acmhainní, feidhmchláir, agus mar sin de. Tá scagadh soiléir, dian, clóscríofa curtha i bhfeidhm, áit a nglacaimid le méadracht an chéad leibhéal agus go scaoilfimid an chuid eile go simplí. Seo mar a phleanáileamar an córas seo in 2015. Cad atá san am i láthair?

Láithreach: léaráid d'idirghníomhaíocht na gcomhpháirteanna monatóireachta

Ar an gcéad dul síos, déanaimid monatóireacht ar iarratais: ár gcód PHP, iarratais agus microservices - i mbeagán focal, gach rud a scríobhann ár bhforbróirí. Seolann gach iarratas méadracht trí UDP chuig comhbhailitheoir Brubeck (statsd, athscríofa in C). Iompaigh sé amach a bheith ar an tapúla i dtástálacha sintéiseacha. Agus seolann sé an mhéadracht chomhiomlánaithe cheana féin chuig Graphite trí TCP.

Tá cineál méadrach aige ar a dtugtar amadóirí. Is rud an-áisiúil é seo. Mar shampla, do gach nasc úsáideora leis an tseirbhís, seolann tú méadrach le ham freagartha chuig Brubeck. Tháinig milliún freagra isteach, ach níor thug an comhbhailitheoir ach 10 méadracht. Tá líon na ndaoine a tháinig, an t-uasmhéid, an t-íosmhéid agus an meán-am freagartha, an t-airmheán agus 4 pheircintíl agat. Ansin aistrítear na sonraí go Graphite agus feicimid go léir beo.

Tá comhiomlánú againn freisin do mhéadracht ar chrua-earraí, bogearraí, méadracht chórais agus ár seanchóras monatóireachta Munin (d'oibrigh sé dúinn go dtí 2015). Bailímid é seo go léir tríd an C daemon CollectD (tá sraith iomlán de bhreiseáin éagsúla ionsuite ann, is féidir leis acmhainní uile an chórais óstaigh ar a bhfuil sé suiteáilte a vótaíocht, ach sonraigh sa chumraíocht cá háit a scríobhtar na sonraí) agus scríobh na sonraí go Graifít tríd. Tacaíonn sé freisin le forlíontáin python agus scripteanna bhlaosc, ionas gur féidir leat do réitigh saincheaptha féin a scríobh: baileoidh CollectD na sonraí seo ó óstach áitiúil nó iargúlta (ag glacadh le Curl) agus seolfaidh sé chuig Graphite é.

Ansin seolann muid na méadrachtaí go léir a bhailigh muid chuig Carbon-c-relay. Is é seo an réiteach Leaschraolacháin Carbóin ó Graifít, modhnaithe i C. Is é seo an ródaire a bhailíonn gach méadracht a sheolann muid ónár comhbhailitheoirí agus iad a bhealach chun nóid. Ag an gcéim ródaithe freisin, seiceálann sé bailíocht na méadrachta. Ar an gcéad dul síos, caithfidh siad a bheith ag freagairt don scéim réimír a léirigh mé níos luaithe agus, sa dara háit, tá siad bailí le haghaidh graifít. Seachas sin beidh siad ag titim.

Seoltar an mhéadracht chuig an mbraisle Graifít ansin. Úsáidimid Carbóin-taisce, athscríofa in Go, mar phríomhstóráil méadrachta. Is fearr go mór le go-charbón, mar gheall ar a ilsnáithe, ná taisce Carbóin. Faigheann sé sonraí agus scríobhann sé chuig dioscaí é ag baint úsáide as an bpacáiste cogar (caighdeánach, scríofa i python). Chun sonraí ónár stórais a léamh, úsáidimid an API Graphite. Tá sé i bhfad níos tapúla ná caighdeán WEB Graphite. Cad a tharlaíonn do na sonraí ina dhiaidh sin?

Téann siad go Grafana. Bainimid úsáid as ár mbraislí graifíte mar phríomhfhoinse sonraí, agus tá Grafana againn mar chomhéadan gréasáin chun méadracht agus deais a thógáil a thaispeáint. I gcás gach ceann dá gcuid seirbhísí, cruthaíonn forbróirí a bpainéal féin. Ansin tógann siad graif bunaithe orthu, a thaispeánann an mhéadracht a scríobhann siad óna bhfeidhmchláir. Chomh maith le Grafana, tá SLAM againn freisin. Is deamhan python é seo a ríomhann SLA bunaithe ar shonraí ó graifít. Mar a dúirt mé cheana, tá roinnt dosaen microservices againn, a bhfuil a riachtanais féin ag gach ceann acu. Ag baint úsáide as SLAM, téimid chuig an doiciméadú agus cuirimid i gcomparáid é leis an méid atá i nGrafite agus déanaimid comparáid idir cé chomh maith agus a mheaitseálann na riachtanais infhaighteacht ár seirbhísí.

A ligean ar dul níos faide: foláirimh. Tá sé eagraithe ag baint úsáide as córas láidir - Moira. Tá sé neamhspleách toisc go bhfuil a Graphite féin aige faoin gcochall. Arna fhorbairt ag na guys ó SKB "Kontur", scríofa i python agus Téigh, foinse oscailte go hiomlán. Faigheann Moira an sreabhadh céanna a théann isteach i graifítí. Más rud é ar chúis éigin go bhfaigheann do stóráil bás, beidh do foláirimh fós ag obair.

D’imlonníomar Moira i Kubernetes; úsáideann sé braisle de fhreastalaithe Redis mar phríomhbhunachar sonraí. Ba é an toradh ná córas fabht-fhulangach. Déanann sé an sruth méadrachta a chur i gcomparáid le liosta na dtruiceoirí: mura bhfuil aon tagairtí ann, ansin titeann sé an mhéadracht. Mar sin tá sé in ann ghigibheart méadrach in aghaidh an nóiméid a dhíleá.

Cheangaileamar LDAP corparáideach leis freisin, le cabhair ónar féidir le gach úsáideoir den chóras corparáideach fógraí a chruthú dóibh féin bunaithe ar thruicear reatha (nó nuachruthaithe). Ós rud é go bhfuil Graifít i Moira, tacaíonn sé lena gnéithe go léir. Mar sin tógann tú an líne ar dtús agus cóipeáil isteach i Grafana í. Féach ar an gcaoi a dtaispeántar na sonraí ar na graif. Agus ansin glacann tú an líne chéanna agus cóipeáil isteach i Moira í. Crochann tú é le teorainneacha agus faigheann tú foláireamh faoin aschur. Chun seo go léir a dhéanamh, ní gá duit aon eolas ar leith. Is féidir le Moira foláireamh a dhéanamh trí SMS, ríomhphost, Jira, Slack... Tacaíonn sé freisin le feidhmiú scripteanna saincheaptha. Nuair a tharlaíonn truicear di, agus go bhfuil sí suibscríofa do script shaincheaptha nó do dhénártha, ritheann sí é agus seolann sí JSON chuig stdin don dénártha seo. Dá réir sin, ní mór do chlár a pharsáil. Is fút féin atá an méid a dhéanfaidh tú leis an JSON seo. Más mian leat, seol chuig Telegram é, más mian leat, oscail tascanna i Jira, déan cibé rud.

Bainimid úsáid freisin as ár bhforbairt féin le haghaidh foláirimh - Imagotag. Rinneamar an painéal a oiriúnú, a úsáidtear de ghnáth le haghaidh clibeanna praghais leictreonacha i siopaí, chun freastal ar ár gcuid riachtanas. Thugamar truicear ó Moira chuige. Léiríonn sé cén staid ina bhfuil siad agus cathain a tharla siad. Thréig cuid de na guys forbartha fógraí i Slack agus ríomhphost i bhfabhar an phainéil seo.

Monatóireacht mar sheirbhís: córas modúlach le haghaidh ailtireacht microservice

Bhuel, ós rud é gur cuideachta fhorásach muid, rinneamar monatóireacht freisin ar Kubernetes sa chóras seo. Chuireamar san áireamh é sa chóras ag baint úsáide as Heapster, a chuireamar isteach sa bhraisle, bailíonn sé sonraí agus cuireann sé chuig Graphite é. Mar thoradh air sin, tá an chuma ar an léaráid mar seo:

Monatóireacht mar sheirbhís: córas modúlach le haghaidh ailtireacht microservice

Comhpháirteanna Monatóireachta

Seo liosta naisc leis na comhpháirteanna a d’úsáideamar don tasc seo. Is foinse oscailte iad go léir.

Graifít:

Carbóin-c-Relay:

github.com/grobian/carbon-c-relay

Brubeck:

github.com/github/brubeck

Bailithe:

bailithe.org

Moira:

github.com/moira-alert

Grafana:

grafana.com

Heapster:

github.com/kubernetes/heapster

Staitisticí

Agus seo roinnt uimhreacha faoi conas a oibríonn an córas dúinn.

Comhbhailitheoir (brubeck)

Líon na méadrachta: ~300/soic
Eatramh chun méadracht a sheoladh chuig Graifít: 30 soic
Úsáid acmhainní freastalaí: ~ 6% LAP (táimid ag caint faoi fhreastalaithe lán-chuimsitheach); ~ 1Gb RAM; ~3 Mbps LAN

Graifít (go-charbón)

Líon na méadrachta: ~ 1 / min
Eatramh nuashonraithe méadrachta: 30 sec
Scéim stórála méadrachta: 30sec 35d, 5min 90d, 10min 365d (tugann sé seo tuiscint duit ar cad a tharlaíonn don tseirbhís thar thréimhse fada ama)
Úsáid acmhainne an fhreastalaí: ~ 10% LAP; ~ 20Gb RAM; ~30 Mbps LAN

Solúbthacht

Is mór againn in Avito solúbthacht inár seirbhís monatóireachta. Cén fáth ar iompaigh sé amach mar seo i ndáiríre? Ar an gcéad dul síos, tá a gcomhpháirteanna idirmhalartaithe: na comhpháirteanna féin agus a leaganacha araon. Dara dul síos, supportability. Ós rud é go bhfuil an tionscadal iomlán foinse oscailte, is féidir leat an cód a chur in eagar tú féin, athruithe a dhéanamh, agus feidhmeanna nach bhfuil ar fáil as an mbosca a chur i bhfeidhm. Úsáidtear stoic coitianta go leor, Go agus Python go príomha, mar sin déantar é seo go simplí.

Seo sampla de fhíorfhadhb. Is comhad é méadrach i Graifít. Tá ainm air. Ainm comhaid = ainm méadrach. Agus tá bealach a fháil ann. Tá ainmneacha comhaid i Linux teoranta do 255 carachtar. Agus ní mór dúinn (mar “custaiméirí inmheánacha”) guys ón roinn bunachar sonraí. Insíonn siad dúinn: “Ba mhaith linn monatóireacht a dhéanamh ar ár bhfiosruithe SQL. Agus ní 255 carachtar iad, ach 8 MB an ceann. Ba mhaith linn iad a thaispeáint i Grafana, féach na paraiméadair don iarratas seo, agus níos fearr fós, ba mhaith linn barr iarratais den sórt sin a fheiceáil. Beidh sé iontach má thaispeánfar é i bhfíor-am. Bheadh ​​sé an-fhionnuar iad a chur ar an airdeall.”

Monatóireacht mar sheirbhís: córas modúlach le haghaidh ailtireacht microservice
Tógtar an sampla ceist SQL mar shampla ó suíomh postgrespro.ru

Socraímid freastalaí Redis agus úsáidimid ár Breiseáin Collected, a théann chuig Postgres agus a thógann na sonraí go léir as sin, ag cur méadracht chuig Graphite. Ach cuirimid hashes in ionad an ainm méadrach. Seolaimid an hash céanna chuig Redis mar eochair ag an am céanna, agus an cheist SQL ar fad mar luach. Níl le déanamh againn ach a chinntiú gur féidir le Grafana dul go Redis agus an t-eolas seo a ghlacadh. Táimid ag oscailt an API Graphite toisc... is é seo an príomh-chomhéadan le haghaidh idirghníomhú na gcomhpháirteanna monatóireachta go léir le graifít, agus cuirimid feidhm nua isteach ann ar a dtugtar aliasByHash() - ó Grafana faigheann muid ainm an mhéadrach, agus úsáidimid é in iarratas chuig Redis mar eochair, i freagra a fhaighimid luach na heochrach, is é sin ár "fiosrúchán SQL" " Mar sin, thaispeáineamar i Grafana taispeáint d’fhiosrúchán SQL, a bhí dodhéanta go teoiriciúil a thaispeáint ann, mar aon le staitisticí air (glaonna, sraitheanna, iomlán_time, ...).

Torthaí

Infhaighteacht. Tá ár seirbhís monatóireachta ar fáil 24/7 ó aon fheidhmchlár agus ó aon chód. Má tá rochtain agat ar áiseanna stórála, is féidir leat sonraí a scríobh chuig an tseirbhís. Níl an teanga tábhachtach, níl na cinntí tábhachtach. Ní mór duit ach fios a bheith agat conas soicéad a oscailt, méadrach a chur ann agus an soicéad a dhúnadh.

Iontaofacht. Tá na comhpháirteanna go léir fabhtach-fhulangach agus láimhseálann siad ár n-ualaí go maith.

Bacainn íseal ar iontráil. Chun an córas seo a úsáid, ní gá duit teangacha ríomhchlárúcháin agus ceisteanna a fhoghlaim i Grafana. Níl le déanamh ach d’iarratas a oscailt, soicéad a chur isteach ann a sheolfaidh méadracht chuig Graphite, a dhúnfaidh, a osclaíonn Grafana, a chruthóidh daais ansin agus féach ar iompar do mhéadrachta, ag fáil fógraí trí Moira.

Neamhspleáchas. Is féidir leat é seo go léir a dhéanamh tú féin, gan cabhair ó innealtóirí DevOps. Agus is buntáiste é seo, toisc gur féidir leat monatóireacht a dhéanamh ar do thionscadal faoi láthair, ní gá duit a iarraidh ar dhuine ar bith - tosú ar an obair nó athruithe a dhéanamh.

Cad atá uainn?

Ní hamháin smaointe teibí atá i ngach rud atá liostaithe thíos, ach rud a bhfuil ar a laghad na chéad chéimeanna glactha ina leith.

  1. Brathadóir aimhrialtacht. Ba mhaith linn seirbhís a chruthú a rachaidh chuig ár stórais Graphite agus seiceáil gach méadrach ag baint úsáide as halgartaim éagsúla. Tá halgartaim ann cheana féin ar mhaith linn féachaint orthu, tá sonraí ann, tá a fhios againn conas a bheith ag obair leis.
  2. Meiteashonraí. Tá go leor seirbhísí againn, athraíonn siad le himeacht ama, díreach cosúil leis na daoine a oibríonn leo. Ní rogha é doiciméadú a choinneáil de láimh i gcónaí. Sin an fáth go bhfuil meiteashonraí á neadú againn anois inár micrisheirbhísí. Luann sé cé a d’fhorbair é, na teangacha a idirghníomhaíonn sé leo, ceanglais CLS, cá háit agus cé chuige ar cheart fógraí a sheoladh. Nuair a bhíonn seirbhís á himscaradh, cruthaítear na sonraí eintiteas go léir go neamhspleách. Mar thoradh air sin, faigheann tú dhá nasc - ceann amháin le triggers, an ceann eile le dashboards i Grafana.
  3. Monatóireacht i ngach teach. Creidimid gur cheart do gach forbróir córas den sórt sin a úsáid. Sa chás seo, tuigeann tú i gcónaí cá bhfuil do thrácht, cad a tharlaíonn dó, cá dtagann sé, cá bhfuil a laigí. Más rud é, mar shampla, go dtagann rud éigin agus go dtimpisteálann tú do sheirbhís, ansin foghlaimeoidh tú faoi ní le linn glao ón mbainisteoir, ach ó foláireamh, agus is féidir leat na logaí is déanaí a oscailt láithreach agus féach cad a tharla ann.
  4. Ardfheidhmíocht. Tá ár dtionscadal ag fás i gcónaí, agus inniu déanann sé próiseáil ar thart ar 2 luach méadrach in aghaidh an nóiméid. Bliain ó shin, bhí an figiúr seo 000 000. Agus leanann an fás, agus ciallaíonn sé seo go tar éis roinnt ama a bheidh Graphite (cogar) tús a luchtú go mór ar an bhfochóras diosca. Mar a dúirt mé cheana, tá an córas monatóireachta seo uilíoch go leor mar gheall ar idirmhalartaithe na gcomhpháirteanna. Coinníonn agus leathnaíonn duine éigin a mbonneagar go sonrach le haghaidh Graphite, ach shocraigh muid dul ar bhealach difriúil: úsáid Cliceáil Teach mar stór dár méadracht. Tá an t-aistriú seo beagnach críochnaithe, agus go han-luath inseoidh mé duit go mion conas a rinneadh é seo: cad iad na deacrachtaí a bhí ann agus conas a sáraíodh iad, conas a chuaigh an próiseas imirce, déanfaidh mé cur síos ar na comhpháirteanna a roghnaíodh mar cheangailteach agus ar a bhfoirmíochtaí.

Go raibh maith agat as do aird! Cuir do chuid ceisteanna ar an ábhar, déanfaidh mé iarracht freagra a thabhairt anseo nó sna poist seo a leanas. B'fhéidir go bhfuil taithí ag duine éigin ag tógáil córas monatóireachta den chineál céanna nó ag athrú go Clickhouse i staid chomhchosúil - é a roinnt sna tuairimí.

Foinse: will.com

Add a comment