Þýðing greinarinnar var unnin sérstaklega fyrir nemendur námskeiðsins
Þ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
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ð
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
Þ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á.
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 ú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.
Á 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
- 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.
- 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.
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.
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.
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.
Þö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.
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ð.
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“:
- Bættu Thanos Sidecar við Prometheus netþjóna þína - til dæmis hliðarvagn í Kubernetes hólf.
- 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:
- 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.
- Settu upp Store Gateway og tengdu það við núverandi slúðurklasann þinn. Nú geturðu spurt um afrituð gögnin!
- 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
Í 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!
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
Heimild: www.habr.com