Raksta tulkojums tika sagatavots speciÄli kursa studentiem
AplÅ«kojot mÅ«su vadoÅ”o produktu SpatialOS, varat nojaust, ka Improbable ir nepiecieÅ”ama ļoti dinamiska, globÄla mÄroga mÄkoÅa infrastruktÅ«ra ar desmitiem Kubernetes klasteru. MÄs bijÄm vieni no pirmajiem, kas izmantoja uzraudzÄ«bas sistÄmu
Prometheus vienkÄrŔība un uzticamÄ«ba ir viena no tÄ galvenajÄm priekÅ”rocÄ«bÄm. TomÄr, tiklÄ«dz esam pÄrsnieguÅ”i noteiktu mÄrogu, mÄs saskÄrÄmies ar vairÄkiem trÅ«kumiem. Lai atrisinÄtu Ŕīs problÄmas, mÄs esam izstrÄdÄjuÅ”i
MÅ«su mÄrÄ·i ar Thanos
NoteiktÄ mÄrogÄ rodas problÄmas, kas pÄrsniedz vaniļas Prometeja iespÄjas. KÄ droÅ”i un ekonomiski uzglabÄt vÄsturisko datu petabaitus? Vai to var izdarÄ«t, nesamazinot reakcijas laiku? Vai ar vienu API pieprasÄ«jumu ir iespÄjams piekļūt visiem rÄdÄ«tÄjiem, kas atrodas dažÄdos Prometheus serveros? Vai ir kÄds veids, kÄ apvienot replicÄtos datus, kas savÄkti, izmantojot Prometheus HA?
Lai risinÄtu Ŕīs problÄmas, mÄs izveidojÄm Thanos. NÄkamajÄs sadaļÄs ir aprakstÄ«ts, kÄ mÄs risinÄjÄm Å”os jautÄjumus, un izskaidroti mÅ«su mÄrÄ·i.
Datu vaicÄÅ”ana no vairÄkiem Prometheus gadÄ«jumiem (globÄls vaicÄjums)
Prometheus piedÄvÄ funkcionÄlu pieeju sadalÄ«Å”anai. Pat viens Prometheus serveris nodroÅ”ina pietiekamu mÄrogojamÄ«bu, lai gandrÄ«z visos lietoÅ”anas gadÄ«jumos atbrÄ«votu lietotÄjus no sarežģītÄs horizontÄlÄs sadalÄ«Å”anas.
Lai gan Å”is ir lielisks izvietoÅ”anas modelis, bieži vien ir nepiecieÅ”ams piekļūt datiem dažÄdos Prometheus serveros, izmantojot vienu API vai UI ā globÄlo skatu. Protams, vienÄ Grafana panelÄ« ir iespÄjams attÄlot vairÄkus vaicÄjumus, taÄu katru vaicÄjumu var izpildÄ«t tikai vienÄ Prometheus serverÄ«. No otras puses, izmantojot Thanos, varat meklÄt un apkopot datus no vairÄkiem Prometheus serveriem, jo āātie visi ir pieejami no viena galapunkta.
IepriekÅ”, lai iegÅ«tu globÄlu skatÄ«jumu programmÄ Improbable, mÄs organizÄjÄm Prometheus gadÄ«jumus vairÄkos lÄ«meÅos.
Å Ä« pieeja izrÄdÄ«jÄs problemÄtiska. TÄ rezultÄtÄ ir izveidotas sarežģītÄkas konfigurÄcijas, ir pievienots papildu potenciÄls atteices punkts un tiek piemÄroti sarežģīti noteikumi, lai nodroÅ”inÄtu, ka apvienotais galapunkts saÅem tikai tam nepiecieÅ”amos datus. TurklÄt Å”Äda veida federÄcija neļauj iegÅ«t patiesu globÄlu skatÄ«jumu, jo ne visi dati ir pieejami no viena API pieprasÄ«juma.
Ar to ir cieÅ”i saistÄ«ts vienots skatÄ«jums uz datiem, kas savÄkti augstas pieejamÄ«bas (HA) Prometheus serveros. Prometheus HA modelis neatkarÄ«gi savÄc datus divas reizes, kas ir tik vienkÄrÅ”i, ka nevar bÅ«t vienkÄrÅ”Äk. TomÄr daudz ÄrtÄk bÅ«tu izmantot abu straumju kombinÄtu un atdalÄ«tu skatu.
Protams, ir nepiecieÅ”ami augsti pieejami Prometheus serveri. UzÅÄmumÄ Improbable mÄs ļoti nopietni uztveram datu pÄrraudzÄ«bu minÅ«tÄs, taÄu viena Prometheus instance katrÄ klasterÄ« ir vienÄ«gais kļūmes punkts. Jebkura konfigurÄcijas kļūda vai aparatÅ«ras kļūme var izraisÄ«t svarÄ«gu datu zudumu. Pat vienkÄrÅ”a izvietoÅ”ana var radÄ«t nelielus traucÄjumus metrikas apkopoÅ”anÄ, jo restartÄÅ”ana var bÅ«t ievÄrojami ilgÄka par nokasÄ«Å”anas intervÄlu.
Uzticama vÄsturisko datu glabÄÅ”ana
LÄta, Ätra un ilgtermiÅa metrikas glabÄÅ”ana ir mÅ«su sapnis (kopÄ«gojas ar lielÄko daļu Prometheus lietotÄju). NeticamÄ gadÄ«jumÄ mÄs bijÄm spiesti konfigurÄt metrikas saglabÄÅ”anas periodu uz deviÅÄm dienÄm (Prometheus 1.8). Tas rada acÄ«mredzamas robežas tam, cik tÄlu mÄs varam skatÄ«ties atpakaļ.
Prometheus 2.0 Å”ajÄ ziÅÄ ir uzlabojies, jo laikrindu skaits vairs neietekmÄ servera kopÄjo veiktspÄju (sk.
TurklÄt Improbable mums rÅ«p uzticamÄ«ba, vienkÄrŔība un izmaksas. Lielus lokÄlos diskus ir grÅ«tÄk darbinÄt un dublÄt. Tie maksÄ vairÄk un prasa vairÄk dublÄÅ”anas rÄ«ku, kas rada nevajadzÄ«gu sarežģītÄ«bu.
IztverÅ”anas samazinÄÅ”ana
Kad sÄkÄm strÄdÄt ar vÄsturiskiem datiem, mÄs sapratÄm, ka pastÄv bÅ«tiskas problÄmas ar big-O, kas padara vaicÄjumus lÄnÄkus un lÄnÄkus, strÄdÄjot ar nedÄļu, mÄneÅ”u un gadu datiem.
Standarta risinÄjums Å”ai problÄmai bÅ«tu
Veco datu samazinÄÅ”ana ir neizbÄgama jebkura ilgtermiÅa uzglabÄÅ”anas risinÄjuma prasÄ«ba, un tÄ ir Ärpus vaniļas Prometheus darbÄ«bas jomas.
Papildu mÄrÄ·i
Viens no sÄkotnÄjiem Thanos projekta mÄrÄ·iem bija nemanÄmi integrÄties ar visÄm esoÅ”ajÄm Prometheus instalÄcijÄm. Otrais mÄrÄ·is bija darbÄ«bas vieglums ar minimÄliem ŔķÄrŔļiem ienÄkÅ”anai. Jebkuras atkarÄ«bas ir viegli apmierinÄmas gan maziem, gan lieliem lietotÄjiem, kas nozÄ«mÄ arÄ« zemas bÄzes izmaksas.
Thanos arhitektūra
PÄc mÅ«su mÄrÄ·u uzskaitÄ«Å”anas iepriekÅ”ÄjÄ sadaļÄ, strÄdÄsim ar tiem un redzÄsim, kÄ Thanos atrisina Ŕīs problÄmas.
GlobÄlais skats
Lai iegÅ«tu globÄlu skatu uz esoÅ”ajiem Prometheus gadÄ«jumiem, mums ir jÄsaista viens pieprasÄ«juma ievades punkts ar visiem serveriem. TieÅ”i to dara Thanos komponents.
No otras puses, ir mÄrogojams, bezstÄvoklis Querier komponents, kas sniedz tikai atbildes uz PromQL vaicÄjumiem, izmantojot standarta Prometheus HTTP API. Querier, Sidecar un citi Thanos komponenti sazinÄs, izmantojot
- Querier, saÅemot pieprasÄ«jumu, izveido savienojumu ar atbilstoÅ”o Store API serveri, tas ir, ar mÅ«su blakusvÄÄ£iem un saÅem laikrindu datus no atbilstoÅ”ajiem Prometheus serveriem.
- PÄc tam tas apvieno atbildes un izpilda tÄm PromQL vaicÄjumu. Querier var sapludinÄt gan nesadalÄ«tos datus, gan dublÄtos datus no Prometheus HA serveriem.
Tas atrisina galveno mÅ«su mÄ«klas daļu ā datus no izolÄtiem Prometheus serveriem apvienojot vienÄ skatÄ. Faktiski Thanos var izmantot tikai Å”ai funkcijai. EsoÅ”ajos Prometheus serveros nekÄdas izmaiÅas nav jÄveic!
Neierobežots glabÄÅ”anas laiks!
TomÄr agrÄk vai vÄlÄk mÄs vÄlÄsimies glabÄt datus, kas pÄrsniedz parasto Prometheus saglabÄÅ”anas laiku. VÄsturisko datu glabÄÅ”anai izvÄlÄjÄmies objektu krÄtuvi. Tas ir plaÅ”i pieejams jebkurÄ mÄkonÄ«, kÄ arÄ« lokÄlajos datu centros un ir ļoti rentabls. TurklÄt gandrÄ«z jebkura objektu krÄtuve ir pieejama, izmantojot labi zinÄmo S3 API.
Prometheus ieraksta datus no RAM diskÄ aptuveni ik pÄc divÄm stundÄm. SaglabÄtais datu bloks satur visus datus uz noteiktu laiku un ir nemainÄ«gs. Tas ir ļoti Ärti, jo Thanos Sidecar var vienkÄrÅ”i apskatÄ«t Prometheus datu direktoriju un, tiklÄ«dz kļūst pieejami jauni bloki, ielÄdÄt tos objektu uzglabÄÅ”anas spainÄ«Å”os.
IekrauÅ”ana objektu krÄtuvÄ tÅ«lÄ«t pÄc ierakstÄ«Å”anas diskÄ Ä¼auj arÄ« saglabÄt skrÄpja vienkÄrŔību (Prometheus un Thanos Sidecar). Kas vienkÄrÅ”o atbalstu, izmaksas un sistÄmas dizainu.
KÄ redzat, datu dublÄÅ”ana ir ļoti vienkÄrÅ”a. Bet kÄ ir ar datu vaicÄÅ”anu objektu krÄtuvÄ?
Thanos Store komponents darbojas kÄ starpniekserveris datu izgÅ«Å”anai no objektu krÄtuves. TÄpat kÄ Thanos Sidecar, tas piedalÄs tenku klasterÄ« un ievieÅ” Store API. TÄdÄ veidÄ esoÅ”ais vaicÄtÄjs to var uzskatÄ«t par blakusvÄÄ£i kÄ citu laikrindu datu avotu ā nav nepiecieÅ”ama Ä«paÅ”a konfigurÄcija.
Laika rindu datu bloki sastÄv no vairÄkiem lieliem failiem. To ielÄde pÄc pieprasÄ«juma bÅ«tu diezgan neefektÄ«va, un lokÄlai saglabÄÅ”anai keÅ”atmiÅÄ bÅ«tu nepiecieÅ”ams milzÄ«gs atmiÅas un diska vietas apjoms.
TÄ vietÄ Store Gateway zina, kÄ rÄ«koties ar Prometheus krÄtuves formÄtu. Pateicoties viedam vaicÄjumu plÄnotÄjam un tikai nepiecieÅ”amo bloku indeksa daļu saglabÄÅ”anai keÅ”atmiÅÄ, ir iespÄjams samazinÄt sarežģītus vaicÄjumus lÄ«dz minimÄlam HTTP pieprasÄ«jumu skaitam objektu krÄtuves failiem. TÄdÄ veidÄ jÅ«s varat samazinÄt pieprasÄ«jumu skaitu par ÄetrÄm lÄ«dz seÅ”Äm kÄrtÄm un sasniegt atbildes laiku, ko parasti ir grÅ«ti atŔķirt no pieprasÄ«jumiem uz datiem vietÄjÄ SSD.
KÄ parÄdÄ«ts iepriekÅ” redzamajÄ diagrammÄ, Thanos Querier ievÄrojami samazina maksu par objektu uzglabÄÅ”anas datu vaicÄjumu, izmantojot Prometheus krÄtuves formÄtu un novietojot saistÄ«tos datus blakus. Izmantojot Å”o pieeju, mÄs varam apvienot daudzus atseviŔķus pieprasÄ«jumus minimÄlÄ lielapjoma darbÄ«bu skaitÄ.
BlÄ«vÄÅ”ana un samazinÄÅ”ana
Kad jauns laikrindu datu bloks ir veiksmÄ«gi ielÄdÄts objektu krÄtuvÄ, mÄs tos apstrÄdÄjam kÄ āvÄsturiskusā datus, kas ir uzreiz pieejami, izmantojot veikala vÄrteju.
TomÄr pÄc kÄda laika bloki no viena avota (Prometheus ar blakusvÄÄ£i) uzkrÄjas un vairs neizmanto pilnu indeksÄÅ”anas potenciÄlu. Lai atrisinÄtu Å”o problÄmu, mÄs ieviesÄm vÄl vienu komponentu ar nosaukumu Compactor. Tas vienkÄrÅ”i piemÄro Prometheus lokÄlo blÄ«vÄÅ”anas dzinÄju vÄsturiskajiem datiem objektu krÄtuvÄ, un to var palaist kÄ vienkÄrÅ”u periodisku pakeÅ”u darbu.
Pateicoties efektÄ«vai saspieÅ”anai, vaicÄjumi par krÄtuvi ilgÄ laika periodÄ nerada problÄmas datu apjoma ziÅÄ. TomÄr iespÄjamÄs izmaksas, kas saistÄ«tas ar miljarda vÄrtÄ«bu izpakoÅ”anu un to palaiÅ”anu, izmantojot vaicÄjumu procesoru, neizbÄgami radÄ«s dramatisku vaicÄjuma izpildes laika pieaugumu. No otras puses, tÄ kÄ ekrÄnÄ ir simtiem datu punktu uz vienu pikseļu, kļūst neiespÄjami pat vizualizÄt datus ar pilnu izŔķirtspÄju. TÄdÄjÄdi paraugu samazinÄÅ”ana ir ne tikai iespÄjama, bet arÄ« neradÄ«s ievÄrojamu precizitÄtes zudumu.
Lai samazinÄtu datu izlasi, Compactor nepÄrtraukti apkopo datus ar piecu minÅ«Å”u un vienas stundas izŔķirtspÄju. Katrai neapstrÄdÄtai daļai, kas kodÄta, izmantojot TSDB XOR saspieÅ”anu, tiek saglabÄti dažÄda veida apkopotie dati, piemÄram, min, max vai summa vienam blokam. Tas ļauj Querier automÄtiski atlasÄ«t apkopojumu, kas ir piemÄrots konkrÄtajam PromQL vaicÄjumam.
Lai lietotÄjs varÄtu izmantot samazinÄtas precizitÄtes datus, nav nepiecieÅ”ama Ä«paÅ”a konfigurÄcija. Querier automÄtiski pÄrslÄdzas starp dažÄdÄm izŔķirtspÄjÄm un neapstrÄdÄtajiem datiem, lietotÄjam tuvinot un tÄlinot. Ja vÄlas, lietotÄjs to var tieÅ”i kontrolÄt, izmantojot pieprasÄ«juma parametru āsolisā.
TÄ kÄ viena GB uzglabÄÅ”anas izmaksas ir zemas, pÄc noklusÄjuma Thanos saglabÄ neapstrÄdÄtus datus, piecu minÅ«Å”u un vienas stundas izŔķirtspÄjas datus. Nav nepiecieÅ”ams dzÄst sÄkotnÄjos datus.
IerakstīŔanas noteikumi
Pat ar Thanos ierakstÄ«Å”anas noteikumi ir bÅ«tiska uzraudzÄ«bas steka sastÄvdaļa. Tie samazina vaicÄjumu sarežģītÄ«bu, latentumu un izmaksas. Tie ir arÄ« Ärti lietotÄjiem, lai iegÅ«tu apkopotus datus pÄc metrikas. Thanos pamatÄ ir vaniļas Prometheus gadÄ«jumi, tÄpÄc ir pilnÄ«gi pieÅemami saglabÄt ierakstÄ«Å”anas noteikumus un brÄ«dinÄjumu noteikumus esoÅ”Ä Prometheus serverÄ«. TomÄr dažos gadÄ«jumos ar to var nepietikt:
- GlobÄlais brÄ«dinÄjums un noteikums (piemÄram, brÄ«dinÄjums, ja pakalpojums nedarbojas vairÄk nekÄ divÄs no trim klasteriem).
- Noteikums datiem Ärpus vietÄjÄs krÄtuves.
- VÄlme glabÄt visus noteikumus un brÄ«dinÄjumus vienuviet.
Visos Å”ajos gadÄ«jumos Thanos ietver atseviŔķu komponentu ar nosaukumu Ruler, kas aprÄÄ·ina noteikumu un brÄ«dinÄjumus, izmantojot Thanos Queries. NodroÅ”inot labi zinÄmu StoreAPI, vaicÄjuma mezgls var piekļūt tikko aprÄÄ·inÄtajiem rÄdÄ«tÄjiem. VÄlÄk tie tiek glabÄti arÄ« objektu krÄtuvÄ un padarÄ«ti pieejami, izmantojot Store Gateway.
Tanosa spÄks
Thanos ir pietiekami elastÄ«gs, lai to pielÄgotu jÅ«su vajadzÄ«bÄm. Tas ir Ä«paÅ”i noderÄ«gi, migrÄjot no vienkÄrÅ”Ä Prometeja. ÄŖsi apkoposim to, ko esam iemÄcÄ«juÅ”ies par Thanos komponentiem, izmantojot Ä«su piemÄru. LÅ«k, kÄ izmantot savu vaniļas Prometheus āneierobežotas metrikas krÄtuvesā pasaulÄ:
- Pievienojiet Thanos Sidecar saviem Prometheus serveriem, piemÄram, blakusvÄÄ£a konteineru Kubernetes podÄ.
- Izvietojiet vairÄkas Thanos Querier replikas, lai varÄtu skatÄ«t datus. Å ajÄ posmÄ ir viegli izveidot tenkas starp Scraper un Querier. Lai pÄrbaudÄ«tu komponentu mijiedarbÄ«bu, izmantojiet metriku āthanos_cluster_membersā.
Ar Å”iem diviem soļiem pietiek, lai nodroÅ”inÄtu globÄlu skatÄ«jumu un netraucÄtu datu atdalÄ«Å”anu no potenciÄlajÄm Prometheus HA replikÄm! VienkÄrÅ”i savienojiet savus informÄcijas paneļus ar Querier HTTP galapunktu vai tieÅ”i izmantojiet Thanos lietotÄja interfeisu.
TomÄr, ja jums ir nepiecieÅ”ama metrikas dublÄÅ”ana un ilgtermiÅa glabÄÅ”ana, jums bÅ«s jÄveic vÄl trÄ«s darbÄ«bas.
- Izveidojiet AWS S3 vai GCS spaini. KonfigurÄjiet Sidecar, lai kopÄtu datus uz Å”iem segmentiem. VietÄjo datu krÄtuvi tagad var samazinÄt lÄ«dz minimumam.
- Izvietojiet veikala vÄrteju un savienojiet to ar savu esoÅ”o tenku kopu. Tagad varat pieprasÄ«t dublÄtos datus!
- Izvietojiet Compactor, lai uzlabotu vaicÄjumu efektivitÄti ilgÄ laika periodÄ, izmantojot blÄ«vÄÅ”anu un iztverÅ”anu.
Ja vÄlaties uzzinÄt vairÄk, nevilcinieties apskatÄ«t mÅ«su
Tikai piecos soļos mÄs pÄrvÄrtÄm Prometheus par uzticamu uzraudzÄ«bas sistÄmu ar globÄlu skatu, neierobežotu uzglabÄÅ”anas laiku un potenciÄli augstu metrikas pieejamÄ«bu.
IzvilkŔanas pieprasījums: mums tu esi vajadzīgs!
MÄs vienmÄr atzinÄ«gi vÄrtÄjam GitHub Pull pieprasÄ«jumus un problÄmas. TikmÄr sazinieties ar mums, izmantojot Github Issues vai slack
Avots: www.habr.com