Thanos - Prometheus scalable

Chaidh eadar-theangachadh an artaigil ullachadh gu sònraichte airson oileanaich a’ chùrsa "Cleachdaidhean agus innealan DevOps".

Fabian Reinartz na leasaiche bathar-bog, Go fanatic, agus fuasgladh cheistean. Tha e cuideachd na neach-glèidhidh Prometheus agus na cho-stèidheadair air ionnstramaid Kubernetes SIG. San àm a dh'fhalbh, bha e na innleadair riochdachaidh aig SoundCloud agus stiùir e an sgioba sgrùdaidh aig CoreOS. An-dràsta ag obair aig Google.

Bartek Plotka - Innleadair Bun-structair aig Improbable. Tha ùidh aige ann an teicneòlasan ùra agus duilgheadasan siostaman sgaoilte. Tha eòlas prògramadh aig ìre ìosal aige aig Intel, eòlas com-pàirtiche aig Mesos, agus eòlas cinneasachaidh SRE aig ìre cruinne aig Improbable. Coisrigeadh airson saoghal microservices a leasachadh. Tha an triùir ghaol aige: Golang, stòr fosgailte agus ball-volley.

A’ coimhead air an toradh suaicheanta againn SpatialOS, faodaidh tu tomhas gu bheil Improbable a’ feumachdainn bun-structar sgòthan a tha gu math beothail, aig ìre cruinne le dusanan de chlàran Kubernetes. B’ sinne aon den chiad fheadhainn a chleachd siostam sgrùdaidh Prometheus. Tha Prometheus comasach air milleanan de mheatairean a lorg ann an àm fìor agus thig e le cànan ceiste cumhachdach a leigeas leat am fiosrachadh a tha a dhìth ort a thoirt a-mach.

Is e sìmplidheachd agus earbsachd Prometheus aon de na prìomh bhuannachdan aige. Ach, aon uair ‘s gun deach sinn seachad air sgèile sònraichte, ruith sinn a-steach do ghrunn eas-bhuannachdan. Gus fuasgladh fhaighinn air na duilgheadasan sin tha sinn air a leasachadh Thanos na phròiseact stòr fosgailte a chaidh a chruthachadh le Improbable gus cruinneachaidhean Prometheus a th’ ann mar-thà a thionndadh gu bhith na aon shiostam sgrùdaidh le stòradh dàta eachdraidheil gun chrìoch. Tha Thanos ri fhaighinn air Github an seo.

Cum suas ris na naidheachdan as ùire bho Improbable.

Ar n-amasan le Thanos

Aig ìre sònraichte, tha duilgheadasan ag èirigh a tha nas fhaide na comasan vanilla Prometheus. Ciamar a stòradh gu h-earbsach agus gu h-eaconamach petabytes de dhàta eachdraidheil? An gabh seo a dhèanamh gun a bhith a’ toirt buaidh air an ùine freagairt? A bheil e comasach faighinn chun a h-uile meatrach a tha suidhichte air diofar luchd-frithealaidh Prometheus le aon iarrtas API? A bheil dòigh sam bith air dàta ath-chruthaichte a chruinneachadh a’ cleachdadh Prometheus HA?

Gus dèiligeadh ris na cùisean sin, chruthaich sinn Thanos. Tha na h-earrannan a leanas a’ mìneachadh mar a dhèilig sinn ris na cùisean sin agus a’ mìneachadh ar n-amasan.

A’ ceasnachadh dàta bho ioma-eisimpleirean Prometheus (ceist chruinneil)

Tha Prometheus a’ tabhann dòigh-obrach gnìomhail a thaobh rùsgadh. Tha eadhon aon fhrithealaiche Prometheus a’ toirt seachad scalability gu leòr gus luchd-cleachdaidh a shaoradh bho iom-fhillteachd sgrìobadh còmhnard anns cha mhòr a h-uile cùis cleachdaidh.

Ged is e deagh mhodail cleachdadh a tha seo, gu tric feumar faighinn gu dàta air diofar luchd-frithealaidh Prometheus tro aon API no UI - sealladh cruinneil. Gu dearbh, tha e comasach grunn cheistean a thaisbeanadh ann an aon phannal Grafana, ach chan urrainnear gach ceist a chuir gu bàs ach air aon fhrithealaiche Prometheus. Air an làimh eile, le Thanos faodaidh tu ceasnachadh agus cruinneachadh dàta bho iomadh seirbheisiche Prometheus leis gu bheil iad uile rim faighinn bho aon àite crìochnachaidh.

Roimhe sin, gus sealladh cruinneil fhaighinn ann an Improbable, chuir sinn na h-eisimpleirean Prometheus againn air dòigh gu ioma-ìre Caidreachas rangachd. Bha seo a’ ciallachadh a bhith a’ cruthachadh aon fhrithealaiche meta Prometheus a chruinnicheas cuid de na meatrach bho gach frithealaiche duille.

Thanos - Prometheus scalable

Bha an dòigh-obrach seo na dhuilgheadas. Tha seo air leantainn gu rèiteachadh nas iom-fhillte, puing fàilligeadh a bharrachd a dh’ fhaodadh a bhith ann, agus cur an sàs riaghailtean iom-fhillte gus dèanamh cinnteach nach fhaigh an t-ionad crìochnachaidh co-aonaichte ach an dàta a tha a dhìth air. A bharrachd air an sin, chan eil an seòrsa caidreachas seo a’ leigeil leat fìor shealladh cruinne fhaighinn, leis nach eil a h-uile dàta ri fhaighinn bho aon iarrtas API.

Gu dlùth co-cheangailte ri seo tha sealladh aonaichte den dàta a chaidh a chruinneachadh air frithealaichean Prometheus le ruigsinneachd àrd (HA). Bidh modal HA Prometheus gu neo-eisimeileach a’ cruinneachadh dàta dà uair, a tha cho sìmplidh nach b’ urrainn a bhith nas sìmplidh. Ach, bhiodh e mòran na b’ fhasa sealladh aonaichte agus dùblaichte den dà shruth a chleachdadh.

Gu dearbh, tha feum air frithealaichean Prometheus a tha rim faighinn gu mòr. Aig Improbable, bidh sinn a’ toirt aire dha-rìribh do sgrùdadh dàta mionaid-air-mionaid, ach tha aon eisimpleir Prometheus gach brabhsair na aon phuing fàiligeadh. Faodaidh mearachd rèiteachaidh no fàilligeadh bathar-cruaidh sam bith leantainn gu call dàta cudromach. Faodaidh eadhon cleachdadh sìmplidh beagan aimhreit adhbhrachadh ann an cruinneachadh meatrach oir faodaidh ath-thòiseachadh a bhith fada nas fhaide na an ùine sgrìobaidh.

Stòradh earbsach de dhàta eachdraidheil

Is e stòradh meatrach saor, luath, fad-ùine ar bruadar (air a cho-roinn leis a’ mhòr-chuid de luchd-cleachdaidh Prometheus). Ann an Do-chreidsinneach, thàinig oirnn an ùine gleidhidh meatrach a rèiteachadh gu naoi latha (airson Prometheus 1.8). Tha seo a’ cur crìochan follaiseach air dè cho fada air ais as urrainn dhuinn coimhead.

Tha Prometheus 2.0 air a thighinn air adhart a thaobh seo, leis nach eil an àireamh de shreath ùine a’ toirt buaidh tuilleadh air coileanadh iomlan an fhrithealaiche (faic. Prìomh òraid KubeCon mu Prometheus 2). Ach, bidh Prometheus a’ stòradh dàta air diosc ionadail. Ged a dh’ fhaodadh teannachadh dàta àrd-èifeachdais cleachdadh SSD ionadail a lughdachadh gu mòr, tha crìoch fhathast air an ìre de dhàta eachdraidheil a ghabhas stòradh.

A bharrachd air an sin, aig Improbable tha cùram againn mu earbsachd, sìmplidheachd agus cosgais. Tha e nas duilghe diosgan mòra ionadail obrachadh agus cùl-taic. Bidh iad a’ cosg barrachd agus bidh feum aca air barrachd innealan cùl-taic, a’ leantainn gu iom-fhillteachd neo-riatanach.

Downsampling

Aon uair ‘s gun do thòisich sinn ag obair le dàta eachdraidheil, thuig sinn gu bheil duilgheadasan bunaiteach ann le big-O a bhios a’ dèanamh cheistean nas slaodaiche agus nas slaodaiche fhad ‘s a bhios sinn ag obair le seachdainean, mìosan, agus bliadhnaichean de dhàta.

Bhiodh am fuasgladh àbhaisteach don duilgheadas seo downsampling (downsampling) - a 'lùghdachadh tricead samplachadh chomharran. Le downsampling, is urrainn dhuinn “sgèile sìos” gu raon ùine nas motha agus an aon àireamh de shamhlaichean a chumail, a’ cumail cheistean freagairteach.

Tha ìsleachadh seann dàta na riatanas do-sheachanta airson fuasgladh stòraidh fad-ùine sam bith agus tha e taobh a-muigh raon vanilla Prometheus.

Amasan a bharrachd

B ’e aon de na h-amasan tùsail aig pròiseact Thanos a bhith ag amalachadh gu sgiobalta le ionadan Prometheus sam bith a bha ann mu thràth. B’ e an dàrna amas furasta obrachadh le glè bheag de bhacaidhean air faighinn a-steach. Bu chòir earbsa sam bith a bhith riaraichte gu furasta airson luchd-cleachdaidh beag agus mòr, a tha cuideachd a 'ciallachadh cosgais bunaiteach ìseal.

Thanos ailtireachd

Às deidh dhuinn na h-amasan againn a liostadh san roinn roimhe seo, obraichidh sinn troimhe agus faic mar a dh’ fhuasglas Thanos na duilgheadasan sin.

Sealladh cruinne

Gus sealladh cruinneil fhaighinn a bharrachd air na h-eisimpleirean Prometheus a th’ ann mar-thà, feumaidh sinn aon àite inntrigidh iarrtas a cheangal ris a h-uile seirbheisiche. Is e seo dìreach a bhios pàirt Thanos a’ dèanamh. Taobh a-muigh. Tha e air a chleachdadh ri taobh gach frithealaiche Prometheus agus bidh e na neach-ionaid, a’ frithealadh dàta Prometheus ionadail tro gRPC Store API, a’ ceadachadh dàta sreath ùine fhaighinn air ais a rèir taga agus raon ùine.

Air an taobh eile tha am pàirt Querier gun stàit, nach eil a’ dèanamh mòran a bharrachd air dìreach ceistean PromQL a fhreagairt tro API àbhaisteach Prometheus HTTP. Bidh Querier, Sidecar agus co-phàirtean Thanos eile a’ conaltradh tro pròtacal gossip.

Thanos - Prometheus scalable

  1. Bidh Querier, nuair a gheibh e iarrtas, a ’ceangal ris an t-seirbheisiche Store API co-fhreagarrach, is e sin, ris na Sidecars againn agus a’ faighinn dàta sreath ùine bho na frithealaichean Prometheus co-fhreagarrach.
  2. Às deidh sin, bidh e a’ cothlamadh nam freagairtean agus a’ cur an gnìomh ceist PromQL orra. Faodaidh Querier an dà chuid dàta neo-cheangailte agus dàta dùblaichte bho luchd-frithealaidh Prometheus HA a thoirt còmhla.

Bidh seo a’ fuasgladh pìos mòr den tòimhseachan againn - a’ cothlamadh dàta bho luchd-frithealaidh iomallach Prometheus ann an aon shealladh. Gu dearbh, chan urrainnear Thanos a chleachdadh ach airson am feart seo. Chan fheumar atharrachadh a dhèanamh air na frithealaichean Prometheus a th’ ann mar-thà!

Beatha sgeilp gun chrìoch!

Ach, nas luaithe no nas fhaide bidh sinn airson dàta a stòradh nas fhaide na an ùine gleidhidh àbhaisteach Prometheus. Thagh sinn stòradh stuthan gus dàta eachdraidheil a stòradh. Tha e ri fhaighinn gu farsaing ann an sgòthan sam bith a bharrachd air ionadan dàta air togalaichean agus tha e gu math cosg-èifeachdach. A bharrachd air an sin, tha cha mhòr stòr stuth sam bith ri fhaighinn tron ​​​​API S3 ainmeil.

Bidh Prometheus a’ sgrìobhadh dàta bho RAM gu diosc timcheall air a h-uile dà uair a thìde. Anns a ’bhloc dàta a tha air a stòradh tha an dàta gu lèir airson ùine stèidhichte agus tha e do-ruigsinneach. Tha seo gu math goireasach oir is urrainn dha Thanos Sidecar dìreach coimhead air an eòlaire dàta Prometheus agus, mar a bhios blocaichean ùra rim faighinn, an luchdachadh a-steach do bhucaid stòraidh stuthan.

Thanos - Prometheus scalable

Le bhith a’ luchdachadh a-steach do stòradh stuthan dìreach às deidh sgrìobhadh gu diosc leigidh sin leat sìmplidheachd an sgrìob (Prometheus agus Thanos Sidecar) a chumail suas. A tha a’ sìmpleachadh taic, cosgais agus dealbhadh siostam.

Mar a chì thu, tha cùl-taic dàta gu math sìmplidh. Ach dè mu dheidhinn a bhith a’ ceasnachadh dàta ann an stòradh stuthan?

Tha am pàirt Thanos Store ag obair mar neach-ionaid gus dàta fhaighinn air ais bho stòradh stuthan. Coltach ri Thanos Sidecar, bidh e a ’gabhail pàirt anns a’ bhuidheann gossip agus a ’buileachadh an Store API. San dòigh seo, faodaidh Querier a th’ ann mar-thà a làimhseachadh mar Sidecar, mar stòr eile de dhàta sreath ùine - chan eil feum air rèiteachadh sònraichte.

Thanos - Prometheus scalable

Tha grunn fhaidhlichean mòra ann am blocaichean dàta sreath ùine. Bhiodh an luchdachadh air iarrtas gu math neo-èifeachdach, agus le bhith gan tasgadh gu h-ionadail bhiodh feum air tòrr cuimhne agus àite diosc.

An àite sin, tha fios aig Store Gateway mar a làimhsicheas tu cruth stòraidh Prometheus. Taing do chlàr-ama ceiste snasail agus a ’tasgadh dìreach na pàirtean clàr-amais riatanach de bhlocaichean, tha e comasach ceistean iom-fhillte a lughdachadh gu àireamh as lugha de dh’ iarrtasan HTTP airson faidhlichean stòraidh a chuir an aghaidh. San dòigh seo, faodaidh tu an àireamh de dh’iarrtasan a lughdachadh le ceithir gu sia òrdughan meudachd agus amannan freagairt a choileanadh a tha sa chumantas duilich eadar-dhealachadh bho iarrtasan gu dàta air SSD ionadail.

Thanos - Prometheus scalable

Mar a chithear san dealbh gu h-àrd, tha Thanos Querier gu mòr a’ lughdachadh cosgais gach ceist mu stòradh dàta le bhith a’ cleachdadh cruth stòraidh Prometheus agus a’ cur dàta co-cheangailte ri taobh. A’ cleachdadh an dòigh-obrach seo, is urrainn dhuinn mòran iarrtasan singilte a chur còmhla ann an àireamh as lugha de dh’ obraichean mòra.

Compactation agus downsampling

Aon uair ‘s gu bheil bloc ùr de dhàta sreath ùine air a luchdachadh gu soirbheachail ann an stòradh stuthan, bidh sinn ga làimhseachadh mar dàta“ eachdraidheil ”, a tha ri fhaighinn sa bhad tro Gheata an Stòr.

Ach, às deidh beagan ùine, bidh blocaichean bho aon stòr (Prometheus le Sidecar) a’ cruinneachadh agus chan eil iad a’ cleachdadh an làn chomas clàrachaidh tuilleadh. Gus an duilgheadas seo fhuasgladh, thug sinn a-steach pàirt eile ris an canar Compactor. Tha e dìreach a’ buntainn einnsean teannachaidh ionadail Prometheus ri dàta eachdraidheil ann an stòradh stuthan agus faodar a ruith mar obair baidse sìmplidh bho àm gu àm.

Thanos - Prometheus scalable

Mar thoradh air teannachadh èifeachdach, chan eil a bhith a’ ceasnachadh an stòraidh thar ùine mhòr na dhuilgheadas a thaobh meud dàta. Ach, tha e do-sheachanta gum bi àrdachadh mòr ann an ùine cur an gnìomh ceist mar thoradh air a’ chosgais a dh’ fhaodadh a bhith ann a bhith a’ dì-phapadh billean luachan agus gan ruith tro phròiseasar ceist. Air an làimh eile, leis gu bheil ceudan de phuingean dàta gach piogsail air an sgrion, bidh e do-dhèanta eadhon an dàta fhaicinn aig làn rùn. Mar sin, chan e a-mhàin gu bheil ath-samplachadh comasach, ach cuideachd cha toir sin call follaiseach air cruinneas.

Thanos - Prometheus scalable

Gus dàta a lughdachadh, bidh Compactor gu leantainneach a’ cruinneachadh dàta aig rùn còig mionaidean agus uair a thìde. Airson gach pìos amh a tha air a chòdachadh le bhith a’ cleachdadh teannachadh TSDB XOR, tha diofar sheòrsaichean dàta iomlan air an stòradh, leithid min, max no suim airson aon bhloca. Leigidh seo le Querier cruinneachadh gu fèin-ghluasadach a thaghadh a tha iomchaidh airson ceist PromQL sònraichte.

Chan eil feum air rèiteachadh sònraichte gus an cleachd an neach-cleachdaidh dàta mionaideachd nas lugha. Bidh Querier gu fèin-ghluasadach ag atharrachadh eadar diofar rùintean agus dàta amh mar a bhios an neach-cleachdaidh a’ gluasad a-steach agus a-mach. Ma thogras tu, faodaidh an neach-cleachdaidh smachd a chumail air seo gu dìreach tron ​​​​pharamadair “ceum” san iarrtas.

Leis gu bheil cosgais stòradh aon GB ìosal, gu gnàthach bidh Thanos a’ stòradh dàta amh, dàta fuasglaidh còig mionaidean agus uair a thìde. Chan eil feum air an dàta tùsail a dhubhadh às.

Riaghailtean clàraidh

Eadhon le Thanos, tha riaghailtean clàraidh nam pàirt riatanach den stac sgrùdaidh. Bidh iad a’ lughdachadh iom-fhillteachd, latency, agus cosgais cheistean. Tha iad cuideachd goireasach dha luchd-cleachdaidh dàta cruinn fhaighinn a rèir meatrach. Tha Thanos stèidhichte air suidheachaidhean vanilla Prometheus, agus mar sin tha e iomchaidh gu leòr riaghailtean clàraidh agus riaghailtean rabhaidh a stòradh air frithealaiche Prometheus a tha ann mar-thà. Ach, ann an cuid de chùisean is dòcha nach bi seo gu leòr:

  • Rabhadh agus riaghailt chruinneil (mar eisimpleir, rabhadh nuair nach obraich seirbheis air barrachd air dhà de thrì cruinneachaidhean).
  • Riaghailt airson dàta taobh a-muigh stòradh ionadail.
  • Am miann a h-uile riaghailt agus rabhadh a stòradh ann an aon àite.

Thanos - Prometheus scalable

Airson na cùisean sin uile, tha Thanos a ’toirt a-steach pàirt air leth ris an canar Ruler, a bhios a’ tomhas riaghladh agus rabhadh tro Thanos Queries. Le bhith a’ toirt seachad StoreAPI ainmeil, gheibh an nód Ceist cothrom air meatrach a tha air ùr obrachadh a-mach. Nas fhaide air adhart bidh iad cuideachd air an stòradh ann an stòradh stuthan agus rim faighinn tro Gheata an Stòr.

Cumhachd Thanos

Tha Thanos sùbailte gu leòr airson a ghnàthachadh gus freagairt air na feumalachdan agad. Tha seo gu sònraichte feumail nuair a bhios tu a’ gluasad bho Prometheus soilleir. Bheir sinn geàrr-chunntas gu sgiobalta air na dh’ ionnsaich sinn mu cho-phàirtean Thanos le eisimpleir sgiobalta. Seo mar a bheir thu do bhanile Prometheus a-steach do shaoghal “stòradh meatrach gun chrìoch”:

Thanos - Prometheus scalable

  1. Cuir Thanos Sidecar ris na frithealaichean Prometheus agad - mar eisimpleir, inneal-càr taobh ann am pod Kubernetes.
  2. Cleachd iomadh mac-samhail Thanos Querier gus an urrainn dhut dàta fhaicinn. Aig an ìre seo tha e furasta gossip a stèidheachadh eadar Scraper agus Querier. Gus eadar-obrachadh cho-phàirtean a dhearbhadh, cleachd am meatrach 'thanos_cluster_members'.

Tha dìreach an dà cheum seo gu leòr gus sealladh cruinneil a thoirt seachad agus lughdachadh dàta gun fhiosta bho mac-samhail Prometheus HA! Dìreach ceangail na deas-bhòrd agad ri puing crìochnachaidh Querier HTTP no cleachd an Thanos UI gu dìreach.

Ach, ma tha feum agad air cùl-taic meatrach agus stòradh fad-ùine, feumaidh tu trì ceumannan eile a choileanadh:

  1. Cruthaich bucaid AWS S3 no GCS. Dèan rèiteachadh air Sidecar gus dàta a chopaigeadh gu na cuinneagan sin. Faodar stòradh dàta ionadail a lughdachadh a-nis.
  2. Cleachd Store Gateway agus ceangail e ris a’ bhuidheann gossip agad. A-nis faodaidh tu an dàta cùl-taic a cheasnachadh!
  3. Cleachd Compactor gus èifeachdas ceist a leasachadh thar amannan fada a’ cleachdadh teannachadh agus downsampling.

Ma tha thu airson tuilleadh fhaighinn a-mach, na bi leisg sùil a thoirt air an fheadhainn againn eisimpleirean follaiseach kubernetes и tòiseachadh!

Ann an dìreach còig ceumannan, thionndaidh sinn Prometheus gu bhith na shiostam sgrùdaidh earbsach le sealladh cruinneil, ùine stòraidh gun chrìoch agus cothrom àrd air meatrach.

Iarrtas tarraing: tha feum againn ort!

Thanos air a bhith na phròiseact le còd fosgailte bhon fhìor thoiseach. Tha amalachadh gun fhiosta le Prometheus agus an comas dìreach cuibhreann de Thanos a chleachdadh ga dhèanamh na dheagh roghainn airson an siostam sgrùdaidh agad a sgèileadh gun oidhirp.

Bidh sinn an-còmhnaidh a’ cur fàilte air Iarrtasan is Cùisean GitHub Pull. Anns an eadar-ama, faodaidh tu fios a chuir thugainn tro Github Issues no slack Improbable-eng #thanosma tha ceistean no fios air ais agad, no ma tha thu airson an eòlas agad a cho-roinn ga chleachdadh! Mas toil leat na bhios sinn a’ dèanamh aig Improbable, na bi leisg fios a chuir thugainn - bidh dreuchdan bàn againn an-còmhnaidh!

Ionnsaich tuilleadh mun chùrsa.

Source: www.habr.com

Cuir beachd ann