Paratowyd y cyfieithiad o'r erthygl yn benodol ar gyfer myfyrwyr y cwrs
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
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
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
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.
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
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.
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
- 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.
- 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.
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.
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.
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.
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.
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.
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”:
- Ychwanegwch Thanos Sidecar at eich gweinyddwyr Prometheus - er enghraifft, cynhwysydd car ochr mewn pod Kubernetes.
- 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:
- Creu bwced AWS S3 neu GCS. Ffurfweddwch Sidecar i gopïo data i'r bwcedi hyn. Bellach gellir lleihau storio data lleol.
- Defnyddio Store Gateway a'i gysylltu â'ch clwstwr clecs presennol. Nawr gallwch chi gwestiynu'r data wrth gefn!
- 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
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!
Rydym bob amser yn croesawu Ceisiadau a Materion Tynnu GitHub. Yn y cyfamser, mae croeso i chi gysylltu â ni trwy Github Issues neu slac
Ffynhonnell: hab.com