Thanos - Scalable Prometheus

Ang paghubad sa artikulo espesipikong giandam alang sa mga estudyante sa kurso "Mga gawi ug himan sa DevOps".

Fabian Reinartz usa ka software developer, Go fanatic, ug problem solver. Siya usab usa ka Prometheus maintainer ug co-founder sa Kubernetes SIG instrumentation. Kaniadto, usa siya ka production engineer sa SoundCloud ug nanguna sa monitoring team sa CoreOS. Nagtrabaho karon sa Google.

Bartek Plotka - Infrastructure Engineer sa Imposible. Interesado siya sa mga bag-ong teknolohiya ug mga problema sa gipang-apod-apod nga mga sistema. Siya adunay ubos nga lebel nga kasinatian sa programming sa Intel, kasinatian sa kontribyutor sa Mesos, ug kalibutanon nga klase nga kasinatian sa produksiyon sa SRE sa Improbable. Gipahinungod sa pagpalambo sa kalibutan sa microservices. Ang iyang tulo ka gugma: Golang, open source ug volleyball.

Sa pagtan-aw sa among punoan nga produkto nga SpatialOS, makatag-an ka nga ang Improbable nanginahanglan usa ka labi ka dinamiko, global-scale nga imprastraktura sa panganod nga adunay daghang mga kumpol sa Kubernetes. Usa kami sa unang migamit ug monitoring system Prometheus. Ang Prometheus makahimo sa pagsubay sa milyon-milyon nga mga sukatan sa tinuud nga oras ug adunay usa ka kusgan nga lengguwahe sa pangutana nga nagtugot kanimo nga makuha ang kasayuran nga imong kinahanglan.

Ang kayano ug kasaligan sa Prometheus mao ang usa sa mga nag-unang bentaha niini. Bisan pa, sa dihang nakalapas na kami sa usa ka sukod, nakasugat kami og daghang mga kakulangan. Aron masulbad kini nga mga problema among naugmad Thanos mao ang usa ka open source nga proyekto nga gimugna sa Improbable aron hapsay nga magbag-o sa kasamtangan nga Prometheus clusters ngadto sa usa ka sistema sa pagmonitor nga adunay walay kinutuban nga historical data storage. Ang Thanos anaa sa Github dinhi.

Magpabilin nga updated sa pinakabag-o nga balita gikan sa Improbable.

Ang among mga tumong kauban si Thanos

Sa usa ka piho nga sukod, ang mga problema motungha nga lapas sa mga kapabilidad sa vanilla Prometheus. Sa unsang paagi masaligan ug ekonomikanhon ang pagtipig sa mga petabyte sa makasaysayanong datos? Mahimo ba kini nga dili ikompromiso ang oras sa pagtubag? Posible ba nga ma-access ang tanan nga mga sukatan nga nahimutang sa lainlaing mga server sa Prometheus nga adunay usa ka hangyo sa API? Aduna bay bisan unsang paagi aron makombinar ang gisubli nga datos nga nakolekta gamit ang Prometheus HA?

Aron matubag kini nga mga isyu, gibuhat namon ang Thanos. Ang mosunod nga mga seksyon naghulagway kung giunsa namo pagduol kini nga mga isyu ug gipatin-aw ang among mga tumong.

Pagpangutana sa datos gikan sa daghang mga higayon sa Prometheus (global nga pangutana)

Ang Prometheus nagtanyag usa ka praktikal nga pamaagi sa sharding. Bisan ang usa ka server sa Prometheus naghatag igong scalability aron mapahigawas ang mga tiggamit gikan sa pagkakomplikado sa horizontal sharding sa halos tanan nga mga kaso sa paggamit.

Samtang kini usa ka maayo nga modelo sa pag-deploy, kasagaran gikinahanglan ang pag-access sa datos sa lainlaing mga server sa Prometheus pinaagi sa usa ka API o UI - usa ka global nga pagtan-aw. Siyempre, posible nga ipakita ang daghang mga pangutana sa usa ka panel sa Grafana, apan ang matag pangutana mahimo ra ipatuman sa usa ka server sa Prometheus. Sa laing bahin, uban sa Thanos mahimo ka makapangutana ug maghiusa sa datos gikan sa daghang mga server sa Prometheus tungod kay silang tanan ma-access gikan sa usa ka endpoint.

Kaniadto, aron makakuha usa ka global nga pagtan-aw sa Improbable, among gi-organisar ang among mga higayon sa Prometheus sa usa ka multi-level Hierarchical Federation. Nagpasabot kini sa paghimo og usa ka Prometheus meta server nga nagkolekta sa pipila ka metrics gikan sa matag leaf server.

Thanos - Scalable Prometheus

Kini nga pamaagi nahimong problema. Nagresulta kini sa mas komplikado nga mga pag-configure, pagdugang sa usa ka dugang nga potensyal nga punto sa kapakyasan, ug paggamit sa komplikado nga mga lagda aron masiguro nga ang federated endpoint makadawat lamang sa datos nga gikinahanglan niini. Dugang pa, kini nga matang sa pederasyon wala magtugot kanimo nga makakuha usa ka tinuud nga global nga pagtan-aw, tungod kay dili tanan nga datos makuha gikan sa usa ka hangyo sa API.

Ang suod nga kalambigitan niini mao ang usa ka hiniusa nga pagtan-aw sa mga datos nga nakolekta sa mga high-availability (HA) Prometheus server. Ang modelo sa Prometheus nga HA independente nga nagkolekta sa datos sa makaduha, nga yano kaayo nga dili kini mahimong mas simple. Bisan pa, ang paggamit sa usa ka hiniusa ug gi-deduplicate nga pagtan-aw sa duha nga mga sapa mahimong labi ka kombenyente.

Siyempre, adunay panginahanglan alang sa labi ka magamit nga mga server sa Prometheus. Sa Improbable, giseryoso namo ang matag minuto nga pag-monitor sa datos, apan ang pagbaton og usa ka Prometheus nga instance kada cluster usa ka punto sa kapakyasan. Ang bisan unsang sayup sa pag-configure o pagkapakyas sa hardware mahimong mosangput sa pagkawala sa hinungdanon nga datos. Bisan ang usa ka yano nga pag-deploy mahimong hinungdan sa ginagmay nga mga pagkabalda sa pagkolekta sa mga sukatan tungod kay ang pag-restart mahimong labi ka taas kaysa sa agwat sa pag-scrap.

Masaligan nga pagtipig sa makasaysayan nga datos

Ang barato, paspas, dugay nga pagtipig sa sukatan mao ang among damgo (gipaambit sa kadaghanan sa mga tiggamit sa Prometheus). Sa Improbable, napugos kami sa pag-configure sa metrics retention period ngadto sa siyam ka adlaw (alang sa Prometheus 1.8). Nagdugang kini og klaro nga mga limitasyon sa kung unsa ka layo ang atong makita sa likod.

Ang Prometheus 2.0 miuswag niining bahina, tungod kay ang gidaghanon sa mga serye sa panahon wala na makaapekto sa kinatibuk-ang pasundayag sa server (tan-awa. KubeCon keynote bahin sa Prometheus 2). Bisan pa, ang Prometheus nagtipig sa datos sa lokal nga disk. Bisan tuod ang high-efficiency data compression makapakunhod pag-ayo sa lokal nga paggamit sa SSD, sa katapusan aduna gihapoy limitasyon sa gidaghanon sa makasaysayanong datos nga mahimong tipigan.

Dugang pa, sa Improbable nagpakabana kami bahin sa kasaligan, kayano ug gasto. Ang dagkong mga lokal nga disk mas lisud nga operahan ug i-back up. Mas dako ang gasto nila ug nanginahanglan daghang mga gamit sa pag-backup, nga miresulta sa dili kinahanglan nga pagkakomplikado.

Pag-downsampling

Sa dihang nagsugod na kami sa pagtrabaho uban sa makasaysayanong datos, among naamgohan nga adunay sukaranang mga kalisdanan sa big-O nga naghimo sa mga pangutana nga mas hinay ug hinay samtang kami nagtrabaho uban sa mga semana, mga bulan, ug mga tuig sa datos.

Ang standard nga solusyon niini nga problema mao ang downsampling (downsampling) - pagkunhod sa signal sampling frequency. Uban sa pag-downsampling, mahimo namong "magpaubos" sa mas dako nga sakup sa oras ug mamentinar ang parehas nga gidaghanon sa mga sample, nga magpadayon nga tubagon ang mga pangutana.

Ang pag-downsampling sa daan nga datos usa ka dili kalikayan nga kinahanglanon sa bisan unsang dugay nga solusyon sa pagtipig ug lapas sa sakup sa vanilla Prometheus.

Dugang nga mga tumong

Usa sa orihinal nga mga katuyoan sa proyekto sa Thanos mao ang hapsay nga pag-integrate sa bisan unsang naa na nga mga instalasyon sa Prometheus. Ang ikaduha nga tumong mao ang kasayon ​​sa operasyon nga adunay gamay nga mga babag sa pagsulod. Ang bisan unsang mga dependency kinahanglan dali nga matagbaw alang sa gagmay ug dagkong mga tiggamit, nga nagpasabut usab nga usa ka mubu nga sukaranan nga gasto.

Ang arkitektura sa Thanos

Pagkahuman sa paglista sa among mga katuyoan sa miaging seksyon, sulayan naton kini ug tan-awon kung giunsa pagsulbad ni Thanos kini nga mga problema.

Global nga panglantaw

Aron makakuha usa ka global nga pagtan-aw sa ibabaw sa naglungtad nga mga higayon sa Prometheus, kinahanglan namon nga i-link ang usa ka punto sa pagsulod sa hangyo sa tanan nga mga server. Mao gyud kini ang gibuhat sa sangkap sa Thanos. Sidecar. Gi-deploy kini sunod sa matag server sa Prometheus ug naglihok isip proxy, nagserbisyo sa lokal nga datos sa Prometheus pinaagi sa gRPC Store API, nga gitugotan ang datos sa serye sa oras nga makuha pinaagi sa tag ug sakup sa oras.

Sa pikas bahin mao ang scale-out, stateless Querier component, nga dili lang motubag sa mga pangutana sa PromQL pinaagi sa standard Prometheus HTTP API. Ang Querier, Sidecar ug uban pang mga sangkap sa Thanos nakigsulti pinaagi sa protocol sa tsismis.

Thanos - Scalable Prometheus

  1. Ang Querier, sa pagdawat sa usa ka hangyo, nagkonektar sa katugbang nga Store API server, nga mao, sa among Sidecars ug nakadawat sa datos sa serye sa panahon gikan sa katugbang nga mga server sa Prometheus.
  2. Pagkahuman niana, gihiusa niini ang mga tubag ug gipatuman ang usa ka pangutana sa PromQL sa kanila. Ang Querier mahimong maghiusa sa duha ka disjoint data ug duplicate data gikan sa Prometheus HA servers.

Gisulbad niini ang usa ka mayor nga piraso sa among puzzle - paghiusa sa mga datos gikan sa nahilit nga mga server sa Prometheus ngadto sa usa ka pagtan-aw. Sa tinuud, magamit ra ang Thanos alang sa kini nga bahin. Wala’y mga pagbag-o nga kinahanglan buhaton sa naglungtad nga mga server sa Prometheus!

Walay kinutuban nga estante sa kinabuhi!

Bisan pa, sa madugay o sa madali gusto namong tipigan ang mga datos lapas sa normal nga panahon sa pagpadayon sa Prometheus. Gipili namo ang pagtipig sa butang aron tipigan ang makasaysayanong datos. Kini kaylap nga magamit sa bisan unsang panganod ingon man sa mga sentro sa datos sa lugar ug epektibo kaayo ang gasto. Dugang pa, halos bisan unsang butang nga pagtipig anaa pinaagi sa iladong S3 API.

Gisulat ni Prometheus ang datos gikan sa RAM hangtod sa disk hapit matag duha ka oras. Ang gitipigan nga bloke sa datos naglangkob sa tanan nga datos sa usa ka piho nga yugto sa panahon ug dili mausab. Kini sayon ​​​​kaayo tungod kay ang Thanos Sidecar mahimo ra nga motan-aw sa Prometheus data directory ug, samtang ang mga bag-ong bloke mahimong magamit, i-load kini sa mga balde sa pagtipig sa butang.

Thanos - Scalable Prometheus

Ang loading ngadto sa butang storage diha-diha dayon human sa pagsulat ngadto sa disk usab nagtugot kaninyo sa pagpadayon sa kayano sa scraper (Prometheus ug Thanos Sidecar). Nga nagpasimple sa suporta, gasto ug disenyo sa sistema.

Sama sa imong makita, ang pag-backup sa data yano ra kaayo. Apan komosta ang pagpangutana sa datos sa pagtipig sa butang?

Ang sangkap sa Thanos Store naglihok isip proxy aron makuha ang datos gikan sa pagtipig sa butang. Sama sa Thanos Sidecar, miapil kini sa pundok sa tsismis ug nagpatuman sa Store API. Niining paagiha, ang naglungtad nga Querier mahimong magtagad niini sama sa usa ka Sidecar, ingon usa ka gigikanan sa datos sa serye sa oras - wala’y kinahanglan nga espesyal nga pag-configure.

Thanos - Scalable Prometheus

Ang mga bloke sa datos sa serye sa oras naglangkob sa daghang dagkong mga file. Ang pag-load niini sa panginahanglan dili kaayo epektibo, ug ang pag-cache niini sa lokal nga lugar nanginahanglan daghang memorya ug espasyo sa disk.

Hinuon, nahibal-an sa Store Gateway kung giunsa pagdumala ang format sa pagtipig sa Prometheus. Salamat sa usa ka smart query scheduler ug pag-cache lamang sa gikinahanglan nga index nga mga bahin sa mga bloke, posible nga makunhuran ang komplikadong mga pangutana ngadto sa minimum nga gidaghanon sa HTTP nga mga hangyo sa object storage files. Niining paagiha, mahimo nimong pakunhuran ang gidaghanon sa mga hangyo sa upat ngadto sa unom ka mga order sa kadako ug makab-ot ang mga oras sa pagtubag nga kasagaran lisud mailhan gikan sa mga hangyo sa datos sa usa ka lokal nga SSD.

Thanos - Scalable Prometheus

Sama sa gipakita sa dayagram sa ibabaw, ang Thanos Querier makapamenos pag-ayo sa gasto kada pangutana sa data sa pagtipig sa butang pinaagi sa paggamit sa Prometheus storage format ug pagbutang sa may kalabutan nga datos nga magkatabi. Gamit kini nga pamaagi, mahimo natong ikombinar ang daghang mga hangyo ngadto sa usa ka minimum nga gidaghanon sa kadaghanan nga mga operasyon.

Compaction ug downsampling

Sa higayon nga ang usa ka bag-ong block sa time series data malamposong makarga ngadto sa object storage, among gitratar kini isip "historical" data, nga anaa dayon pinaagi sa Store Gateway.

Bisan pa, pagkahuman sa pila ka oras, ang mga bloke gikan sa usa ka gigikanan (Prometheus nga adunay Sidecar) natipon ug wala na magamit ang tibuuk nga potensyal sa pag-indeks. Aron masulbad kini nga problema, gipaila namo ang laing component nga gitawag og Compactor. Gipadapat lang niini ang lokal nga compaction engine ni Prometheus sa makasaysayanong datos sa pagtipig sa butang ug mahimong ipadagan isip usa ka yano nga periodic batch job.

Thanos - Scalable Prometheus

Salamat sa episyente nga compression, ang pagpangutana sa pagtipig sa taas nga yugto sa panahon wala maghatag problema sa mga termino sa gidak-on sa datos. Bisan pa, ang potensyal nga gasto sa pag-unpack sa usa ka bilyon nga kantidad ug pagpadagan niini pinaagi sa usa ka processor sa pangutana dili kalikayan nga moresulta sa usa ka talagsaong pagtaas sa oras sa pagpatuman sa pangutana. Sa laing bahin, tungod kay adunay gatusan ka mga punto sa datos kada pixel sa screen, mahimong imposible nga mahanduraw ang datos sa bug-os nga resolusyon. Busa, ang downsampling dili lamang posible, apan dili usab mosangpot sa usa ka mamatikdan nga pagkawala sa katukma.

Thanos - Scalable Prometheus

Aron mapaubos ang sampol nga datos, ang Compactor padayong nag-aggregate sa datos sa resolusyon nga lima ka minuto ug usa ka oras. Alang sa matag hilaw nga tipak nga gi-encode gamit ang TSDB XOR compression, lain-laing klase sa aggregate data ang gitipigan, sama sa min, max o sum para sa usa ka block. Gitugotan niini ang Querier nga awtomatiko nga makapili usa ka aggregate nga angay alang sa gihatag nga pangutana sa PromQL.

Wala’y espesyal nga pag-configure ang gikinahanglan alang sa tiggamit aron magamit ang pagkunhod sa katukma nga datos. Awtomatikong mobalhin ang Querier tali sa lain-laing mga resolusyon ug hilaw nga datos samtang nag-zoom in ug out ang user. Kung gusto, ang user makakontrol niini direkta pinaagi sa "lakang" parameter sa hangyo.

Tungod kay ang gasto sa pagtipig sa usa ka GB gamay ra, pinaagi sa default ang Thanos nagtipig hilaw nga datos, lima ka minuto ug usa ka oras nga datos sa resolusyon. Dili kinahanglan nga papason ang orihinal nga datos.

Mga lagda sa pagrekord

Bisan sa Thanos, ang mga lagda sa pagrekord usa ka hinungdanon nga bahin sa stack sa pag-monitor. Gipamenos nila ang pagkakomplikado, latency, ug gasto sa mga pangutana. Kombenyente usab sila alang sa mga tiggamit nga makakuha og aggregated data pinaagi sa mga sukatan. Ang Thanos gibase sa vanilla Prometheus nga mga higayon, mao nga hingpit nga madawat ang pagtipig sa mga lagda sa pagrekord ug pag-alerto sa mga lagda sa usa ka kasamtangan nga Prometheus server. Apan, sa pipila ka mga kaso kini mahimong dili igo:

  • Global alert ug lagda (pananglitan, usa ka alerto kung ang usa ka serbisyo dili molihok sa labaw sa duha sa tulo ka mga cluster).
  • Lagda alang sa datos gawas sa lokal nga pagtipig.
  • Ang tinguha sa pagtipig sa tanan nga mga lagda ug mga alerto sa usa ka dapit.

Thanos - Scalable Prometheus

Alang sa tanan niini nga mga kaso, ang Thanos naglakip sa usa ka bulag nga sangkap nga gitawag nga Ruler, nga nag-compute sa lagda ug alerto pinaagi sa Thanos Queries. Pinaagi sa paghatag usa ka ilado nga StoreAPI, ang Query node maka-access sa bag-ong nakalkula nga mga sukatan. Sa ulahi sila gitipigan usab sa pagtipig sa butang ug gihimo nga magamit pinaagi sa Store Gateway.

Ang Gahum ni Thanos

Ang Thanos igo nga flexible aron ipahiangay sa imong mga panginahanglan. Kini labi ka mapuslanon kung molalin gikan sa yano nga Prometheus. Atong ibalik dayon kung unsa ang atong nahibal-an bahin sa mga sangkap sa Thanos nga adunay dali nga pananglitan. Ania kung giunsa nimo dad-on ang imong vanilla Prometheus sa kalibutan sa "walay kinutuban nga pagtipig sa sukatan":

Thanos - Scalable Prometheus

  1. Idugang ang Thanos Sidecar sa imong Prometheus server - pananglitan, usa ka sidecar nga sudlanan sa usa ka Kubernetes pod.
  2. I-deploy ang daghang mga kopya sa Thanos Querier aron makatan-aw sa datos. Niini nga yugto dali ra ang paghimo og tsismis tali sa Scraper ug Querier. Aron masusi ang interaksyon sa mga sangkap, gamita ang 'thanos_cluster_members' metric.

Kining duha lang ka mga lakang igo na aron makahatag ug global nga panglantaw ug seamless data deduplication gikan sa potensyal nga Prometheus HA replicas! Ikonektar lang ang imong mga dashboard sa Querier HTTP endpoint o gamita ang Thanos UI direkta.

Bisan pa, kung kinahanglan nimo ang pag-backup sa sukatan ug dugay nga pagtipig, kinahanglan nimo nga makompleto ang tulo pa nga mga lakang:

  1. Paghimo ug AWS S3 o GCS bucket. I-configure ang Sidecar aron makopya ang datos sa kini nga mga balde. Ang lokal nga pagtipig sa datos mahimo na nga maminusan.
  2. I-deploy ang Gateway sa Store ug ikonektar kini sa imong kasamtangan nga kumpol sa tsismis. Karon mahimo nimong pangutana ang gi-backup nga datos!
  3. I-deploy ang Compactor aron mapauswag ang kahusayan sa pangutana sa taas nga panahon gamit ang compaction ug downsampling.

Kung gusto nimo mahibal-an ang dugang, ayaw pagpanuko sa pagtan-aw sa among kubernetes nagpakita nga mga pananglitan ΠΈ pagsugod!

Sa lima lang ka lakang, gihimo namo ang Prometheus nga usa ka kasaligan nga sistema sa pagmonitor nga adunay global nga pagtan-aw, walay kinutuban nga oras sa pagtipig ug potensyal nga taas nga pagkaanaa sa mga sukatan.

Paghangyo sa pagbitad: kinahanglan ka namon!

Thanos usa na ka open source nga proyekto sukad pa sa sinugdanan. Ang seamless nga panagsama sa Prometheus ug ang abilidad sa paggamit lang sa usa ka bahin sa Thanos naghimo niini nga usa ka maayo kaayo nga pagpili alang sa pag-scale sa imong monitoring system nga walay kahago.

Kanunay namong gidawat ang GitHub Pull Requests ug Isyu. Sa kasamtangan, ayaw pagduhaduha sa pagkontak kanamo pinaagi sa Mga Isyu sa Github o slack Improbable-eng #thanoskung naa kay mga pangutana o feedback, o gusto nga ipaambit ang imong kasinatian sa paggamit niini! Kung ganahan ka sa among gibuhat sa Improbable, ayaw pagpanuko sa pagkontak kanamo - naa mi bakante!

Pagkat-on og dugang mahitungod sa kurso.

Source: www.habr.com

Idugang sa usa ka comment