Thanos - Prometheus graddadwy

Paratowyd y cyfieithiad o'r erthygl yn benodol ar gyfer myfyrwyr y cwrs "Arferion ac offer DevOps".

Fabian Reinartz yn ddatblygwr meddalwedd, Go fanatic, a datryswr problemau. Mae hefyd yn gynhaliwr Prometheus ac yn gyd-sylfaenydd offeryniaeth Kubernetes SIG. Yn y gorffennol, roedd yn beiriannydd cynhyrchu yn SoundCloud ac yn arwain y tîm monitro yn CoreOS. Yn gweithio yn Google ar hyn o bryd.

Bartek Plotka - Peiriannydd Isadeiledd yn Improbable. Mae ganddo ddiddordeb mewn technolegau newydd a phroblemau systemau gwasgaredig. Mae ganddo brofiad rhaglennu lefel isel yn Intel, profiad cyfrannwr yn Mesos, a phrofiad cynhyrchu SRE o'r radd flaenaf yn Improbable. Ymroddedig i wella byd microwasanaethau. Mae ei dri chariad: Golang, ffynhonnell agored a phêl-foli.

Wrth edrych ar ein cynnyrch blaenllaw SpatialOS, gallwch chi ddyfalu bod Improbable yn gofyn am seilwaith cwmwl hynod ddeinamig, ar raddfa fyd-eang gyda dwsinau o glystyrau Kubernetes. Ni oedd un o'r rhai cyntaf i ddefnyddio system fonitro Prometheus. Mae Prometheus yn gallu olrhain miliynau o fetrigau mewn amser real ac mae'n dod ag iaith ymholiad bwerus sy'n eich galluogi i echdynnu'r wybodaeth sydd ei hangen arnoch chi.

Symlrwydd a dibynadwyedd Prometheus yw un o'i brif fanteision. Fodd bynnag, ar ôl i ni fynd heibio i raddfa benodol, daethom ar draws sawl anfantais. I ddatrys y problemau hyn rydym wedi datblygu Thanos yn brosiect ffynhonnell agored a grëwyd gan Improbable i drawsnewid clystyrau presennol Prometheus yn ddi-dor yn un system fonitro gyda storfa ddata hanesyddol ddiderfyn. Mae Thanos ar gael ar Github yma.

Cael y newyddion diweddaraf gan Improbable.

Ein nodau gyda Thanos

Ar raddfa benodol, mae problemau'n codi sydd y tu hwnt i alluoedd fanila Prometheus. Sut i storio petabytes o ddata hanesyddol yn ddibynadwy ac yn economaidd? A ellir gwneud hyn heb gyfaddawdu amser ymateb? A yw'n bosibl cyrchu'r holl fetrigau sydd wedi'u lleoli ar wahanol weinyddion Prometheus gydag un cais API? A oes unrhyw ffordd o gyfuno data a gasglwyd gan ddefnyddio HA Prometheus?

Er mwyn mynd i'r afael â'r materion hyn, rydym wedi creu Thanos. Mae'r adrannau canlynol yn disgrifio sut yr aethom i'r afael â'r materion hyn ac yn egluro ein nodau.

Cwestiynu data o achosion lluosog Prometheus (ymholiad byd-eang)

Mae Prometheus yn cynnig ymagwedd swyddogaethol at ddarnio. Mae hyd yn oed un gweinydd Prometheus yn darparu digon o scalability i ryddhau defnyddwyr o gymhlethdodau darnio llorweddol ym mron pob achos defnydd.

Er bod hwn yn fodel lleoli gwych, yn aml mae angen cyrchu data ar wahanol weinyddion Prometheus trwy un API neu UI - golygfa fyd-eang. Wrth gwrs, mae'n bosibl arddangos ymholiadau lluosog mewn un panel Grafana, ond dim ond ar un gweinydd Prometheus y gellir gweithredu pob ymholiad. Ar y llaw arall, gyda Thanos gallwch ymholi a chyfuno data o weinyddion Prometheus lluosog gan eu bod i gyd yn hygyrch o un pwynt terfyn.

Yn flaenorol, er mwyn cael golwg fyd-eang yn Improbable, fe wnaethom drefnu ein hachosion Prometheus yn aml-lefel Ffederasiwn hierarchaidd. Roedd hyn yn golygu creu un gweinydd meta Prometheus sy'n casglu rhai o'r metrigau o bob gweinydd dail.

Thanos - Prometheus graddadwy

Profodd y dull hwn yn broblemus. Mae hyn wedi arwain at ffurfweddiadau mwy cymhleth, ychwanegu pwynt methiant posibl ychwanegol, a chymhwyso rheolau cymhleth i sicrhau mai dim ond y data sydd ei angen arno y mae'r pwynt terfyn ffederal yn ei dderbyn. Yn ogystal, nid yw'r math hwn o ffederasiwn yn caniatáu ichi gael golwg fyd-eang wirioneddol, gan nad yw'r holl ddata ar gael o un cais API.

Yn gysylltiedig yn agos â hyn mae golwg unedig o'r data a gasglwyd ar weinyddion Prometheus argaeledd uchel (HA). Mae model HA Prometheus yn casglu data yn annibynnol ddwywaith, sydd mor syml fel na allai fod yn symlach. Fodd bynnag, byddai defnyddio golygfa gyfunol a dad-ddyblyg o'r ddwy ffrwd yn llawer mwy cyfleus.

Wrth gwrs, mae angen gweinyddion Prometheus sydd ar gael yn fawr. Yn Improbable, rydym yn cymryd monitro data fesul munud o ddifrif, ond mae cael un enghraifft Prometheus fesul clwstwr yn un pwynt o fethiant. Gall unrhyw wall cyfluniad neu fethiant caledwedd arwain at golli data pwysig. Gall hyd yn oed defnydd syml achosi mân aflonyddwch wrth gasglu metrigau oherwydd gall ailddechrau fod yn sylweddol hirach na'r cyfnod crafu.

Storio data hanesyddol yn ddibynadwy

Storio metrigau rhad, cyflym, hirdymor yw ein breuddwyd (a rennir gan y mwyafrif o ddefnyddwyr Prometheus). Yn Improbable, fe'n gorfodwyd i ffurfweddu'r cyfnod cadw metrigau i naw diwrnod (ar gyfer Prometheus 1.8). Mae hyn yn ychwanegu terfynau amlwg i ba mor bell yn ôl y gallwn edrych.

Mae Prometheus 2.0 wedi gwella yn hyn o beth, gan nad yw nifer y cyfresi amser bellach yn effeithio ar berfformiad cyffredinol y gweinydd (gweler. KubeCon cyweirnod am Prometheus 2). Fodd bynnag, mae Prometheus yn storio data ar ddisg leol. Er y gall cywasgu data effeithlonrwydd uchel leihau'r defnydd o SSD lleol yn sylweddol, yn y pen draw mae cyfyngiad o hyd i faint o ddata hanesyddol y gellir ei storio.

Yn ogystal, yn Improbable rydym yn poeni am ddibynadwyedd, symlrwydd a chost. Mae disgiau lleol mawr yn anoddach eu gweithredu a'u gwneud wrth gefn. Maent yn costio mwy ac mae angen mwy o offer wrth gefn arnynt, gan arwain at gymhlethdod diangen.

Downsampling

Ar ôl i ni ddechrau gweithio gyda data hanesyddol, sylweddolon ni fod yna anawsterau sylfaenol gyda big-O sy'n gwneud ymholiadau yn arafach ac yn arafach wrth i ni weithio gydag wythnosau, misoedd, a blynyddoedd o ddata.

Yr ateb safonol i'r broblem hon fyddai issamplu (downsampling) - lleihau amlder samplu signal. Gydag is-samplu, gallwn “graddio i lawr” i ystod amser fwy a chynnal yr un nifer o samplau, gan gadw ymholiadau'n ymatebol.

Mae is-samplu hen ddata yn ofyniad anochel ar gyfer unrhyw ateb storio hirdymor ac mae y tu hwnt i gwmpas fanila Prometheus.

Nodau ychwanegol

Un o nodau gwreiddiol prosiect Thanos oedd integreiddio'n ddi-dor ag unrhyw osodiadau Prometheus presennol. Yr ail gôl oedd rhwyddineb gweithredu gyda'r rhwystrau lleiaf posibl i fynediad. Dylai unrhyw ddibyniaethau gael eu bodloni'n hawdd ar gyfer defnyddwyr bach a mawr, sydd hefyd yn golygu cost sylfaenol isel.

pensaernïaeth Thanos

Ar ôl rhestru ein nodau yn yr adran flaenorol, gadewch i ni weithio trwyddynt a gweld sut mae Thanos yn datrys y problemau hyn.

Golygfa fyd-eang

Er mwyn cael golwg fyd-eang ar ben yr achosion Prometheus presennol, mae angen i ni gysylltu un pwynt mynediad cais â phob gweinydd. Dyma'n union beth mae cydran Thanos yn ei wneud. Cerbyd ochr. Fe'i defnyddir wrth ymyl pob gweinydd Prometheus ac mae'n gweithredu fel dirprwy, gan wasanaethu data Prometheus lleol trwy'r gRPC Store API, gan ganiatáu i ddata cyfres amser gael ei adfer yn ôl tag ac ystod amser.

Ar yr ochr arall mae'r elfen Querier di-wladwriaeth sy'n ehangu, nad yw'n gwneud llawer mwy nag ateb ymholiadau PromQL trwy'r API Prometheus HTTP safonol. Mae Querier, Sidecar a chydrannau Thanos eraill yn cyfathrebu trwyddo protocol clecs.

Thanos - Prometheus graddadwy

  1. Mae Querier, ar ôl derbyn cais, yn cysylltu â'r gweinydd API Store cyfatebol, hynny yw, â'n Sidecars ac yn derbyn data cyfres amser gan y gweinyddwyr Prometheus cyfatebol.
  2. Ar ôl hynny, mae'n cyfuno'r ymatebion ac yn gweithredu ymholiad PromQL arnynt. Gall Querier uno data digyswllt a data dyblyg o weinyddion Prometheus HA.

Mae hyn yn datrys darn mawr o'n pos - cyfuno data o weinyddion Prometheus ynysig i mewn i olwg sengl. Mewn gwirionedd, dim ond ar gyfer y nodwedd hon y gellir defnyddio Thanos. Nid oes angen gwneud unrhyw newidiadau i weinyddion presennol Prometheus!

Oes silff diderfyn!

Fodd bynnag, yn hwyr neu'n hwyrach byddwn am storio data y tu hwnt i'r amser cadw arferol Prometheus. Dewisom storio gwrthrychau i storio data hanesyddol. Mae ar gael yn eang mewn unrhyw gwmwl yn ogystal â chanolfannau data ar y safle ac mae'n gost-effeithiol iawn. Yn ogystal, mae bron unrhyw storfa wrthrychau ar gael trwy'r API S3 adnabyddus.

Mae Prometheus yn ysgrifennu data o RAM i ddisg tua bob dwy awr. Mae'r bloc data sydd wedi'i storio yn cynnwys yr holl ddata am gyfnod penodol o amser ac mae'n ddigyfnewid. Mae hyn yn gyfleus iawn oherwydd gall Thanos Sidecar edrych ar gyfeiriadur data Prometheus ac, wrth i flociau newydd ddod ar gael, eu llwytho i fwcedi storio gwrthrychau.

Thanos - Prometheus graddadwy

Mae llwytho i mewn i storfa gwrthrychau yn syth ar ôl ysgrifennu i ddisg hefyd yn caniatáu ichi gynnal symlrwydd y sgraper (Prometheus a Thanos Sidecar). Sy'n symleiddio cefnogaeth, cost a dyluniad system.

Fel y gallwch weld, wrth gefn data yn syml iawn. Ond beth am holi data wrth storio gwrthrychau?

Mae cydran Thanos Store yn gweithredu fel dirprwy i adfer data o storio gwrthrychau. Fel Thanos Sidecar, mae'n cymryd rhan yn y clwstwr clecs ac yn gweithredu'r Store API. Fel hyn, gall Querier presennol ei drin fel Sidecar, fel ffynhonnell arall o ddata cyfres amser - nid oes angen cyfluniad arbennig.

Thanos - Prometheus graddadwy

Mae blociau data cyfres amser yn cynnwys sawl ffeil fawr. Byddai eu llwytho ar alw yn eithaf aneffeithlon, a byddai angen llawer iawn o le ar y cof a disg i'w storio'n lleol.

Yn lle hynny, mae Store Gateway yn gwybod sut i drin fformat storio Prometheus. Diolch i amserlenwr ymholiad craff a storio'r rhannau mynegai angenrheidiol o flociau yn unig, mae'n bosibl lleihau ymholiadau cymhleth i isafswm nifer o geisiadau HTTP i wrthrychau storio ffeiliau. Yn y modd hwn, gallwch leihau nifer y ceisiadau o bedwar i chwe gorchymyn maint a chyflawni amseroedd ymateb sy'n gyffredinol anodd eu gwahaniaethu oddi wrth geisiadau am ddata ar SSD lleol.

Thanos - Prometheus graddadwy

Fel y dangosir yn y diagram uchod, mae Thanos Querier yn lleihau'n sylweddol y gost fesul ymholiad o ddata storio gwrthrychau trwy ddefnyddio fformat storio Prometheus a gosod data cysylltiedig ochr yn ochr. Gan ddefnyddio'r dull hwn, gallwn gyfuno llawer o geisiadau unigol yn isafswm o weithrediadau swmp.

Cywasgu ac is-samplu

Unwaith y bydd bloc newydd o ddata cyfres amser wedi'i lwytho'n llwyddiannus i storfa gwrthrychau, rydym yn ei drin fel data "hanesyddol", sydd ar gael ar unwaith trwy'r Store Gateway.

Fodd bynnag, ar ôl peth amser, mae blociau o un ffynhonnell (Prometheus gyda Sidecar) yn cronni ac nid ydynt bellach yn defnyddio'r potensial mynegeio llawn. I ddatrys y broblem hon, rydym wedi cyflwyno cydran arall o'r enw Compactor. Yn syml, mae'n cymhwyso peiriant cywasgu lleol Prometheus i ddata hanesyddol wrth storio gwrthrychau a gellir ei redeg fel swp cyfnodol syml.

Thanos - Prometheus graddadwy

Diolch i gywasgu effeithlon, nid yw cwestiynu'r storfa dros gyfnod hir o amser yn peri problem o ran maint data. Fodd bynnag, mae'n anochel y bydd cost bosibl dadbacio biliwn o werthoedd a'u rhedeg trwy brosesydd ymholiad yn arwain at gynnydd dramatig yn amser gweithredu ymholiad. Ar y llaw arall, gan fod cannoedd o bwyntiau data fesul picsel ar y sgrin, mae'n dod yn amhosibl hyd yn oed ddelweddu'r data ar gydraniad llawn. Felly, nid yn unig y mae is-samplu yn bosibl, ond ni fydd hefyd yn arwain at golli cywirdeb amlwg.

Thanos - Prometheus graddadwy

I is-samplu data, mae Compactor yn agregu data yn barhaus ar gydraniad o bum munud ac awr. Ar gyfer pob darn crai sy'n cael ei amgodio gan ddefnyddio cywasgiad TSDB XOR, mae gwahanol fathau o ddata cyfanredol yn cael eu storio, megis min, uchafswm neu swm ar gyfer un bloc. Mae hyn yn caniatáu i Querier ddewis cyfanred yn awtomatig sy'n briodol ar gyfer ymholiad PromQL penodol.

Nid oes angen cyfluniad arbennig i'r defnyddiwr ddefnyddio llai o ddata manwl gywir. Mae Querier yn newid yn awtomatig rhwng gwahanol benderfyniadau a data crai wrth i'r defnyddiwr chwyddo i mewn ac allan. Os dymunir, gall y defnyddiwr reoli hyn yn uniongyrchol trwy'r paramedr “cam” yn y cais.

Gan fod y gost o storio un GB yn isel, yn ddiofyn mae Thanos yn storio data crai, data cydraniad pum munud ac awr. Nid oes angen dileu'r data gwreiddiol.

Rheolau recordio

Hyd yn oed gyda Thanos, mae rheolau cofnodi yn rhan hanfodol o'r pentwr monitro. Maent yn lleihau cymhlethdod, hwyrni a chost ymholiadau. Maent hefyd yn gyfleus i ddefnyddwyr gael data cyfanredol yn ôl metrigau. Mae Thanos yn seiliedig ar achosion fanila Prometheus, felly mae'n gwbl dderbyniol storio rheolau recordio a rheolau rhybuddio ar weinydd Prometheus presennol. Fodd bynnag, mewn rhai achosion efallai na fydd hyn yn ddigon:

  • Rhybudd a rheol fyd-eang (er enghraifft, rhybudd pan nad yw gwasanaeth yn gweithio ar fwy na dau o dri chlwstwr).
  • Rheol ar gyfer data y tu allan i storfa leol.
  • Yr awydd i storio'r holl reolau a rhybuddion mewn un lle.

Thanos - Prometheus graddadwy

Ar gyfer yr holl achosion hyn, mae Thanos yn cynnwys cydran ar wahân o'r enw Ruler, sy'n cyfrifo rheol a rhybudd trwy Thanos Queries. Trwy ddarparu StoreAPI adnabyddus, gall y nod Ymholiad gael mynediad at fetrigau sydd wedi'u cyfrifo'n ffres. Yn ddiweddarach maent hefyd yn cael eu storio mewn storfa gwrthrychau a byddant ar gael trwy'r Store Gateway.

Grym Thanos

Mae Thanos yn ddigon hyblyg i gael ei addasu i weddu i'ch anghenion. Mae hyn yn arbennig o ddefnyddiol wrth fudo o Prometheus plaen. Gadewch i ni ailadrodd yn gyflym yr hyn rydyn ni wedi'i ddysgu am gydrannau Thanos gydag enghraifft gyflym. Dyma sut i fynd â'ch fanila Prometheus i fyd “storfa metrigau anghyfyngedig”:

Thanos - Prometheus graddadwy

  1. Ychwanegwch Thanos Sidecar at eich gweinyddwyr Prometheus - er enghraifft, cynhwysydd car ochr mewn pod Kubernetes.
  2. Defnyddio sawl copi Thanos Querier i allu gweld data. Ar hyn o bryd mae'n hawdd sefydlu clecs rhwng Scraper a Querier. I wirio rhyngweithiad cydrannau, defnyddiwch y metrig 'thanos_cluster_members'.

Mae'r ddau gam hyn yn unig yn ddigon i ddarparu golwg fyd-eang a dad-ddyblygu data di-dor o atgynyrchiadau HA Prometheus posibl! Yn syml, cysylltwch eich dangosfyrddau â phwynt terfyn Querier HTTP neu defnyddiwch UI Thanos yn uniongyrchol.

Fodd bynnag, os oes angen metrigau wrth gefn a storfa hirdymor arnoch, bydd angen i chi gwblhau tri cham arall:

  1. Creu bwced AWS S3 neu GCS. Ffurfweddwch Sidecar i gopïo data i'r bwcedi hyn. Bellach gellir lleihau storio data lleol.
  2. Defnyddio Store Gateway a'i gysylltu â'ch clwstwr clecs presennol. Nawr gallwch chi gwestiynu'r data wrth gefn!
  3. Defnyddio Compactor i wella effeithlonrwydd ymholiad dros gyfnodau hir o amser gan ddefnyddio cywasgu ac is-samplu.

Os ydych chi eisiau gwybod mwy, peidiwch ag oedi i edrych ar ein enghreifftiau amlwg kubernetes и dechrau arni!

Mewn pum cam yn unig, fe wnaethom droi Prometheus yn system fonitro ddibynadwy gyda golygfa fyd-eang, amser storio diderfyn ac argaeledd uchel posibl o fetrigau.

Cais tynnu: rydym eich angen chi!

Thanos wedi bod yn brosiect ffynhonnell agored o'r cychwyn cyntaf. Mae integreiddio di-dor â Prometheus a'r gallu i ddefnyddio dim ond cyfran o Thanos yn ei wneud yn ddewis rhagorol ar gyfer graddio'ch system fonitro yn ddiymdrech.

Rydym bob amser yn croesawu Ceisiadau a Materion Tynnu GitHub. Yn y cyfamser, mae croeso i chi gysylltu â ni trwy Github Issues neu slac Improbable-eng #thanosos oes gennych gwestiynau neu adborth, neu eisiau rhannu eich profiad gan ei ddefnyddio! Os ydych chi'n hoffi'r hyn rydyn ni'n ei wneud yn Improbable, peidiwch ag oedi cyn cysylltu â ni - mae gennym ni swyddi gwag bob amser!

Dysgwch fwy am y cwrs.

Ffynhonnell: hab.com

Ychwanegu sylw