Thanos - Prometheus Scalable

Wergera gotarê bi taybetî ji bo xwendekarên qursê hatiye amadekirin "Pêkanîn û amûrên DevOps".

Fabian Reinartz Pêşdebirek nermalavê ye, Go fanatîk, û çareserkerê pirsgirêkê ye. Ew di heman demê de parêzvanek Prometheus û hev-avakarê amûra Kubernetes SIG ye. Di paşerojê de, ew endezyarek hilberînê li SoundCloud bû û rêberiya tîmê çavdêriyê li CoreOS kir. Niha li Google dixebite.

Bartek Plotka - Endezyarê Binesaziyê li Improbable. Ew bi teknolojiyên nû û pirsgirêkên pergalên belavbûyî re eleqedar e. Ew li Intel xwedan ezmûna bernamesaziyê ya nizm e, li Mesos ezmûna beşdarker, û ezmûna hilberîna SRE-ya cîhanî li Improbable heye. Ji bo baştirkirina cîhana mîkroxizmetan ve girêdayî ye. Sê hezkirinên wî: Golang, çavkaniya vekirî û voleybol.

Li hilbera meya ala SpatialOS-ê dinêrin, hûn dikarin texmîn bikin ku Improbable bi binesaziyek ewr a pir dînamîk, gerdûnî ya bi dehan komên Kubernetes hewce dike. Em yek ji wan yekem bûn ku pergala çavdêriyê bikar anîn Prometheus. Prometheus karibe bi mîlyonan metrikan di wextê rast de bişopîne û bi zimanek pirsê ya hêzdar tê ku dihêle hûn agahdariya ku hûn hewce ne derxînin.

Sadebûn û pêbaweriya Prometheus yek ji avantajên wê yên sereke ye. Lêbelê, gava ku em ji pîvanek diyar derbas bûn, em rastî gelek kêmasiyan hatin. Ji bo çareserkirina van pirsgirêkan me pêş xist Thanos projeyek çavkaniyek vekirî ye ku ji hêla Improbable ve hatî afirandin da ku komikên Prometheus ên heyî bi rengek bêkêmasî veguhezîne pergalek çavdêriyê ya bi hilanîna daneya dîrokî ya bêsînor. Thanos li ser Github heye vir.

Bi nûçeyên herî dawî yên ji Improbable re agahdar bin.

Armancên me bi Thanos re

Di astek diyar de, pirsgirêkên ku li derveyî kapasîteyên vanilla Prometheus derdikevin derdikevin. Meriv çawa petabytes daneyên dîrokî bi pêbawer û aborî hilîne? Ma ev dikare bêyî tawîzkirina dema bersivdayînê were kirin? Ma gengaz e ku meriv bi yek daxwazek API-ê bigihîje hemî metrîkên ku li ser serverên cûda yên Prometheus hene? Ma rêyek heye ku meriv daneyên dubare yên ku bi Prometheus HA hatine berhev kirin berhev bike?

Ji bo çareserkirina van pirsgirêkan, me Thanos ava kir. Di beşên jêrîn de tê vegotin ku me çawa nêzî van pirsgirêkan bû û armancên xwe rave dike.

Lêpirsîna daneyan ji gelek mînakên Prometheus (pirsa gerdûnî)

Prometheus ji bo parvekirinê nêzîkatiyek fonksiyonel pêşkêşî dike. Tewra yek serverek Prometheus jî têra xwe pîvandinê peyda dike da ku bikarhêneran hema hema di hemî rewşên karanînê de ji tevliheviyên parvekirina horizontal azad bike.

Digel ku ev modelek sazkirinê ya mezin e, bi gelemperî pêdivî ye ku meriv bi yek API an UI-a yekane - nêrînek gerdûnî - bigihîje daneyan li ser serverên Prometheus yên cûda. Bê guman, gengaz e ku meriv di yek panelek Grafana de gelek pirsan nîşan bide, lê her pirsek tenê li ser serverek Prometheus dikare were darve kirin. Ji hêla din ve, bi Thanos re hûn dikarin daneyan ji gelek serverên Prometheus bipirsin û berhev bikin ji ber ku ew hemî ji yek xalek dawîn têne gihîştin.

Berê, ji bo ku em di Improbable-ê de nêrînek gerdûnî bistînin, me mînakên Prometheus di pir-astek organîze kir. Federasyona Hiyerarşîk. Ev tê wateya afirandina yek serverek meta Prometheus ku ji her serverek pelê hin pîvanan berhev dike.

Thanos - Prometheus Scalable

Ev nêzîkatî bi pirsgirêk derket. Vê yekê di veavakirinên tevlihevtir de, lêzêdekirina xalek têkçûnek potansiyelek din, û sepandina qaîdeyên tevlihev peyda kiriye da ku pê ewle bibe ku xala dawî ya federasyonê tenê daneyên ku jê re hewce dike werdigire. Wekî din, ev celeb federasyon rê nade ku hûn nêrînek gerdûnî ya rastîn bistînin, ji ber ku ne hemî dane ji yek daxwazek API-yê peyda dibin.

Ji nêz ve bi vê ve girêdayî nerînek yekgirtî ya daneyên ku li ser pêşkêşkerên Prometheus-berdestbûna bilind (HA) hatine berhev kirin heye. Modela HA ya Prometheus serbixwe du caran daneyan berhev dike, ku ew qas hêsan e ku ne hêsan be. Lêbelê, karanîna nerînek hevgirtî û jêkvekirî ya her du çeman dê pir hêsantir be.

Bê guman, hewcedarî bi pêşkêşkerên Prometheus pir berdest heye. Li Improbable, em çavdêriya daneya hûrdem-deqîq bi rastî ciddî digirin, lê hebûna yek mînakek Prometheus li her komê xalek têkçûn e. Her xeletiyek veavakirinê an têkçûna hardware dikare bibe sedema windabûna daneyên girîng. Tewra verastkirinek hêsan dikare di berhevkirina metrîkan de bibe sedema têkçûnên piçûk ji ber ku ji nû ve destpêkirin dikare ji navbera qutkirinê pir dirêjtir be.

Depokirina pêbawer a daneyên dîrokî

Hilberîna metrîkên erzan, bilez û demdirêj xewna me ye (ji hêla pir bikarhênerên Prometheus ve hatî parve kirin). Di Improbable de, em neçar bûn ku heyama ragirtina metrîkê bi neh rojan veava bikin (ji bo Prometheus 1.8). Ev yek sînorên eşkere zêde dike ku em çiqas paşde dikarin binihêrin.

Prometheus 2.0 di vî warî de baştir bûye, ji ber ku hêjmara rêzikên demê êdî bandorê li performansa giştî ya serverê nake (binêre. Gotara sereke ya KubeCon di derbarê Prometheus 2 de). Lêbelê, Prometheus daneyên li ser dîska herêmî hilîne. Her çend berhevkirina daneya jêhatî ya bilind dikare karanîna SSD-ya herêmî bi girîngî kêm bike, di dawiyê de hîn jî sînorek ji mêjera daneyên dîrokî yên ku dikarin werin hilanîn heye.

Wekî din, li Improbable em bala xwe didin pêbawerî, sadebûn û lêçûnê. Dîskên herêmî yên mezin xebitandin û paşvegirtin dijwartir in. Ew bêtir lêçûn in û bêtir amûrên paşvekişandinê hewce dikin, ku di encamê de tevliheviya nehewce çêdibe.

Downsampling

Gava ku me dest bi xebata bi daneyên dîrokî kir, me fêm kir ku bi big-O re zehmetiyên bingehîn hene ku gava ku em bi daneyan hefte, meh û salan dixebitin pirsan hêdî û hêdîtir dike.

Çareseriya standard ji bo vê pirsgirêkê dê bibe daxistina nimûne (kêmkirin) - kêmkirina frekansa nimûneya sînyalê. Bi daxistina nimûneyê re, em dikarin "pîvek" bigihîjin deverek zemanek mezintir û heman hejmara nimûneyan biparêzin, pirsan bersivdar bihêlin.

Daxistina nimûneyên daneya kevn pêdiviya her çareseriyek hilanînê ya demdirêj e û li derveyî çarçoweya vanilla Prometheus e.

armancên Additional

Yek ji armancên bingehîn ên projeya Thanos ew bû ku bi her sazûmanên heyî yên Prometheus re bi yekcarî tevbigere. Armanca duyemîn hêsankirina operasyonê bi kêmbûna astengên ketinê bû. Pêdivî ye ku her pêwendiyek hem ji bo bikarhênerên piçûk û hem jî ji bo mezin bi hêsanî têr be, ku ev jî tê wateya lêçûnek bingehîn kêm.

mîmariya Thanos

Piştî ku armancên xwe di beşa berê de navnîş kirin, em bi wan re bixebitin û bibînin ka Thanos van pirsgirêkan çawa çareser dike.

Dîtina gerdûnî

Ji bo ku li ser bûyerên Prometheus ên heyî nêrînek gerdûnî bistînin, pêdivî ye ku em xalek têketina yek daxwazê ​​bi hemî serveran ve girêdin. Ya ku pêkhateya Thanos dike ev e. Sidecar. Ew li kêleka her serverek Prometheus tête bicîh kirin û wekî proxy tevdigere, daneyên herêmî yên Prometheus bi navgîniya gRPC Store API-yê re xizmet dike, dihêle ku daneyên rêzikên demê ji hêla etîket û rêza demê ve werin wergirtin.

Li aliyê din pêkhateya Querier-ê ya pîvazkirî, bêdewlet e, ku ji tenê bersiva pirsên PromQL-ê bi navgîniya Prometheus HTTP API-ya standard hindik zêdetir dike. Querier, Sidecar û hêmanên din ên Thanos bi navgîniya danûstandinê protokola gotegotan.

Thanos - Prometheus Scalable

  1. Querier, piştî wergirtina daxwazek, bi servera API-ya Store-ê ya têkildar, ango bi Sidecarên me ve tê girêdan û ji serverên Prometheus ên têkildar daneyên rêzikên demê distîne.
  2. Piştî wê, ew bersivan berhev dike û pirsek PromQL li ser wan dimeşîne. Querier dikare hem daneyên veqetandî û hem jî daneyên dubare yên ji pêşkêşkerên Prometheus HA bi hev re bike yek.

Ev perçeyek sereke ya puzzla me çareser dike - daneyên ji serverên Prometheus ên veqetandî di dîmenek yekane de berhev dike. Bi rastî, Thanos tenê ji bo vê taybetmendiyê dikare were bikar anîn. Ne hewce ye ku di serverên Prometheus ên heyî de guhartin bêne kirin!

Jiyana refikê ya bêsînor!

Lêbelê, zû an dereng em ê bixwazin ku daneyan li derveyî dema ragirtina Prometheus ya normal hilînin. Me hilanîna tiştan hilbijart ku daneyên dîrokî hilînin. Ew bi berfirehî li her ewr û her weha navendên daneyê yên li hundurê peyda dibe û pir biha ye. Digel vê yekê, hema hema her hilanîna tiştan bi navgîniya S3 API-ya naskirî heye.

Prometheus bi qasî du saetan carekê daneyan ji RAM-ê li ser dîskê dinivîse. Bloka daneya hilanîn hemî daneyan ji bo demek diyarkirî vedihewîne û neguhêrbar e. Ev pir rehet e ji ber ku Thanos Sidecar dikare bi hêsanî li pelrêça daneya Prometheus binêre û, her ku blokên nû peyda dibin, wan di kepçeyên hilanîna tiştan de bar bike.

Thanos - Prometheus Scalable

Barkirina nav hilanîna tiştan tavilê piştî nivîsandina li ser dîskê di heman demê de dihêle hûn sadebûna scraper (Prometheus û Thanos Sidecar) biparêzin. Ya ku piştgirî, lêçûn û sêwirana pergalê hêsan dike.

Wekî ku hûn dikarin bibînin, hilanîna daneyê pir hêsan e. Lê di derheqê hilanîna tiştan de lêpirsîna daneyan çi ye?

Parçeya Thanos Store wekî proxy tevdigere ku daneyan ji hilanîna tiştan bigire. Mîna Thanos Sidecar, ew beşdarî koma gotegotan dibe û API-ya Store-ê bicîh tîne. Bi vî rengî, Querier-a heyî dikare wê mîna Sidecar, wekî çavkaniyek din a daneya rêza demjimêran derman bike - konfigurasyonek taybetî hewce nake.

Thanos - Prometheus Scalable

Blokên daneya rêza demjimêr ji çend pelên mezin pêk tên. Barkirina wan li ser daxwazê ​​dê pir bêkêmasî be, û cachkirina wan li herêmî dê hewceyê hejmareke mezin ji bîr û cîhê dîskê bike.

Di şûna wê de, Store Gateway dizane ku meriv çawa bi forma hilanînê Prometheus re mijûl dibe. Bi saya plansazkerek jêpirsînê ya biaqil û cachkirina tenê beşên pêvek ên blokan, mimkun e ku meriv pirsên tevlihev bi hindiktirîn hejmarek daxwazên HTTP-ê kêm bike da ku pelên hilanînê bişopîne. Bi vî rengî, hûn dikarin hejmara daxwazan bi çar û şeş rêzikên mezinbûnê kêm bikin û bigihîjin demên bersivê yên ku bi gelemperî dijwar e ku meriv ji daxwaznameyên daneyên li ser SSD-ya herêmî cûda bike.

Thanos - Prometheus Scalable

Wekî ku di diagrama li jor de tê xuyang kirin, Thanos Querier bi karanîna formata hilanînê Prometheus û danîna daneyên têkildar li kêleka hev, lêçûna her lêpirsîna daneyên hilanînê bi girîngî kêm dike. Bi karanîna vê nêzîkbûnê, em dikarin gelek daxwazên yekane di nav hejmareke hindiktirîn operasyonên girseyî de bi hev re bikin.

Tevhevkirin û daxistina nimûne

Dema ku bloka nû ya daneyên rêzikên demê bi serfirazî di hilanîna tiştan de were barkirin, em wê wekî daneya "dîrokî" digirin, ku tavilê bi navgîniya Deriyê Store-ê peyda dibe.

Lêbelê, piştî demekê, blokên ji yek çavkaniyê (Prometheus bi Sidecar) kom dibin û êdî potansiyela tam îndekskirinê bikar naynin. Ji bo çareserkirina vê pirsgirêkê, me pêkhateyek din a bi navê Compactor destnîşan kir. Ew bi tenê motora berhevkirina herêmî ya Prometheus li ser daneyên dîrokî yên di hilanîna tiştan de bicîh tîne û dikare wekî karekî berhevokek demkî ya hêsan were xebitandin.

Thanos - Prometheus Scalable

Bi saya berhevkirina bikêrhatî, lêpirsîna hilanînê di demek dirêj de di warê mezinahiya daneyê de pirsgirêk dernakeve. Lêbelê, lêçûna potansiyel a rakirina mîlyarek nirx û meşandina wan bi navgîniya pêvajoyek pirsê de dê bê guman di dema pêkanîna pirsê de zêdebûnek berbiçav encam bide. Ji hêla din ve, ji ber ku li ser ekranê bi sedan xalên daneyê li ser pîxelê hene, ne gengaz e ku meriv daneyan bi çareseriya tevahî jî xuyang bike. Bi vî rengî, dakêşandin ne tenê gengaz e, lê di heman demê de dê bibe sedema windabûnek berbiçav a rastbûnê jî.

Thanos - Prometheus Scalable

Ji bo daxistina daneyan, Compactor bi domdarî daneyan bi çareseriyek pênc hûrdem û yek demjimêran berhev dike. Ji bo her perçeyek xav a ku bi karanîna kompresyona TSDB XOR hatî kod kirin, celebên cûda yên daneya hevgirtî têne hilanîn, wekî min, max an sum ji bo yek blokê. Ev dihêle Querier bixweber berhevokek ku ji bo pirsek PromQL-ya diyarkirî guncan e hilbijêrin.

Ji bo ku bikarhêner daneya rast kêmkirî bikar bîne veavakirinek taybetî hewce nake. Querier bixweber di navbera çareseriyên cihêreng û daneyên xav de diguhere dema ku bikarhêner zoom dike û dike. Ger bixwaze, bikarhêner dikare vê rasterast bi navgîniya pîvana "gav" ya di daxwazê ​​de kontrol bike.

Ji ber ku lêçûna hilanîna yek GB kêm e, ji hêla xwerû ve Thanos daneyên xav, daneyên çareseriyê yên pênc hûrdemî û yek-saetê hilîne. Ne hewce ye ku daneyên orîjînal jêbirin.

qaîdeyên Recording

Tewra bi Thanos re, qaîdeyên tomarkirinê beşek bingehîn a stûna çavdêriyê ne. Ew tevlihevî, dereng, û lêçûna pirsan kêm dikin. Ew ji bo bikarhêneran jî hêsan in ku daneyên berhevkirî ji hêla metrikan ve bistînin. Thanos li ser mînakên vanilla Prometheus-ê ye, ji ber vê yekê ew bi tevahî tê pejirandin ku qaîdeyên tomarkirinê û rêzikên hişyariyê li ser serverek Prometheus ya heyî hilînin. Lêbelê, di hin rewşan de dibe ku ev ne bes be:

  • Hişyar û hukmek gerdûnî (mînak, hişyariyek dema ku karûbarek ji du ji sê koman zêdetir kar nake).
  • Qanûna daneyên li derveyî hilanîna herêmî.
  • Daxwaza hilanîna hemî rêgez û hişyariyan li yek cîhek.

Thanos - Prometheus Scalable

Ji bo van hemî bûyeran, Thanos pêkhateyek cihêreng a bi navê Ruler vedihewîne, ku bi riya Thanos Queries qayde û hişyariyê hesab dike. Bi peydakirina StoreAPI-ya naskirî, girêka Query dikare bigihîje metrîkên nû yên hesabkirî. Dûv re ew jî di hilanîna tiştan de têne hilanîn û bi navgîniya Store Gateway têne peyda kirin.

Hêza Thanos

Thanos têra xwe maqûl e ku li gorî hewcedariyên we were xweş kirin. Ev bi taybetî dema ku ji Prometheusê sade koç dikin bikêr e. Ka em bi mînakek bilez tiştên ku me di derheqê pêkhateyên Thanos de fêr bûne vegerînin. Li vir e ku meriv çawa vanilla Prometheus-ê xwe bigire nav cîhana "depokirina metrîkên bêsînor":

Thanos - Prometheus Scalable

  1. Thanos Sidecar li pêşkêşkerên Prometheus-ê xwe zêde bikin - mînakî, konteynirek kêlekê di podek Kubernetes de.
  2. Gelek kopiyên Thanos Querier bicîh bikin da ku karibin daneyan bibînin. Di vê qonaxê de hêsan e ku meriv gotegotan di navbera Scraper û Querier de saz bike. Ji bo kontrolkirina danûstendina pêkhateyan, pîvana 'thanos_cluster_members' bikar bînin.

Tenê van her du gavan bes in ku ji kopiyên potansiyel ên Prometheus HA nihêrîna gerdûnî û jêbirina daneya bêkêmasî peyda bikin! Tenê dashboardên xwe bi xala dawiya Querier HTTP ve girêdin an rasterast Thanos UI bikar bînin.

Lêbelê, heke hûn hewceyê hilanîna metrîkan û hilanîna dirêj-dirêj hewce ne, hûn ê hewce bikin ku sê gavên din temam bikin:

  1. Bûka AWS S3 an GCS biafirînin. Sidecar-ê mîheng bikin ku daneyan li van kepçeyan kopî bike. Naha hilanîna daneyên herêmî dikare were kêm kirin.
  2. Store Gateway saz bikin û wê bi koma gotegotên xweya heyî ve girêdin. Naha hûn dikarin daneya paşkêşkirî bipirsin!
  3. Compactor-ê bicîh bikin da ku bi karanîna berhevkirin û dakêşanê re karûbarê pirsê di demên dirêj de çêtir bikin.

Ger hûn dixwazin bêtir zanibin, dudilî nebin ku hûn li me binêre nimûneyên kubernetes diyar dikin и dest pê dike!

Tenê di pênc gavan de, me Prometheus veguherand pergalek şopandinê ya pêbawer bi dîtina gerdûnî, dema hilanînê ya bêsînor û hebûna potansiyela bilind a metrîkan.

Daxwaza bikişînin: em ji we re hewce ne!

Thanos ji destpêkê ve projeyek çavkaniyek vekirî ye. Yekbûna bêkêmasî bi Prometheus re û şiyana ku hûn tenê beşek ji Thanos bikar bînin, wê ji bo pîvandina pergala çavdêriya weya bêhêvî bijarek hêja dike.

Em her gav pêşwaziya Daxwaz û Pirsgirêkên GitHub-ê dikin. Di vê navberê de, bi dilxwazî ​​​​bi me re bi Pirsgirêkên Github an slack re têkilî daynin Ne gengaz-eng #thanosger pirs an bertekên we hebin, an hûn dixwazin ezmûna xwe bi karanîna wê parve bikin! Heke hûn ji tiştê ku em li Improbable dikin hez dikin, dudilî nebin ku bi me re têkilî daynin - her tim valahiyên me hene!

Di derbarê qursê de bêtir fêr bibin.

Source: www.habr.com

Add a comment