Thanos - Scalable Prometheus

Cov lus txhais ntawm tsab xov xwm tau npaj tshwj xeeb rau cov tub ntxhais kawm ntawm chav kawm "DevOps kev coj ua thiab cov cuab yeej".

Fabian Reinartz yog tus tsim tawm software, Go fanatic, thiab daws teeb meem. Nws kuj yog tus tswj hwm Prometheus thiab tus tsim ntawm Kubernetes SIG instrumentation. Yav dhau los, nws yog ib tus kws tsim khoom tsim khoom ntawm SoundCloud thiab coj pab pawg saib xyuas ntawm CoreOS. Tam sim no ua haujlwm ntawm Google.

Bartek Ploj - Infrastructure Engineer ntawm Improbable. Nws txaus siab rau cov thev naus laus zis tshiab thiab cov teeb meem ntawm kev faib tshuab. Nws muaj kev paub txog kev ua haujlwm qis ntawm Intel, kev koom tes hauv Mesos, thiab kev tsim khoom hauv ntiaj teb SRE ntawm Improbable. Dedicated los txhim kho lub ntiaj teb no ntawm microservices. Nws peb txoj kev hlub: Golang, qhib qhov chaw thiab ntaus pob.

Saib ntawm peb cov khoom lag luam tseem ceeb SpatialOS, koj tuaj yeem kwv yees tias Improbable yuav tsum muaj lub zog loj heev, thoob ntiaj teb huab huab txheej txheem nrog ntau ntau Kubernetes pawg. Peb yog ib tus thawj coj siv lub tshuab saib xyuas Prometheus. Prometheus muaj peev xwm taug qab ntau lab tus ntsuas hauv lub sijhawm thiab tuaj nrog cov lus nug muaj zog uas tso cai rau koj rho tawm cov ntaub ntawv koj xav tau.

Qhov yooj yim thiab kev ntseeg siab ntawm Prometheus yog ib qho ntawm nws qhov zoo. Txawm li cas los xij, thaum peb tau dhau los ntawm ib qho kev ntsuas, peb tau ntsib ntau qhov tsis zoo. Txhawm rau daws cov teeb meem no peb tau tsim Thanos yog qhov qhib qhov project tsim los ntawm Improbable rau seamlessly hloov pauv Prometheus pawg uas twb muaj lawm rau hauv ib qho kev soj ntsuam nrog cov ntaub ntawv keeb kwm tsis txwv. Thanos muaj nyob rau ntawm Github no.

Nyob twj ywm nrog cov xov xwm tshiab los ntawm Improbable.

Peb cov hom phiaj nrog Thanos

Ntawm ib qho kev ntsuas, teeb meem tshwm sim uas dhau lub peev xwm ntawm vanilla Prometheus. Yuav ua li cas ntseeg tau thiab kev lag luam khaws cia petabytes ntawm cov ntaub ntawv keeb kwm? Qhov no puas tuaj yeem ua tiav yam tsis muaj kev cuam tshuam lub sijhawm teb? Puas yog nws muaj peev xwm nkag mus rau txhua qhov kev ntsuas nyob rau ntawm Prometheus servers sib txawv nrog ib qho kev thov API? Puas muaj ib txoj hauv kev los ua ke cov ntaub ntawv rov sau ua ke siv Prometheus HA?

Txhawm rau daws cov teeb meem no, peb tsim Thanos. Cov tshooj hauv qab no piav qhia peb yuav ua li cas thiaj li tau txais cov teeb meem no thiab piav qhia peb lub hom phiaj.

Nug cov ntaub ntawv los ntawm ntau yam Prometheus (cov lus nug thoob ntiaj teb)

Prometheus muab txoj hauv kev ua haujlwm rau kev sib tsoo. Txawm hais tias ib tus neeg rau zaub mov Prometheus muab qhov muaj peev xwm txaus rau cov neeg siv dawb los ntawm qhov nyuaj ntawm kab rov tav sharding hauv yuav luag txhua qhov kev siv.

Thaum qhov no yog tus qauv xa tawm zoo, nws feem ntau yuav tsum nkag mus rau cov ntaub ntawv ntawm Prometheus servers sib txawv los ntawm ib qho API lossis UI - kev pom thoob ntiaj teb. Tau kawg, nws tuaj yeem tso saib ntau cov lus nug hauv ib lub vaj huam sib luag Grafana, tab sis txhua qhov lus nug tsuas yog ua tiav ntawm ib tus neeg rau zaub mov Prometheus. Ntawm qhov tod tes, nrog Thanos koj tuaj yeem nug thiab sau cov ntaub ntawv los ntawm ntau lub Prometheus servers vim lawv txhua tus nkag tau los ntawm ib qho kawg nkaus.

Yav dhau los, kom tau txais kev pom thoob ntiaj teb hauv Improbable, peb tau teeb tsa peb cov xwm txheej Prometheus mus rau ntau qib. Hierarchical Federation. Qhov no txhais tau tias tsim ib qho Prometheus meta server uas sau qee qhov kev ntsuas los ntawm txhua nplooj ntawv server.

Thanos - Scalable Prometheus

Txoj kev no ua pov thawj teeb meem. Qhov no tau ua rau muaj kev teeb tsa ntau dua, qhov sib ntxiv ntawm qhov muaj peev xwm ntxiv ntawm qhov tsis ua tiav, thiab kev siv cov kev cai nyuaj kom ntseeg tau tias tsoomfwv qhov kawg tsuas tau txais cov ntaub ntawv nws xav tau. Tsis tas li ntawd, lub koom haum zoo li no tsis tso cai rau koj kom tau txais kev pom tseeb thoob ntiaj teb, vim tsis yog txhua cov ntaub ntawv muaj los ntawm ib qho kev thov API.

Zoo sib xws rau qhov no yog ib qho kev sib koom ua ke ntawm cov ntaub ntawv sau los ntawm high-availability (HA) Prometheus servers. Prometheus 'HA qauv ntawm nws tus kheej sau cov ntaub ntawv ob zaug, uas yooj yim heev nws yuav tsis yooj yim dua. Txawm li cas los xij, kev siv qhov sib xyaw ua ke thiab kev pom ntawm ob lub kwj deg yuav yooj yim dua.

Tau kawg, muaj qhov xav tau rau Prometheus servers uas muaj ntau heev. Ntawm Improbable, peb siv cov ntaub ntawv ib feeb-rau-feeb saib xyuas tiag tiag, tab sis muaj ib qho piv txwv Prometheus ib pawg yog ib qho ntawm qhov tsis ua tiav. Ib qho teeb meem kev teeb tsa lossis kho vajtse tsis ua haujlwm tuaj yeem ua rau poob ntawm cov ntaub ntawv tseem ceeb. Txawm hais tias kev xa tawm yooj yim tuaj yeem ua rau muaj kev cuam tshuam me me hauv kev sau cov metrics vim tias kev rov pib dua tuaj yeem ua tau ntev dua li lub sijhawm sib tsoo.

Txhim khu kev cia ntawm cov ntaub ntawv keeb kwm

Pheej yig, ceev ceev, ntev metrics cia yog peb npau suav (sib koom los ntawm feem ntau cov neeg siv Prometheus). Hauv Improbable, peb raug yuam kom teeb tsa lub sijhawm khaws cia rau cuaj hnub (rau Prometheus 1.8). Qhov no ntxiv cov kev txwv pom tseeb rau qhov deb npaum li cas peb tuaj yeem saib.

Prometheus 2.0 tau txhim kho nyob rau hauv no hais txog, txij li thaum lub sij hawm series tsis cuam tshuam rau tag nrho cov kev ua tau zoo ntawm cov neeg rau zaub mov (saib. KubeCon keynote txog Prometheus 2). Txawm li cas los xij, Prometheus khaws cov ntaub ntawv hauv zos disk. Txawm hais tias kev siv cov ntaub ntawv ua haujlwm siab tuaj yeem txo qis kev siv SSD hauv zos, qhov kawg tseem muaj qhov txwv rau cov ntaub ntawv keeb kwm uas tuaj yeem khaws cia.

Tsis tas li ntawd, ntawm Improbable peb mob siab txog kev ntseeg siab, kev yooj yim thiab tus nqi. Loj loj hauv zos disks nyuaj dua rau kev khiav lag luam thiab thaub qab. Lawv raug nqi ntau dua thiab xav tau cov cuab yeej thaub qab ntau dua, ua rau tsis tsim nyog nyuaj.

Downsampling

Thaum peb pib ua haujlwm nrog cov ntaub ntawv keeb kwm, peb pom tau hais tias muaj cov teeb meem tseem ceeb nrog loj-O uas ua rau cov lus nug qeeb thiab qeeb qeeb thaum peb ua haujlwm nrog lub lis piam, hli, thiab xyoo ntawm cov ntaub ntawv.

Cov txheej txheem daws teeb meem no yuav yog downsampling (downsampling) - txo cov teeb liab sampling zaus. Nrog downsampling, peb muaj peev xwm "scale down" mus rau ib tug loj dua lub sij hawm ntau thiab tuav tib tus naj npawb ntawm cov qauv, ua kom cov lus nug teb.

Downsampling cov ntaub ntawv qub yog qhov yuav tsum tau muaj ntawm cov kev daws teeb meem mus sij hawm ntev thiab dhau qhov kev txwv ntawm vanilla Prometheus.

Cov hom phiaj ntxiv

Ib qho ntawm thawj lub hom phiaj ntawm Thanos qhov project yog ua kom sib haum xeeb nrog txhua qhov kev teeb tsa Prometheus uas twb muaj lawm. Lub hom phiaj thib ob yog qhov yooj yim ntawm kev ua haujlwm nrog kev cuam tshuam tsawg kawg rau kev nkag. Txhua qhov kev cia siab yuav tsum tau yooj yim txaus siab rau cov neeg siv me thiab loj, uas kuj txhais tau tias tus nqi qis.

Thanos architecture

Tom qab sau peb lub hom phiaj hauv ntu dhau los, cia peb ua haujlwm los ntawm lawv thiab saib Thanos daws cov teeb meem no li cas.

Ntiaj teb no saib

Txhawm rau kom tau txais kev pom thoob ntiaj teb nyob rau sab saum toj ntawm cov xwm txheej Prometheus uas twb muaj lawm, peb yuav tsum txuas ib qho kev thov nkag rau txhua tus servers. Qhov no yog raws nraim li Thanos tivthaiv ua. Sidecar. Nws raug xa mus rau ib sab ntawm txhua tus neeg rau zaub mov Prometheus thiab ua tus tso npe, ua haujlwm hauv zos Prometheus cov ntaub ntawv los ntawm gRPC Store API, tso cai rau lub sijhawm cov ntaub ntawv rov qab los ntawm tag thiab sijhawm.

Ntawm qhov tod tes yog qhov ntsuas-tawm, tsis muaj lub xeev Querier tivthaiv, uas ua tsawg dua li tsuas yog teb PromQL cov lus nug ntawm tus qauv Prometheus HTTP API. Querier, Sidecar thiab lwm yam Thanos sib txuas lus ntawm lus xaiv raws tu qauv.

Thanos - Scalable Prometheus

  1. Querier, thaum tau txais ib daim ntawv thov, txuas mus rau lub khw API server, uas yog, rau peb cov Sidecars thiab tau txais cov ntaub ntawv lub sijhawm los ntawm cov servers sib thooj Prometheus.
  2. Tom qab ntawd, nws muab cov lus teb thiab ua tiav cov lus nug PromQL rau lawv. Querier tuaj yeem sib koom ua ke ob qho tib si cov ntaub ntawv tsis sib xws thiab luam cov ntaub ntawv los ntawm Prometheus HA servers.

Qhov no daws tau ib qho tseem ceeb ntawm peb cov duab dhos ua si - sib txuas cov ntaub ntawv los ntawm cov servers Prometheus cais rau hauv ib qho kev pom. Qhov tseeb, Thanos tsuas yog siv tau rau qhov tshwj xeeb no. Tsis muaj kev hloov pauv yuav tsum tau ua rau Prometheus servers uas twb muaj lawm!

Unlimited txee lub neej!

Txawm li cas los xij, sai dua lossis tom qab peb yuav xav khaws cov ntaub ntawv tshaj li lub sijhawm khaws Prometheus. Peb xaiv cov khoom cia los khaws cov ntaub ntawv keeb kwm. Nws yog dav muaj nyob rau hauv tej huab raws li nyob rau hauv cov ntaub ntawv chaw zov me nyuam thiab yog heev nqi. Tsis tas li ntawd, yuav luag txhua yam khoom khaws cia yog muaj los ntawm qhov paub zoo S3 API.

Prometheus sau cov ntaub ntawv los ntawm RAM mus rau disk kwv yees li ob teev. Cov ntaub ntawv khaws cia muaj tag nrho cov ntaub ntawv rau lub sijhawm teem sijhawm thiab tsis hloov pauv. Qhov no yooj yim heev vim Thanos Sidecar tsuas tuaj yeem saib ntawm Prometheus cov ntaub ntawv teev npe thiab, raws li cov blocks tshiab tau dhau los, thauj lawv mus rau hauv cov khoom ntim khoom.

Thanos - Scalable Prometheus

Kev thauj khoom mus rau hauv cov khoom khaws cia tam sim ntawd tom qab sau ntawv rau disk kuj tso cai rau koj tswj hwm qhov yooj yim ntawm scraper (Prometheus thiab Thanos Sidecar). Uas simplifies kev them nyiaj yug, nqi thiab kev tsim system.

Raws li koj tau pom, cov ntaub ntawv thaub qab yog yooj yim heev. Tab sis dab tsi txog kev nug cov ntaub ntawv hauv cov khoom khaws cia?

Thanos Store tivthaiv ua tus tso cai los muab cov ntaub ntawv los ntawm cov khoom khaws cia. Zoo li Thanos Sidecar, nws koom nrog pawg neeg hais lus xaiv thiab siv lub khw API. Txoj kev no, Querier uas twb muaj lawm tuaj yeem kho nws zoo li Sidecar, raws li lwm qhov chaw ntawm cov ntaub ntawv teev sijhawm - tsis muaj kev teeb tsa tshwj xeeb.

Thanos - Scalable Prometheus

Lub sij hawm series cov ntaub ntawv thaiv muaj ntau cov ntaub ntawv loj. Loading lawv ntawm kev thov yuav tsis muaj txiaj ntsig, thiab caching lawv hauv zos yuav xav tau ntau qhov chaw nco thiab chaw disk.

Hloov chaw, Khw Gateway paub yuav ua li cas los tuav Prometheus cia hom ntawv. Ua tsaug rau cov lus nug ntse thiab caching tsuas yog qhov tsim nyog qhov ntsuas qhov chaw ntawm cov blocks, nws muaj peev xwm txo qis cov lus nug nyuaj rau tsawg kawg ntawm HTTP thov rau cov khoom khaws cia cov ntaub ntawv. Nyob rau hauv txoj kev no, koj tuaj yeem txo tus naj npawb ntawm kev thov los ntawm plaub mus rau rau qhov kev txiav txim ntawm qhov loj thiab ua tiav cov sij hawm teb uas feem ntau nyuaj rau qhov txawv ntawm kev thov rau cov ntaub ntawv ntawm SSD hauv zos.

Thanos - Scalable Prometheus

Raws li pom nyob rau hauv daim duab saum toj no, Thanos Querier txo tus nqi ib nqe lus nug ntawm cov khoom cia cov ntaub ntawv los ntawm leveraging Prometheus cia hom ntawv thiab tso cov ntaub ntawv muaj feem xyuam rau ib sab. Siv txoj hauv kev no, peb tuaj yeem muab ntau qhov kev thov ib leeg rau hauv qhov tsawg kawg nkaus ntawm kev ua haujlwm ntau.

Compaction thiab downsampling

Thaum cov ntaub ntawv tshiab ntawm lub sij hawm series tau ua tiav rau hauv cov khoom khaws cia, peb kho nws li "keeb kwm" cov ntaub ntawv, uas tam sim ntawd muaj nyob hauv Store Gateway.

Txawm li cas los xij, tom qab qee lub sijhawm, thaiv los ntawm ib qhov chaw (Prometheus nrog Sidecar) sib sau ua ke thiab tsis siv tag nrho cov peev txheej indexing. Txhawm rau daws qhov teeb meem no, peb tau qhia lwm yam hu ua Compactor. Nws tsuas yog siv Prometheus 'lub zos compaction engine rau cov ntaub ntawv keeb kwm hauv cov khoom khaws cia thiab tuaj yeem khiav ua haujlwm yooj yim raws sijhawm.

Thanos - Scalable Prometheus

Ua tsaug rau kev ua kom zoo compression, querying cia nyob rau lub sij hawm ntev tsis muaj teeb meem nyob rau hauv cov nqe lus ntawm cov ntaub ntawv loj. Txawm li cas los xij, tus nqi peev xwm ntawm unpacking ib billion tus nqi thiab khiav lawv los ntawm cov lus nug processor yuav inevitably ua rau muaj kev nce rau hauv cov lus nug execution lub sij hawm. Ntawm qhov tod tes, vim muaj ntau pua cov ntsiab lus ntawm ib pixel ntawm lub vijtsam, nws ua tsis tau txawm tias pom cov ntaub ntawv ntawm kev daws teeb meem tag nrho. Yog li, downsampling tsis yog tsuas yog ua tau, tab sis kuj yuav tsis ua rau pom qhov poob ntawm qhov tseeb.

Thanos - Scalable Prometheus

Rau downsample cov ntaub ntawv, Compactor tsis tu ncua aggregates cov ntaub ntawv ntawm ib tug daws teeb meem ntawm tsib feeb thiab ib teev. Rau txhua cov chunk raw encoded siv TSDB XOR compression, sib txawv ntawm cov ntaub ntawv sib sau khaws cia, xws li min, max lossis sum rau ib qho thaiv. Qhov no tso cai rau Querier tuaj yeem xaiv qhov sib sau uas tsim nyog rau cov lus nug PromQL.

Tsis muaj qhov tshwj xeeb configuration yog yuav tsum tau rau cov neeg siv kom txo precision cov ntaub ntawv. Querier cia li hloov ntawm cov kev daws teeb meem sib txawv thiab cov ntaub ntawv nyoos raws li tus neeg siv zooms hauv thiab tawm. Yog tias xav tau, tus neeg siv tuaj yeem tswj qhov no ncaj qha los ntawm "kauj ruam" parameter hauv kev thov.

Txij li thaum tus nqi khaws cia ib GB yog tsawg, los ntawm lub neej ntawd Thanos khaws cov ntaub ntawv nyoos, tsib feeb thiab ib-teev cov ntaub ntawv daws teeb meem. Tsis tas yuav rho tawm cov ntaub ntawv qub.

Cov cai kaw tseg

Txawm nrog Thanos, cov kev cai kaw tseg yog ib feem tseem ceeb ntawm pawg saib xyuas. Lawv txo qhov nyuaj, latency, thiab tus nqi ntawm cov lus nug. Lawv kuj yooj yim rau cov neeg siv kom tau txais cov ntaub ntawv sib sau los ntawm kev ntsuas. Thanos yog raws li vanilla Prometheus piv txwv, yog li nws zoo kawg nkaus tau khaws cov cai kaw tseg thiab ceeb toom cov cai ntawm Prometheus server uas twb muaj lawm. Txawm li cas los xij, qee zaum qhov no yuav tsis txaus:

  • Kev ceeb toom thoob ntiaj teb thiab txoj cai (piv txwv li, kev ceeb toom thaum qhov kev pabcuam tsis ua haujlwm rau ntau tshaj ob ntawm peb pawg).
  • Txoj cai rau cov ntaub ntawv sab nraum lub chaw khaws cia.
  • Lub siab xav khaws tag nrho cov cai thiab kev ceeb toom hauv ib qho chaw.

Thanos - Scalable Prometheus

Rau tag nrho cov xwm txheej no, Thanos suav nrog cov khoom sib cais hu ua Ruler, uas suav nrog txoj cai thiab ceeb toom ntawm Thanos Queries. Los ntawm kev muab StoreAPI paub zoo, Cov Lus Nug Node tuaj yeem nkag mus rau cov kev ntsuas tshiab tshiab. Tom qab ntawd lawv kuj tau muab khaws cia rau hauv cov khoom khaws cia thiab ua kom muaj los ntawm Lub Tsev Muag Khoom.

The Power of Thanos

Thanos hloov pauv tau txaus los kho kom haum koj cov kev xav tau. Qhov no yog qhov tshwj xeeb tshaj yog thaum tsiv los ntawm cov Prometheus dawb. Cia peb piav qhia sai sai txog qhov peb tau kawm txog Thanos cov khoom siv nrog cov piv txwv ceev. Nov yog yuav ua li cas coj koj vanilla Prometheus mus rau hauv lub ntiaj teb ntawm "tsis txwv metrics cia":

Thanos - Scalable Prometheus

  1. Ntxiv Thanos Sidecar rau koj cov servers Prometheus - piv txwv li, lub thawv sab hauv tsheb hauv Kubernetes pod.
  2. Siv ntau Thanos Querier replicas kom tuaj yeem saib cov ntaub ntawv. Nyob rau theem no nws yog ib qho yooj yim los teeb tsa lus hais ntawm Scraper thiab Querier. Txhawm rau txheeb xyuas qhov sib cuam tshuam ntawm cov khoom, siv 'thanos_cluster_members' metric.

Tsuas yog ob kauj ruam no txaus los muab kev pom thoob ntiaj teb thiab cov ntaub ntawv tsis sib haum xeeb los ntawm cov peev txheej Prometheus HA replicas! Tsuas txuas koj lub dashboards mus rau Querier HTTP qhov kawg lossis siv Thanos UI ncaj qha.

Txawm li cas los xij, yog tias koj xav tau metrics thaub qab thiab khaws cia ntev, koj yuav tsum ua tiav peb kauj ruam ntxiv:

  1. Create an AWS S3 or GCS bucket. Configure Sidecar luam cov ntaub ntawv rau cov thoob no. Cov ntaub ntawv khaws cia hauv zos tam sim no tuaj yeem txo qis.
  2. Siv Lub Khw Gateway thiab txuas nws mus rau koj pawg lus xaiv uas twb muaj lawm. Tam sim no koj tuaj yeem nug cov ntaub ntawv thaub qab!
  3. Siv Compactor los txhim kho cov lus nug kev ua tau zoo nyob rau lub sijhawm ntev ntawm kev siv compaction thiab downsampling.

Yog tias koj xav paub ntau ntxiv, tsis txhob yig mus saib peb kubernetes manifest piv txwv ΠΈ kev pib!

Tsuas yog tsib kauj ruam, peb muab Prometheus rau hauv kev saib xyuas kev ntseeg siab nrog kev pom thoob ntiaj teb, tsis txwv lub sijhawm cia thiab muaj peev xwm muaj peev xwm muaj peev xwm loj.

Rub thov: peb xav tau koj!

Thanos tau yog qhov qhib qhov project txij thaum pib. Seamless kev koom ua ke nrog Prometheus thiab lub peev xwm los siv tsuas yog ib feem ntawm Thanos ua rau nws yog qhov kev xaiv zoo tshaj plaws rau kev ntsuas koj qhov kev saib xyuas tsis muaj zog.

Peb ib txwm txais tos GitHub Rub Cov Lus Thov thiab Cov Teeb Meem. Lub sijhawm no, xav tiv tauj peb ntawm Github Cov Teeb Meem lossis slack Improbable-eng #thanosyog tias koj muaj lus nug lossis lus tawm tswv yim, lossis xav qhia koj qhov kev paub siv nws! Yog tias koj nyiam qhov peb ua ntawm Improbable, tsis txhob yig tiv tauj peb - peb ib txwm muaj chaw ua haujlwm!

Kawm ntxiv txog chav kawm.

Tau qhov twg los: www.hab.com

Ntxiv ib saib