Thanos - Scalable Prometheus

Þýðing greinarinnar var unnin sérstaklega fyrir nemendur námskeiðsins „DevOps venjur og verkfæri“.

Fabian Reinartz er hugbúnaðarhönnuður, Go ofstækismaður, og leysa vandamál. Hann er einnig Prometheus viðhaldsaðili og meðstofnandi Kubernetes SIG tækjabúnaðar. Áður var hann framleiðsluverkfræðingur hjá SoundCloud og stýrði eftirlitsteyminu hjá CoreOS. Vinnur núna hjá Google.

Bartek Plotka - Innviðaverkfræðingur hjá Improbable. Hann hefur áhuga á nýrri tækni og vandamálum dreifðra kerfa. Hann hefur reynslu af smáforritun hjá Intel, reynslu af þátttakendum hjá Mesos og heimsklassa SRE framleiðslureynslu hjá Improbable. Tileinkað því að bæta heim örþjónustunnar. Ástirnar hans þrjár: Golang, opinn uppspretta og blak.

Þegar þú horfir á flaggskipsvöruna okkar SpatialOS geturðu giskað á að Ólíklegt krefst mjög kraftmikillar skýjainnviða á heimsvísu með tugum Kubernetes þyrpinga. Við vorum ein af þeim fyrstu til að nota eftirlitskerfi Prometheus. Prometheus er fær um að fylgjast með milljónum mælikvarða í rauntíma og kemur með öflugt fyrirspurnartungumál sem gerir þér kleift að vinna úr þeim upplýsingum sem þú þarft.

Einfaldleiki og áreiðanleiki Prometheus er einn af helstu kostum þess. Hins vegar, þegar við komumst yfir ákveðinn mælikvarða, lentum við í nokkrum göllum. Til að leysa þessi vandamál höfum við þróað Thanos er opinn uppspretta verkefni búið til af Improbable til að umbreyta núverandi Prometheus þyrpingum óaðfinnanlega í eitt vöktunarkerfi með ótakmarkaðri sögulegri gagnageymslu. Thanos er fáanlegt á Github hér.

Fylgstu með nýjustu fréttum frá Improbable.

Markmið okkar með Thanos

Á ákveðnum mælikvarða koma upp vandamál sem eru umfram getu vanillu Prometheus. Hvernig á að geyma petabytes af sögulegum gögnum á áreiðanlegan og hagkvæman hátt? Er hægt að gera þetta án þess að skerða viðbragðstíma? Er hægt að fá aðgang að öllum mælingum sem staðsettar eru á mismunandi Prometheus netþjónum með einni API beiðni? Er einhver leið til að sameina afrituð gögn sem safnað er með Prometheus HA?

Til að takast á við þessi vandamál bjuggum við til Thanos. Eftirfarandi kaflar lýsa því hvernig við nálguðumst þessi mál og útskýra markmið okkar.

Spurning um gögn frá mörgum Prometheus tilvikum (alþjóðleg fyrirspurn)

Prometheus býður upp á hagnýta nálgun við klippingu. Jafnvel einn Prometheus þjónn veitir nægan sveigjanleika til að losa notendur við margbreytileika láréttrar klippingar í næstum öllum notkunartilfellum.

Þó að þetta sé frábært dreifingarlíkan er oft nauðsynlegt að fá aðgang að gögnum á mismunandi Prometheus netþjónum í gegnum eitt API eða notendaviðmót - alþjóðlegt útsýni. Auðvitað er hægt að birta margar fyrirspurnir í einu Grafana spjaldi, en hverja fyrirspurn er aðeins hægt að framkvæma á einum Prometheus netþjóni. Á hinn bóginn, með Thanos geturðu spurt og safnað saman gögnum frá mörgum Prometheus netþjónum þar sem þeir eru allir aðgengilegir frá einum endapunkti.

Áður, til að fá heildarsýn í Improbable, skipulögðum við Prometheus tilvik okkar í fjölþrepa Stigveldissamband. Þetta þýddi að búa til einn Prometheus metaþjón sem safnar sumum mælingum frá hverjum laufþjóni.

Thanos - Scalable Prometheus

Þessi nálgun reyndist erfið. Þetta hefur leitt af sér flóknari uppsetningar, bætt við hugsanlegum bilunarpunkti og beitingu flókinna reglna til að tryggja að sambandsendapunkturinn fái aðeins þau gögn sem hann þarfnast. Að auki leyfir þessi tegund sambands þér ekki að fá sanna heildarsýn, þar sem ekki eru öll gögn tiltæk frá einni API beiðni.

Nátengt þessu er sameinuð sýn á gögnum sem safnað er á Prometheus netþjónum með háum aðgengi (HA). HA líkan Prometheus safnar gögnum sjálfstætt tvisvar, sem er svo einfalt að það gæti ekki verið einfaldara. Hins vegar væri mun þægilegra að nota sameinaða og aftvíplaða mynd af báðum straumunum.

Auðvitað er þörf fyrir Prometheus netþjóna sem eru mjög fáanlegir. Hjá Improbable tökum við gagnavöktun mínútu fyrir mínútu mjög alvarlega, en að hafa eitt Prometheus tilvik á hvern þyrping er einn bilunarpunktur. Sérhver stillingarvilla eða vélbúnaðarbilun getur hugsanlega leitt til taps á mikilvægum gögnum. Jafnvel einföld uppsetning getur valdið minniháttar truflunum á söfnun mæligilda vegna þess að endurræsingar geta verið umtalsvert lengri en skafabilið.

Áreiðanleg geymsla á sögulegum gögnum

Ódýr, hröð, langtíma geymsla mæligilda er draumur okkar (sem flestir Prometheus notendur deila). Í Ólíkindum neyddumst við til að stilla varðveislutíma mælinga í níu daga (fyrir Prometheus 1.8). Þetta setur augljós takmörk fyrir því hversu langt aftur við getum litið.

Prometheus 2.0 hefur batnað hvað þetta varðar, þar sem fjöldi tímaraða hefur ekki lengur áhrif á heildarafköst netþjónsins (sjá. KubeCon grunntónn um Prometheus 2). Hins vegar geymir Prometheus gögn á staðbundnum diski. Þrátt fyrir að afkastamikil gagnaþjöppun geti dregið verulega úr staðbundinni SSD notkun, þá eru enn takmörk fyrir því magni af sögulegum gögnum sem hægt er að geyma.

Að auki, hjá Improbable er okkur sama um áreiðanleika, einfaldleika og kostnað. Stórir staðbundnir diskar eru erfiðari í notkun og öryggisafrit. Þeir kosta meira og krefjast fleiri öryggisafritunartækja, sem leiðir til óþarfa flóknar.

Niðursýni

Þegar við byrjuðum að vinna með söguleg gögn komumst við að því að það eru grundvallarerfiðleikar með big-O sem gera fyrirspurnir hægari og hægari eftir því sem við vinnum með vikur, mánuði og ár af gögnum.

Staðlað lausn á þessu vandamáli væri niðursýni (downsampling) - minnkar sýnatökutíðni merkja. Með niðursýni getum við „skalað niður“ í stærra tímabil og viðhaldið sama fjölda sýna og haldið fyrirspurnum móttækilegum.

Niðursýni úr gömlum gögnum er óhjákvæmileg krafa allra langtímageymslulausna og er utan viðfangsefnis vanillu Prometheus.

Aukamarkmið

Eitt af upphaflegu markmiðum Thanos verkefnisins var að samþætta óaðfinnanlega allar núverandi Prometheus uppsetningar. Annað markmiðið var auðveld notkun með lágmarks aðgangshindrunum. Auðvelt ætti að vera hægt að fullnægja hvers kyns ósjálfstæði fyrir bæði litla og stóra notendur, sem þýðir einnig lágan grunnkostnað.

Thanos arkitektúr

Eftir að hafa skráð markmið okkar í fyrri hluta skulum við vinna í gegnum þau og sjá hvernig Thanos leysir þessi vandamál.

Alheimssýn

Til að fá hnattræna sýn ofan á núverandi Prometheus tilvik þurfum við að tengja einn aðgangsstað beiðni við alla netþjóna. Þetta er nákvæmlega það sem Thanos hluti gerir. Sidecar. Það er sett upp við hliðina á hverjum Prometheus netþjóni og virkar sem umboð, þjónar staðbundnum Prometheus gögnum í gegnum gRPC Store API, sem gerir kleift að sækja tímaraðargögn eftir merki og tímabili.

Á hinni hliðinni er útskorinn, ríkisfangslausi Querier íhluturinn, sem gerir lítið annað en að svara PromQL fyrirspurnum í gegnum staðlaða Prometheus HTTP API. Querier, Sidecar og aðrir Thanos íhlutir hafa samskipti í gegnum slúðursamskiptareglur.

Thanos - Scalable Prometheus

  1. Querier, þegar hann fær beiðni, tengist samsvarandi Store API netþjóni, það er hliðarbílum okkar og fær tímaraðargögn frá samsvarandi Prometheus netþjónum.
  2. Eftir það sameinar það svörin og framkvæmir PromQL fyrirspurn á þau. Querier getur sameinað bæði sundurlaus gögn og afrit gagna frá Prometheus HA netþjónum.

Þetta leysir stóran hluta af púsluspilinu okkar - að sameina gögn frá einangruðum Prometheus netþjónum í eina sýn. Reyndar er aðeins hægt að nota Thanos fyrir þennan eiginleika. Engar breytingar þarf að gera á núverandi Prometheus netþjónum!

Ótakmarkað geymsluþol!

Hins vegar munum við fyrr eða síðar vilja geyma gögn umfram venjulegan varðveislutíma Prometheus. Við völdum hlutgeymslu til að geyma söguleg gögn. Það er víða fáanlegt í hvaða skýi sem er sem og gagnaver á staðnum og er mjög hagkvæmt. Að auki er næstum hvaða geymslupláss sem er í boði í gegnum hið þekkta S3 API.

Prometheus skrifar gögn úr vinnsluminni á disk á um það bil tveggja tíma fresti. Geymd gagnablokk inniheldur öll gögn í ákveðinn tíma og er óbreytanleg. Þetta er mjög þægilegt vegna þess að Thanos Sidecar getur einfaldlega skoðað Prometheus gagnaskrána og, þegar nýjar blokkir verða tiltækar, hlaðið þeim í geymslufötu fyrir hluti.

Thanos - Scalable Prometheus

Með því að hlaða inn hlutum strax eftir að hafa verið skrifað á disk geturðu einnig viðhaldið einfaldleika sköfunnar (Prometheus og Thanos Sidecar). Sem einfaldar stuðning, kostnað og kerfishönnun.

Eins og þú sérð er öryggisafrit af gögnum mjög einfalt. En hvað með að spyrjast fyrir um gögn í hlutageymslu?

Thanos Store hluti virkar sem umboð til að sækja gögn úr hlutageymslu. Eins og Thanos Sidecar, tekur það þátt í slúðurklasanum og innleiðir Store API. Þannig getur núverandi Querier meðhöndlað það eins og Sidecar, sem önnur uppspretta tímaraðagagna - engin sérstök uppsetning er nauðsynleg.

Thanos - Scalable Prometheus

Tímaraðir gagnablokkir samanstanda af nokkrum stórum skrám. Það væri frekar óhagkvæmt að hlaða þeim á eftirspurn og að vista þau á staðnum myndi krefjast gríðarlegt magn af minni og plássi.

Þess í stað veit Store Gateway hvernig á að höndla Prometheus geymslusniðið. Þökk sé snjöllum fyrirspurnatímaáætlun og aðeins nauðsynlegum vísitöluhlutum blokka í skyndiminni er hægt að draga úr flóknum fyrirspurnum í lágmarksfjölda HTTP beiðna til að mótmæla geymsluskrám. Á þennan hátt geturðu fækkað beiðnum um fjórar til sex stærðargráður og náð viðbragðstíma sem almennt er erfitt að greina frá beiðnum um gögn á staðbundnum SSD.

Thanos - Scalable Prometheus

Eins og sést á skýringarmyndinni hér að ofan, dregur Thanos Querier verulega úr kostnaði við hverja fyrirspurn á gagnageymslugögnum með því að nýta Prometheus geymslusniðið og setja tengd gögn hlið við hlið. Með því að nota þessa nálgun getum við sameinað margar stakar beiðnir í lágmarksfjölda magnaðgerða.

Þjöppun og niðursýni

Þegar ný blokk af tímaraðargögnum hefur tekist að hlaða inn í hlutageymslu, förum við með það sem „söguleg“ gögn, sem eru strax aðgengileg í gegnum Store Gateway.

Hins vegar, eftir nokkurn tíma, safnast blokkir frá einni uppsprettu (Prometheus með hliðarvagni) og nýta ekki lengur fulla verðtryggingarmöguleika. Til að leysa þetta vandamál kynntum við annan íhlut sem heitir Compactor. Það beitir einfaldlega staðbundinni þjöppunarvél Prometheus á söguleg gögn í hlutageymslu og er hægt að keyra það sem einfalt reglubundið lotuverk.

Thanos - Scalable Prometheus

Þökk sé skilvirkri þjöppun veldur það ekki vandamálum hvað varðar gagnastærð að spyrjast fyrir um geymsluna yfir langan tíma. Hins vegar mun hugsanlegur kostnaður við að taka upp milljarð gilda og keyra þau í gegnum fyrirspurnarvinnsluaðila óhjákvæmilega leiða til stórkostlegrar aukningar á framkvæmdartíma fyrirspurna. Á hinn bóginn, þar sem það eru hundruðir gagnapunkta á hvern pixla á skjánum, verður það ómögulegt að sjá gögnin í fullri upplausn. Þannig er niðursýni ekki aðeins möguleg heldur mun hún ekki leiða til áberandi taps á nákvæmni.

Thanos - Scalable Prometheus

Til að draga úr gögnum safnar Compactor stöðugt saman gögnum með upplausn upp á fimm mínútur og eina klukkustund. Fyrir hvern hráan klump sem er umritaður með TSDB XOR þjöppun, eru geymdar mismunandi gerðir af samanlögðum gögnum, svo sem mín, max eða summa fyrir einn blokk. Þetta gerir Querier kleift að velja sjálfkrafa safn sem er viðeigandi fyrir tiltekna PromQL fyrirspurn.

Engar sérstakar stillingar eru nauðsynlegar til að notandinn geti notað gögn með minni nákvæmni. Querier skiptir sjálfkrafa á milli mismunandi upplausna og hrágagna þegar notandinn stækkar og stækkar. Ef þess er óskað getur notandinn stjórnað þessu beint í gegnum „skref“ færibreytuna í beiðninni.

Þar sem kostnaður við að geyma eitt GB er lítill, geymir Thanos sjálfgefið hrá gögn, fimm mínútna og klukkutíma upplausnargögn. Það er engin þörf á að eyða upprunalegu gögnunum.

Upptökureglur

Jafnvel með Thanos eru upptökureglur ómissandi hluti af vöktunarstaflanum. Þeir draga úr flækjustig, leynd og kostnaði við fyrirspurnir. Þeir eru einnig þægilegir fyrir notendur að fá samansöfnuð gögn eftir mælingum. Thanos er byggt á vanillu Prometheus tilfellum, svo það er fullkomlega ásættanlegt að geyma upptökureglur og viðvörunarreglur á núverandi Prometheus netþjóni. Hins vegar gæti þetta í sumum tilfellum ekki verið nóg:

  • Alþjóðleg viðvörun og regla (til dæmis viðvörun þegar þjónusta virkar ekki á fleiri en tveimur af þremur klösum).
  • Regla fyrir gögn utan staðbundinnar geymslu.
  • Löngunin til að geyma allar reglur og viðvaranir á einum stað.

Thanos - Scalable Prometheus

Fyrir öll þessi tilvik inniheldur Thanos sérstakan hluta sem kallast Ruler, sem reiknar reglu og viðvörun í gegnum Thanos Queries. Með því að útvega vel þekkt StoreAPI getur fyrirspurnarhnúturinn fengið aðgang að nýútreiknuðum mælingum. Síðar eru þau einnig geymd í hlutageymslu og gerð aðgengileg í gegnum Store Gateway.

Kraftur Thanos

Thanos er nógu sveigjanlegt til að vera sérsniðið að þínum þörfum. Þetta er sérstaklega gagnlegt þegar flutt er frá venjulegum Prometheus. Við skulum rifja upp það sem við höfum lært um Thanos íhluti í fljótu bragði með stuttu dæmi. Svona á að taka vanillu Prometheus inn í heim „ótakmarkaðrar mælingageymslu“:

Thanos - Scalable Prometheus

  1. Bættu Thanos Sidecar við Prometheus netþjóna þína - til dæmis hliðarvagn í Kubernetes hólf.
  2. Settu upp margar Thanos Querier eftirlíkingar til að geta skoðað gögn. Á þessu stigi er auðvelt að setja upp slúður á milli Scraper og Querier. Til að athuga samspil íhluta, notaðu mæligildið 'thanos_cluster_members'.

Aðeins þessi tvö skref eru nóg til að veita hnattræna sýn og hnökralausa gagnaafritun frá hugsanlegum Prometheus HA eftirlíkingum! Tengdu einfaldlega mælaborðin þín við Querier HTTP endapunktinn eða notaðu Thanos notendaviðmótið beint.

Hins vegar, ef þú þarfnast öryggisafrits og langtímageymslu þarftu að ljúka þremur skrefum í viðbót:

  1. Búðu til AWS S3 eða GCS fötu. Stilltu Sidecar til að afrita gögn í þessar fötur. Nú er hægt að lágmarka staðbundna gagnageymslu.
  2. Settu upp Store Gateway og tengdu það við núverandi slúðurklasann þinn. Nú geturðu spurt um afrituð gögnin!
  3. Notaðu Compactor til að bæta skilvirkni fyrirspurna yfir langan tíma með því að nota þjöppun og niðursýni.

Ef þú vilt vita meira skaltu ekki hika við að kíkja á okkar kubernetes augljós dæmi и að byrja!

Í aðeins fimm skrefum breyttum við Prometheus í áreiðanlegt eftirlitskerfi með hnattrænu útsýni, ótakmarkaðan geymslutíma og mögulega mikið framboð á mælingum.

Dragðu beiðni: við þurfum þig!

Thanos hefur verið opinn hugbúnaður frá upphafi. Óaðfinnanlegur samþætting við Prometheus og hæfileikinn til að nota aðeins hluta af Thanos gerir það að frábæru vali til að stækka eftirlitskerfið þitt áreynslulaust.

Við fögnum alltaf GitHub Pull Beiðnum og vandamálum. Í millitíðinni skaltu ekki hika við að hafa samband við okkur í gegnum Github Issues eða slaka Ólíklegt-eng #thanosef þú hefur spurningar eða athugasemdir, eða vilt deila reynslu þinni af því að nota það! Ef þér líkar það sem við gerum hjá Improbable skaltu ekki hika við að hafa samband við okkur - við höfum alltaf laus störf!

Frekari upplýsingar um námskeiðið.

Heimild: www.habr.com

Bæta við athugasemd