Sgrùdadh mar sheirbheis: siostam modular airson ailtireachd microservice

An-diugh, a bharrachd air còd monolithic, tha ar pròiseact a’ toirt a-steach dusanan de mhicro-sheirbheisean. Feumaidh gach fear dhiubh sùil a chumail air. Tha e duilich seo a dhèanamh aig ìre cho mòr a’ cleachdadh innleadairean DevOps. Tha sinn air siostam sgrùdaidh a leasachadh a bhios ag obair mar sheirbheis do luchd-leasachaidh. Faodaidh iad metrics a sgrìobhadh gu neo-eisimeileach a-steach don t-siostam sgrùdaidh, an cleachdadh, clàran-dash a thogail stèidhichte orra, agus rabhaidhean a cheangal riutha a thèid a bhrosnachadh nuair a ruigear luachan stairsnich. Airson innleadairean DevOps, dìreach bun-structar agus sgrìobhainnean.

Tha am post seo na tar-sgrìobhadh den òraid agam leis an ar earrannan aig RIT++. Dh’iarr mòran dhaoine oirnn dreachan teacsa de dh’aithisgean a dhèanamh às an sin. Ma bha thu aig a’ cho-labhairt no ma choimhead thu air a’ bhidio, chan fhaigh thu dad ùr. Agus a h-uile duine eile - fàilte don chat. Innsidh mi dhut mar a thàinig sinn gu siostam mar seo, mar a tha e ag obair agus mar a tha sinn an dùil ùrachadh.

Sgrùdadh mar sheirbheis: siostam modular airson ailtireachd microservice

San àm a dh'fhalbh: sgeamaichean agus planaichean

Ciamar a ràinig sinn an siostam sgrùdaidh làithreach? Gus a’ cheist seo a fhreagairt, feumaidh tu a dhol gu 2015. Seo mar a bha e coltach an uairsin:

Sgrùdadh mar sheirbheis: siostam modular airson ailtireachd microservice

Bha timcheall air 24 nodan againn a bha an urra ri sgrùdadh. Tha pasgan slàn de chrùnan eadar-dhealaichte, sgriobtaichean, daemons ann a bhios dòigh air choireigin a’ cumail sùil air rudeigin, a’ cur teachdaireachdan, agus a’ coileanadh ghnìomhan. Bha sinn a’ smaoineachadh mar as fhaide a chaidh sinn, is ann as lugha a bhiodh siostam den leithid. Chan eil feum air a leasachadh: tha e ro throm.
Cho-dhùin sinn na h-eileamaidean sgrùdaidh sin a chumail agus a leasaicheas sinn a thaghadh, agus an fheadhainn a thrèigsinn. Bha 19 dhiubh ann. Ach cò ris a bhios an siostam ùr coltach? Mar seo:

Sgrùdadh mar sheirbheis: siostam modular airson ailtireachd microservice

Tha stòr metrics againn: is iad sin grafaitichean, a bhios stèidhichte air draibhearan SSD luath, is iad sin cuid de luchd-cruinneachaidh airson meatrach. An ath rud - Grafana airson clàran-làimhe a thaisbeanadh agus Moira airson rabhadh. Bha sinn cuideachd airson siostam a leasachadh airson neo-riaghailteachdan a lorg.

Coitcheann: Sgrùdadh 2.0

Seo mar a bha na planaichean coltach ann an 2015. Ach bha againn ri ullachadh chan ann a-mhàin am bun-structair agus an t-seirbheis fhèin, ach cuideachd na sgrìobhainnean air a shon. Tha sinn air inbhe corporra a leasachadh dhuinn fhìn, ris an can sinn sgrùdadh 2.0. Dè na riatanasan a bha aig an t-siostam?

  • cunbhalach ri fhaotainn;
  • astar stòraidh metrics = 10 diogan;
  • stòradh structarail de mheatraigean agus clàran-dannsa;
  • SLA > 99,99%
  • cruinneachadh de mheatairean tachartais tro UDP (!).

Bha feum againn air UDP oir tha sruthadh mòr de thrafaig againn agus tachartasan a ghineas meatrach. Ma sgrìobhas tu iad uile gu grafait aig an aon àm, tuitidh an stòradh. Thagh sinn cuideachd ro-leasachain ciad-ìre airson a h-uile meatrach.

Sgrùdadh mar sheirbheis: siostam modular airson ailtireachd microservice

Tha cuid de sheilbh aig gach aon de na ro-leasachain. Tha metrics ann airson frithealaichean, lìonraidhean, soithichean, goireasan, tagraidhean, agus mar sin air adhart. Chaidh sìoladh soilleir, teann, clò-sgrìobhte a chuir an gnìomh, far am bi sinn a’ gabhail ri meatrach aig a’ chiad ìre agus dìreach a’ leigeil às an còrr. Seo mar a dhealbhaich sinn an siostam seo ann an 2015. Dè th' anns an latha an-diugh?

An-dràsta: diagram de eadar-obrachadh de phàirtean sgrùdaidh

An toiseach, bidh sinn a’ cumail sùil air tagraidhean: ar còd PHP, tagraidhean agus microservices - ann an ùine ghoirid, a h-uile dad a sgrìobhas ar luchd-leasachaidh. Bidh a h-uile tagradh a’ cur meatrach tro UDP gu neach-cruinneachaidh Brubeck (statsd, air ath-sgrìobhadh ann an C). Thionndaidh a-mach gur e seo an ìre as luaithe ann an deuchainnean synthetigeach. Agus bidh e a’ cur na meatrach cruinnichte mar-thà gu Graphite tro TCP.

Tha seòrsa de mheatairean ann ris an canar timers. Is e rud gu math goireasach a tha seo. Mar eisimpleir, airson gach ceangal cleachdaiche ris an t-seirbheis, cuiridh tu meatrach le ùine freagairt gu Brubeck. Thàinig millean freagairt a-steach, ach cha do thill an neach-cruinneachaidh ach 10 meatairean. Tha an àireamh dhaoine agad a thàinig, an ùine freagairt as àirde, as ìsle agus cuibheasach, am meadhan agus 4 ceudadan. An uairsin thèid an dàta a ghluasad gu Graphite agus chì sinn e uile beò.

Tha cruinneachadh againn cuideachd airson meatrach air bathar-cruaidh, bathar-bog, meatrach siostam agus an t-seann shiostam sgrùdaidh Munin againn (dh’ obraich e dhuinn gu 2015). Cruinnichidh sinn seo gu lèir tron ​​​​C daemon CollectD (tha dòrlach de plugins eadar-dhealaichte air an togail a-steach ann, faodaidh e sgrùdadh a dhèanamh air goireasan an t-siostam aoigheachd air a bheil e air a chuir a-steach, dìreach sònraich anns an rèiteachadh far an sgrìobh thu an dàta) agus sgrìobh an dàta gu Graphite troimhe. Bidh e cuideachd a’ toirt taic do plugins python agus sgriobtaichean slige, gus an urrainn dhut na fuasglaidhean àbhaisteach agad fhèin a sgrìobhadh: cruinnichidh CollectD an dàta seo bho aoigh ionadail no iomallach (a’ gabhail ris Curl) agus cuiridh e gu Graphite e.

An uairsin bidh sinn a’ cur a h-uile meatrach a chruinnich sinn gu Carbon-c-relay. Is e seo am fuasgladh Carbon Relay bho Graphite, air atharrachadh ann an C. Is e seo router a bhios a’ cruinneachadh a h-uile meatrach a chuireas sinn bho ar luchd-cruinneachaidh agus gan stiùireadh gu nodan. Cuideachd aig ìre slighe, bidh e a’ sgrùdadh dligheachd nan meatrach. An toiseach, feumaidh iad a bhith a rèir an sgeama ro-leasachan a sheall mi na bu thràithe agus, san dàrna àite, tha iad dligheach airson grafait. Mur eil, bidh iad a 'tuiteam.

Bidh carbon-c-relay an uairsin a’ cur na meatrach gu cruinneachadh Graphite. Bidh sinn a’ cleachdadh Carbon-cache, air ath-sgrìobhadh ann an Go, mar phrìomh stòradh metrics. Tha Go-carbon, mar thoradh air an ioma-snàthainn aige, fada nas fheàrr na Carbon-cache. Bidh e a 'faighinn dàta agus ga sgrìobhadh gu diosgan a' cleachdadh a 'phacaid uisge-beatha (àbhaisteach, sgrìobhte ann am python). Gus dàta a leughadh bho na stòran againn, bidh sinn a’ cleachdadh an API Graphite. Tha e tòrr nas luaithe na Graphite WEB àbhaisteach. Dè thachras don dàta an ath rud?

Bidh iad a’ dol gu Grafana. Bidh sinn a’ cleachdadh ar cruinneachaidhean grafait mar am prìomh thùs dàta, agus tha Grafana againn mar eadar-aghaidh lìn airson a bhith a’ taisbeanadh meatrach agus a’ togail chlàran-deasachaidh. Airson gach aon de na seirbheisean aca, bidh luchd-leasachaidh a’ cruthachadh an deas-bhòrd aca fhèin. An uairsin togaidh iad grafaichean stèidhichte orra, a sheallas na meatrach a sgrìobhas iad bho na tagraidhean aca. A bharrachd air Grafana, tha SLAM againn cuideachd. Is e seo deamhan python a bhios a’ tomhas SLA stèidhichte air dàta bho ghrafait. Mar a thuirt mi mu thràth, tha grunn dhusan meanbh-sheirbheisean againn, agus tha na riatanasan aca fhèin aig gach fear dhiubh. A’ cleachdadh SLAM, bidh sinn a’ dol chun na sgrìobhainnean agus ga choimeas ris na tha ann an Graphite agus a’ dèanamh coimeas eadar dè cho math ‘s a tha na riatanasan a rèir na tha ri fhaighinn de ar seirbheisean.

Rachamaid nas fhaide: alerting. Tha e air a chuir air dòigh le siostam làidir - Moira. Tha e neo-eisimeileach leis gu bheil a Graphite fhèin aige fon chochall. Air a leasachadh leis na balaich bho SKB "Kontur", sgrìobhte ann am python agus Go, gu tur fosgailte. Bidh Moira a’ faighinn an aon shruth a thèid a-steach do ghrafaidean. Ma bhàsaicheas an stòradh agad airson adhbhar air choireigin, obraichidh an rabhadh agad fhathast.

Chuir sinn Moira an sàs ann an Kubernetes; bidh e a’ cleachdadh cruinneachadh de luchd-frithealaidh Redis mar am prìomh stòr-dàta. B 'e an toradh siostam a tha a' fulang le lochdan. Bidh e a’ dèanamh coimeas eadar an t-sruth metrics leis an liosta de luchd-brosnachaidh: mura h-eil iomradh ann, bidh e a’ leigeil sìos an meatrach. Mar sin tha e comasach dha gigabytes de mheatrics gach mionaid a chuairteachadh.

Cheangail sinn LDAP corporra ris cuideachd, le cuideachadh bhon urrainn do gach neach-cleachdaidh den t-siostam corporra fiosan a chruthachadh dhaibh fhèin stèidhichte air brosnachaidhean a tha ann mar-thà (no air an cruthachadh às ùr). Leis gu bheil Graphite ann am Moira, tha e a’ toirt taic dha na feartan gu lèir aige. Mar sin gabhaidh tu an loidhne an toiseach agus dèan lethbhreac dheth gu Grafana. Faic mar a tha an dàta air a thaisbeanadh air na grafaichean. Agus an uairsin gabhaidh tu an aon loidhne agus dèan lethbhreac dheth gu Moira. Bidh thu ga chrochadh le crìochan agus a’ faighinn rabhadh mun toradh. Gus seo a dhèanamh, chan fheum thu eòlas sònraichte sam bith. Faodaidh Moira rabhadh a thoirt tro SMS, post-d, Jira, Slack... Bidh e cuideachd a’ toirt taic do bhith a’ cur an gnìomh sgriobtaichean àbhaisteach. Nuair a thachras inneal-brosnachaidh rithe, agus i fo-sgrìobhadh do sgriobt àbhaisteach no binary, bidh i ga ruith agus a’ cur JSON gu stdin airson a’ bhiadhaidh seo. Mar sin, feumaidh am prògram agad a pharsadh. Tha e an urra riut fhèin na nì thu leis an JSON seo. Ma tha thu ag iarraidh, cuir gu Telegram e, ma tha thu ag iarraidh, fosgail gnìomhan ann an Jira, dèan rud sam bith.

Bidh sinn cuideachd a’ cleachdadh ar leasachadh fhèin airson rabhadh - Imagotag. Dh'atharraich sinn am pannal, a tha mar as trice air a chleachdadh airson tagaichean prìse dealanach ann an stòran, a rèir ar feumalachdan. Thug sinn luchd-brosnachaidh à Moira thuige. Tha e a’ sealltainn dè an staid anns a bheil iad agus cuin a thachair iad. Trèig cuid de na balaich leasachaidh fiosan ann an Slack agus post-d airson a’ phannal seo.

Sgrùdadh mar sheirbheis: siostam modular airson ailtireachd microservice

Uill, leis gur e companaidh adhartach a th’ annainn, rinn sinn sùil cuideachd air Kubernetes san t-siostam seo. Chuir sinn a-steach e san t-siostam a’ cleachdadh Heapster, a chuir sinn a-steach sa bhuidheann, bidh e a’ cruinneachadh dàta agus ga chuir gu Graphite. Mar thoradh air an sin, tha an sgeama a’ coimhead mar seo:

Sgrùdadh mar sheirbheis: siostam modular airson ailtireachd microservice

Co-phàirtean sgrùdaidh

Seo liosta de cheanglaichean ris na co-phàirtean a chleachd sinn airson na h-obrach seo. Tha iad uile nan stòr fosgailte.

Grafite:

Carbon-c-sealaidheachd:

github.com/grobian/carbon-c-relay

Brubeck:

github.com/github/brubeck

Air a chruinneachadh:

chruinnich.org

Moira:

github.com/moira-alert

Grafana:

grafana.com

Heapster:

github.com/kubernetes/heapster

Статистика

Agus seo cuid de na h-àireamhan mu mar a tha an siostam ag obair dhuinne.

Aggregator (brubeck)

Àireamh de mheatairean: ~ 300 / diog
Eadar-ama airson metrics a chuir gu Graphite: 30 diog
Cleachdadh ghoireasan frithealaiche: ~ 6% CPU (tha sinn a’ bruidhinn mu dheidhinn frithealaichean làn-chuimseach); ~ 1Gb RAM; ~3 Mbps LAN

Graphite (go-carbon)

Àireamh de mheatairean: ~ 1 / min
Ùine ùrachadh metrics: 30 diog
Sgeama stòraidh metrics: 30sec 35d, 5min 90d, 10min 365d (a’ toirt tuigse dhut air na thachras don t-seirbheis thar ùine mhòr)
Cleachdadh stòrais an fhrithealaiche: ~ 10% CPU; ~ 20Gb RAM; ~30 Mbps LAN

Sùbailteachd

Tha sinne aig Avito gu mòr a’ cur luach air sùbailteachd nar seirbheis sgrùdaidh. Carson a thionndaidh e a-mach mar seo gu dearbh? An toiseach, tha na co-phàirtean aige eadar-mhalairteach: an dà chuid na pàirtean fhèin agus na dreachan aca. San dàrna àite, taic. Leis gu bheil am pròiseact gu lèir fosgailte, faodaidh tu an còd a dheasachadh thu fhèin, atharrachaidhean a dhèanamh, agus gnìomhan a chuir an gnìomh nach eil rim faighinn a-mach às a’ bhogsa. Bithear a’ cleachdadh stacan gu math cumanta, sa mhòr-chuid Go agus Python, agus mar sin tha seo air a dhèanamh gu math sìmplidh.

Seo eisimpleir de fhìor dhuilgheadas. Tha meatrach ann an Graphite na fhaidhle. Tha ainm air. Ainm faidhle = ainm meatrach. Agus tha dòigh ann faighinn ann. Tha ainmean faidhle ann an Linux cuingealaichte ri caractaran 255. Agus tha daoine againn (mar “luchd-ceannach a-staigh”) bhon roinn stòr-dàta. Tha iad ag innse dhuinn: “Tha sinn airson sùil a chumail air na ceistean SQL againn. Agus chan e caractaran 255 a th’ annta, ach 8 MB gach fear. Tha sinn airson an taisbeanadh ann an Grafana, faic na crìochan airson an iarrtas seo, agus eadhon nas fheàrr, tha sinn airson mullach nan iarrtasan sin fhaicinn. Bidh e math ma thèid a thaisbeanadh ann an àm fìor. Bhiodh e uamhasach math an cur san rabhadh.”

Sgrùdadh mar sheirbheis: siostam modular airson ailtireachd microservice
Tha an eisimpleir ceist SQL air a thoirt mar eisimpleir bho làrach postgrespro.ru

Stèidhich sinn frithealaiche Redis agus cleachdaidh sinn na plugins Collected againn, a thèid gu Postgres agus a bheir an dàta gu lèir às an sin, a’ cur meatrach gu Graphite. Ach cuiridh sinn hashes an àite an ainm meatrach. Bidh sinn aig an aon àm a’ cur an aon hash gu Redis mar iuchair, agus a’ cheist SQL gu lèir mar luach. Chan eil againn ach dèanamh cinnteach gun urrainn dha Grafana a dhol gu Redis agus am fiosrachadh seo a ghabhail. Tha sinn a’ fosgladh an API Graphite air sgàth... is e seo am prìomh eadar-aghaidh airson eadar-obrachadh a h-uile pàirt sgrùdaidh le grafait, agus bidh sinn a’ cuir a-steach gnìomh ùr an sin ris an canar aliasByHash () - bho Grafana gheibh sinn ainm a’ mheatrach, agus cleachdaidh sinn e ann an iarrtas gu Redis mar iuchair, ann an freagairt gheibh sinn luach na h-iuchrach, is e sin ar “SQL ceist” " Mar sin, sheall sinn ann an Grafana taisbeanadh de cheist SQL, a bha gu teòiridheach do-dhèanta a thaisbeanadh an sin, còmhla ri staitistig air (gairmean, sreathan, total_time, ...).

Builean

Ri fhaotainn Tha an t-seirbheis sgrùdaidh againn ri fhaighinn 24/7 bho thagradh sam bith agus còd sam bith. Ma tha cothrom agad air goireasan stòraidh, faodaidh tu dàta a sgrìobhadh chun t-seirbheis. Chan eil an cànan cudromach, chan eil na co-dhùnaidhean cudromach. Chan fheum thu ach fios a bhith agad mar a dh ’fhosglas tu socaid, cuir meatrach an sin agus dùin an t-socaid.

Fiachan Tha na pàirtean uile fulangach air lochdan agus a’ làimhseachadh ar luchdan gu math.

Bacaidh ìosal airson faighinn a-steach. Gus an siostam seo a chleachdadh, chan fheum thu cànanan prògramadh agus ceistean ionnsachadh ann an Grafana. Dìreach fosgail an tagradh agad, cuir a-steach socaid a-steach a chuireas metrics gu Graphite, dùin e, fosgail Grafana, cruthaich clàran-dannsa an sin agus thoir sùil air giùlan do mheatrics, a’ faighinn fiosan tro Moira.

Neo-eisimeileachd. Faodaidh tu seo a dhèanamh leat fhèin, gun chuideachadh bho innleadairean DevOps. Agus tha seo na bhuannachd, oir faodaidh tu sùil a chumail air do phròiseact an-dràsta, chan fheum thu iarraidh air duine sam bith - an dàrna cuid tòiseachadh air obair no atharrachaidhean a dhèanamh.

Dè tha sinn ag amas air?

Chan e dìreach smuaintean eas-chruthach a th’ anns a h-uile dad a tha air a liostadh gu h-ìosal, ach rudeigin ris an deach co-dhiù na ciad cheumannan a ghabhail.

  1. Lorgaire neo-riaghailteachd. Tha sinn airson seirbheis a chruthachadh a thèid gu na stòran Graphite againn agus sùil a thoirt air gach meatrach a’ cleachdadh diofar algorithms. Tha algorithms ann mu thràth a tha sinn airson fhaicinn, tha dàta ann, tha fios againn mar a dh’ obraicheas sinn leis.
  2. Metadata. Tha mòran sheirbheisean againn, bidh iad ag atharrachadh thar ùine, dìreach mar na daoine a tha ag obair còmhla riutha. Chan e roghainn a tha ann an cumail suas sgrìobhainnean le làimh. Sin as coireach gu bheil sinn a-nis a’ fighe meata-dàta anns na microservices againn. Tha e ag innse cò a leasaich e, na cànanan leis a bheil e ag eadar-obrachadh, riatanasan SLA, càite agus cò dha a bu chòir fiosan a chuir. Nuair a bhios tu a’ cleachdadh seirbheis, thèid a h-uile dàta eintiteas a chruthachadh gu neo-eisimeileach. Mar thoradh air an sin, gheibh thu dà cheangal - aon gu luchd-brosnachaidh, am fear eile gu clàran-dannsa ann an Grafana.
  3. A’ cumail sùil air a h-uile dachaigh. Tha sinn den bheachd gum bu chòir do luchd-leasachaidh siostam mar seo a chleachdadh. Anns a 'chùis seo, bidh thu an-còmhnaidh a' tuigsinn far a bheil an trafaig agad, dè a thachras dha, far a bheil e a 'tuiteam, far a bheil na laigsean aige. Ma thig, mar eisimpleir, rudeigin agus gun tuit an t-seirbheis agad, ionnsaichidh tu mu dheidhinn chan ann tro ghairm bhon mhanaidsear, ach bho rabhadh, agus faodaidh tu na logaichean as ùire fhosgladh sa bhad agus faicinn dè thachair an sin.
  4. Coileanadh àrd. Tha am pròiseact againn an-còmhnaidh a’ fàs, agus an-diugh bidh e a’ pròiseasadh mu 2 luachan meatrach gach mionaid. O chionn bliadhna, bha am figear seo 000 000. Agus tha am fàs a 'leantainn, agus tha seo a' ciallachadh gum bi Graphite (feadag) an dèidh ùine a 'tòiseachadh a' luchdachadh fo-shiostam an diosg gu mòr. Mar a thuirt mi mu thràth, tha an siostam sgrùdaidh seo gu math uile-choitcheann air sgàth eadar-ghluasad phàirtean. Bidh cuideigin a 'cumail suas agus a' leudachadh am bun-structair aca gu sònraichte airson Graphite, ach chuir sinn romhainn slighe eile a dhèanamh: cleachdadh Cliog Taigh mar ionad-tasgaidh airson ar meatrach. Tha an eadar-ghluasad seo cha mhòr deiseil, agus gu math luath innsidh mi dhut nas mionaidiche mar a chaidh seo a dhèanamh: dè na duilgheadasan a bha ann agus mar a chaidh faighinn thairis orra, mar a chaidh am pròiseas imrich, bheir mi cunntas air na pàirtean a chaidh a thaghadh mar cheangal agus na rèiteachaidhean aca.

Tapadh leibh airson an aire agad! Faighnich do cheistean air a’ chuspair, feuchaidh mi ri freagairt an seo no anns na puist a leanas. Is dòcha gu bheil eòlas aig cuideigin air siostam sgrùdaidh coltach ris a thogail no atharrachadh gu Clickhouse ann an suidheachadh coltach ris - roinn e anns na beachdan.

Source: www.habr.com

Cuir beachd ann