VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Hej alla. Nedan följer en sammanfattning av föredraget vid Big Monitoring Meetup 4.

Prometheus – ett övervakningssystem för olika system och tjĂ€nster, som gör det möjligt för systemadministratörer att samla in information om aktuella systemparametrar och stĂ€lla in aviseringar för att fĂ„ meddelanden om avvikelser i systemens prestanda.

Föredraget kommer att innehĂ„lla en jĂ€mförelse Thanos och VictoriaMetrics – projekt för lĂ„ngsiktig lagring av Prometheus-metrik.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Spela video

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Först kommer jag att berÀtta om Prometheus. Det Àr ett övervakningssystem som samlar in metrik frÄn angivna mÄltavlor och sparar dem i en lokal lagring. Prometheus kan skriva metrik till en fjÀrrlagring, generera aviseringar och inspelningsregler.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

BegrÀnsningar med Prometheus:

  • Den har ingen global frĂ„gevy. Det Ă€r nĂ€r ni har flera oberoende instanser av Prometheus. De samlar in metrik, och ni vill göra en frĂ„ga pĂ„ alla dessa metrik frĂ„n olika Prometheus-instanser. Det tillĂ„ter inte Prometheus.
  • Prestandan hos Prometheus begrĂ€nsas av en enda server. Prometheus kan inte automatiskt skalas över flera servrar. Ni kan bara manuellt dela upp era mĂ„ltavlor mellan flera Prometheus-instanser.
  • MĂ€ngden metrik i Prometheus begrĂ€nsas ocksĂ„ av en enda server av samma anledning som den inte kan skalas över flera servrar.
  • Det Ă€r inte sĂ„ enkelt att organisera datalagring i Prometheus.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Lösningar pÄ dessa problem/uppgifter?

Lösningarna Àr:

Alla dessa lösningar handlar om fjÀrrlagring av data som samlats in av Prometheus. De löser problemet med fjÀrrlagring frÄn föregÄende bild pÄ olika sÀtt. I denna presentation kommer jag endast att tala om de första tvÄ lösningarna: Thanos och VictoriaMetrics.

För första gÄngen dök informationen om Thanos upp i denna lÀnk. DÀr beskrivs arkitekturen Thanos och hur den fungerar.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Thanos tar data som Prometheus har sparat pÄ lokal disk och kopierar dem till S3, GCS eller annan objektlagring.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

SÄledes erbjuder Thanos en global frÄgevy. Ni kan frÄga efter data som har sparats i objektlagring frÄn flera instanser av Prometheus.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Thanos stöder PromQL och Prometheus frÄge-API.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Thanos anvÀnder Prometheus kod för datalagring.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Thanos utvecklas av samma utvecklare som Prometheus.

Om VictoriaMetrics. HÀr Àr lÀnk, dÀr vi först berÀttade om VictoriaMetrics.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics fÄr data frÄn flera Prometheus via fjÀrrskriv-API protokollet som stöds av Prometheus.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics erbjuder en global sökvy, eftersom flera Prometheus-instanser kan skriva data till en VictoriaMetrics. DÀrför kan ni göra förfrÄgningar pÄ all denna data.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics stöder Àven, precis som Thanos - PromQL och Prometheus frÄge-API.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Till skillnad frÄn Thanos Àr kÀllkoden till VictoriaMetrics skriven frÄn grunden och optimerad för hastighet och resursanvÀndning.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics kan, till skillnad frÄn Thanos, skalas bÄde vertikalt och horisontellt. Det finns Enkelnods-versionen, som skalar vertikalt. Du kan börja med en processor och 1 GB minne och vÀxa gradvis till hundra processorer och 1 TB minne. VictoriaMetrics kan anvÀnda alla dessa resurser. Dess prestanda kommer att öka med ungefÀr 100 gÄnger jÀmfört med ett system med en kÀrna.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Historien om Thanos började i november 2017, nÀr den första offentliga committen slÀpptes. Innan dess utvecklades Thanos internt i företaget improbable.io.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

I juni 2019 slÀpptes en betydelsefull version 0.5.0, dÀr protokollet togs bort. gossip Det togs bort frÄn Thanos eftersom det inte presterade som förvÀntat. Ofta fungerade Thanos-klustret felaktigt, noder kopplades inte korrekt pÄ grund av gossip-protokollet. DÀrför beslöt man att ta bort det. Jag anser att detta var ett rÀtt beslut.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

I juni 2019 skickade de in ansökan nummer 256 pÄ Cloud Native Computing Foundation.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Och efter ett par mÄnader blev Thanos accepterad i Cloud Native Computing Foundation, som inkluderar Prometheus, Kubernetes och andra populÀra projekt.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

I januari 2018 pÄbörjades utvecklingen av VictoriaMetrics.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

I september 2018 nÀmnde jag för första gÄngen offentligt VictoriaMetrics.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

I december 2018 publicerade vi Enkelnods-versionen.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

I maj 2019 publicerades kÀllkoden bÄde för Enkelnod och klusterversionen.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

I juni 2019, precis som Thanos, skickade vi in en ansökan till CNCF-fonden med nummer 255. Vi skickade in ansökan en dag tidigare Àn Thanos.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Men tyvÀrr har vi fortfarande inte blivit accepterade dÀr. Det behövs stöd frÄn communityn.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

LÄt oss titta pÄ de viktigaste bilderna som visar arkitekturen för Thanos och VictoriaMetrics.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Vi börjar med Thanos. De gula komponenterna Àr Prometheus-komponenter. Allt annat Àr Thanos-komponenter. Vi börjar med den mest centrala komponenten. Thanos Sidecar Àr en komponent som installeras bredvid varje Prometheus. Den ansvarar för att ladda Prometheus-data frÄn lokal lagring till S3 eller annan objektlagring.

Det finns ocksÄ en komponent som Thanos Store Gateway, som kan lÀsa dessa data frÄn Object Storage vid inkommande förfrÄgningar frÄn Thanos Query. Thanos Query implementerar PromQL och Prometheus API. Det betyder att det externt ser ut som Prometheus. Det tar emot PromQL-förfrÄgningar, skickar dem till Thanos Store Gateway, som hÀmtar nödvÀndiga data frÄn Object Storage och skickar dem tillbaka.

Men vi har data i Object Storage som saknar de senaste tvÄ timmarna pÄ grund av hur Thanos Sidecar Àr implementerad, vilket inte kan ladda upp de senaste tvÄ timmarna till Object Storage S3, eftersom Prometheus Ànnu inte har skapat filer i det lokala lagret för dessa tvÄ timmar.

Hur löser man detta? Thanos Query skickar, utöver förfrÄgningar till Thanos Store Gateway, parallella förfrÄgningar Àven till varje Thanos Sidecar som ligger nÀra Prometheus.

Thanos Sidecar, Ä sin sida, proxyfierar förfrÄgningarna vidare till Prometheus och hÀmtar data för de senaste tvÄ timmarna.

Förutom dessa komponenter finns det ocksÄ en valfri komponent som Thanos kommer att ha svÄrt utan. Det Àr Thanos Compact, som hanterar sammanslagningen av smÄ filer i Object Storage till större filer som har laddats upp dit av Thanos Sidecars. Thanos Sidecar laddar upp filer med data för tvÄ timmar. Om dessa filer inte slÄs ihop till större filer kan deras antal öka avsevÀrt. Ju fler sÄdana filer, desto mer minne krÀvs för Thanos Store Gateway, desto fler resurser krÀvs för dataöverföring över nÀtverket, metadata. Thanos Store Gateways arbete blir ineffektivt. DÀrför mÄste Thanos Compact startas för att slÄ samman smÄ filer till större, sÄ att det finns fÀrre sÄdana filer och för att minska overheaden pÄ Thanos Store Gateway.

Det finns ocksÄ en komponent som Thanos Ruler. Den utför Prometheus alerting rules och kan berÀkna Prometheus recording rules för att skriva data tillbaka till Object Storage. Men denna komponent rekommenderas inte att anvÀnda, eftersom den Àr benÀgen att returnera ofullstÀndiga data.

SÄ hÀr ser den enkla strukturen ut för Thanos.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Nu jÀmför vi med strukturen för VictoriaMetrics.

VictoriaMetrics finns i tvÄ versioner: Single-node och kluster. Single-node fungerar pÄ en dator. I Single-node finns dessa komponenter inte, bara en binÀr fil. Denna binÀra fil ser ut som den hÀr kvadraten i presentationen. Allt som finns inom kvadraten Àr innehÄllet i den binÀra filen för Single-node-versionen. Du behöver inte kÀnna till den. Du startar bara den binÀra filen - och allt fungerar.

Den klusterbaserade versionen Àr mer komplicerad. Inuti den finns tre olika komponenter: vmselect, vminsert och vmstorage. Deras namn bör ge en förstÄelse för vad varje komponent gör. Insert-komponenten tar emot data i olika format: frÄn Prometheus remote write API, Influx line-protokollet, Graphite-protokollet och frÄn OpenTSDB-protokollet. Insert-komponenten tar emot dem, parserar och distribuerar dem mellan de befintliga lagringskomponenterna, dÀr datan sedan sparas. PromQL, samt Prometheus frÄge-API, och den kan anvÀndas som en ersÀttning för Prometheus i Grafana eller andra Prometheus API-klienter. Select tar emot promql-frÄgor, parserar dem, lÀser nödvÀndig data för att utföra denna frÄga frÄn lagringsnoder, processar dessa data och returnerar ett svar.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

LÄt oss jÀmföra installationskomplexiteten för Thanos och VictoriaMetrics.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Vi börjar med Thanos. Innan du börjar arbeta med Thanos mÄste du skapa en bucket i Object Storage, som S3 eller GCS, sÄ att Thanos Sidecar kan skriva data dit.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Sedan mÄste du installera Thanos Sidecar för varje Prometheus. Kom ihÄg att stÀnga av datakomprimering (data compaction) i Prometheus innan du gör detta. Datakomprimering komprimerar periodiskt data i den lokala lagringen i Prometheus för att minska resursanvÀndningen.

NÀr du installerar Thanos Sidecar till dina Prometheus:er mÄste du stÀnga av denna datakomprimering, eftersom Thanos Sidecar inte fungerar ordentligt med aktiverad datakomprimering. Det innebÀr att din Prometheus börjar spara data i block om tvÄ timmar och slutar slÄ samman dessa block i större. DÀrför, om du gör förfrÄgningar som överskrider varaktigheten för de senaste tvÄ timmarna, kommer de att vara mindre effektiva jÀmfört med hur de skulle kunna vara om datakomprimering var aktiverad.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

DÀrför rekommenderar Thanos att minska datalagringstiden (data retention) i den lokala lagringen till 6-8 timmar för att minska överbelastningen frÄn ett stort antal smÄ block.

NÀr du har installerat Thanos Sidecar mÄste du installera tvÄ komponenter för varje Object Storage Bucket. Det handlar om Thanos Compactor och Thanos Store Gateway.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

DÀrefter behöver du installera Thanos Query och konfigurera det sÄ att det kan ansluta till alla Thanos Store Gateways du har, samt kunna ansluta till alla Thanos Sidecars.

HÀr kan det uppstÄ ett litet problem.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Du behöver konfigurera en pÄlitlig och sÀker anslutning frÄn Thanos Query till dessa komponenter. Om dina Prometheus-instansor befinner sig i olika datacenter eller i olika VPC:er, sÄ Àr externa anslutningar förbjudna. Men för att Thanos Query ska fungera mÄste du pÄ nÄgot sÀtt konfigurera en anslutning dit, och du mÄste hitta en lösning.

Om du har mÄnga sÄdana datacenter minskar systemets tillförlitlighet. Eftersom Thanos Query stÀndigt mÄste hÄlla anslutningar till alla Thanos Sidecar som ligger i olika datacenter. Vid varje inkommande förfrÄgan kommer den att skicka förfrÄgningar till alla Thanos Sidecar. Om anslutningen bryts kommer du att fÄ antingen en ofullstÀndig uppsÀttning data eller svaret "klustret fungerar inte".

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

I VictoriaMetrics Àr allt lite enklare. För single-node-versionen rÀcker det med att köra en binÀrfil, sÄ fungerar allt.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

För den klusterbaserade versionen behöver du bara köra alla de tre ovan nÀmnda typerna av komponenter i valfritt antal, eller anvÀnda helm chart för att automatisera start av komponenter i Kubernetes. Vi planerar ocksÄ att skapa en Kubernetes-operator. Helm-diagrammet tÀcker inte vissa anvÀndningsfall och kan leda till problem. Till exempel tillÄter det att minska antalet storage-noder, vilket kan leda till dataförlust.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

NÀr du har startat en binÀrfil eller kluster-versionen rÀcker det med att lÀgga till i Prometheus-konfigurationen en instÀllning för remote write-url, sÄ att den börjar skriva data parallellt till den lokala lagringen och till den externa lagringen. Som du har mÀrkt bör denna konfiguration fungera mycket mer pÄlitligt jÀmfört med Thanos-konfigurationen. Vi behöver inte hÄlla anslutningen frÄn VictoriaMetrics till alla Prometheus-instansor, eftersom Prometheus-instansorna sjÀlva ansluter till VictoriaMetrics och överför data.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

LÄt oss övervÀga hantering av Thanos och VictoriaMetrics.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Thanos mÄste övervaka Sidecar sÄ att de inte slutar överföra data till Object Storage. De kan sluta denna dataöverföring pÄ grund av uppladdningsfel, till exempel om din nÀtverksanslutning till Object Storage tillfÀlligt avbryts, eller om Object Storage tillfÀlligt blir otillgÀngligt. Thanos Sidecar kommer mÀrka detta, rapportera ett fel, kan krascha och dÀrefter sluta fungera. Om du inte övervakar det kommer dataöverföringen till Object Storage att upphöra. Om retention-tiden passerar (6-8 timmar rekommenderas), kommer du att förlora data som inte har nÄtt Object Storage.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Thanos kompaktorer kan sluta fungera pÄ grund av kapplöpningar med Sidecar. Kompaktorer tar data frÄn Object Storage och slÄr ihop dem till större datastycken. Eftersom kompaktorer inte Àr synkroniserade med Sidecar kan följande hÀnda: Sidecar har inte hunnit skriva klart blocket, Kompaktorn beslutar att detta block Àr helt skrivet. Kompaktorn börjar lÀsa det. Den lÀser blocket inte i sin helhet och slutar fungera. Se detaljer. ). Ett typiskt exempel pÄ anvÀndning:.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Store Gateway kan ge inkonsekventa data pÄ grund av kapplöpningar mellan Kompaktorn och Sidecar. Det hÀr Àr en liknande situation, eftersom Store Gateway inte Àr synkroniserad med Kompaktorer och Sidecar. Följaktligen kan det uppstÄ kapplöpningar dÀr Store Gateway inte ser en del av datan, eller ser överskottsdata.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Query-komponenten i Thanos ger som standard ett delresultat om vissa Sidecar eller Store Gateway för nÀrvarande inte Àr tillgÀngliga. Du kommer att fÄ del av datan och du kommer inte ens att veta att du inte fick all data. Det fungerar sÄ hÀr som standard. I en liknande situation returnerar VictoriaMetrics mÀrkta data som partiella.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Till skillnad frĂ„n Thanos förlorar VictoriaMetrics sĂ€llan data. Även om anslutningen frĂ„n Prometheus till VictoriaMetrics bryts Ă€r det inget problem, eftersom Prometheus fortsĂ€tter att skriva inkommande nya data i Write Ahead Log, vars storlek Ă€r 2 timmar. Om du Ă„terstĂ€ller anslutningen till VictoriaMetrics inom tvĂ„ timmar sĂ„ kommer datan inte att gĂ„ förlorad. Prometheus kan skriva till data efter Ă„terstĂ€llande av anslutningen till VictoriaMetrics.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Till skillnad frÄn Thanos, som skriver data till objektlagring först efter tvÄ timmar, replikeras data automatiskt av Prometheus via remote write-protokollet till remote-lagring, som VictoriaMetrics. Du behöver inte oroa dig för att förlora lokal lagring i Prometheus. Om den skulle förlora lokal lagring, förlorar du i vÀrsta fall de senaste sekunderna av data som Ànnu inte har skrivits till remote-lagring.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Kubernetes hanterar automatiskt klustret till skillnad frÄn Thanos. Alla komponenter i Thanos Àr svÄra att fÄ plats i ett enda Kubernetes-kluster, till skillnad frÄn klusterkomponenterna i VictoriaMetrics.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Uppdatering till en ny version i VictoriaMetrics Àr mycket enkel. Du stoppar bara VictoriaMetrics, uppdaterar binÀrerna och startar den igen. NÀr den stoppas med SIGINT-signal utför alla binÀrer av VictoriaMetrics en smidig avstÀngning. De sparar korrekt de nödvÀndiga uppgifterna och stÀnger rÀtt ned inkommande anslutningar för att inte förlora nÄgot. DÀrför förlorar du ingenting vid uppdatering.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Det Àr mycket enkelt att skala klustret med VictoriaMetrics. Du lÀgger bara till de nödvÀndiga komponenterna och fortsÀtter arbeta.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Om komplikationer med Thanos och VictoriaMetrics.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Thanos har följande komplikationer. Prometheus mÄste lagra data frÄn de senaste tvÄ timmarna. Om de förloras, förlorar du dem helt, eftersom de inte har skrivits till objektlagring, som S3.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Store Gateway-komponenten och compactor-komponenten kan krÀva mycket minne för att hantera stora objektlagringar, om det finns mÄnga smÄ filer dÀr. Ju fler filer och ju större filerna Àr, desto mer RAM krÀvs av Store Gateway och compactor för att lagra metadata. Thanos har mÄnga problem nÀr det gÀller att Store Gateway och compactor faller vid medelstora mÀngder av skrivna data..

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Thanos marknadsförs som att den kan skalas oÀndligt med antalet Prometheus. I sjÀlva verket Àr detta inte sant. Eftersom alla förfrÄgningar gÄr genom Query-komponenten, som mÄste samtidigt frÄga alla Store Gateway-komponenter och alla Sidecar-komponenter, hÀmta data dÀrifrÄn och sedan förbearbeta dessa. Det Àr uppenbart att hastigheten pÄ förfrÄgningarna begrÀnsas av den lÄngsammaste svaga lÀnken, den lÄngsammaste Store Gateway eller den lÄngsammaste Sidecar.

Dessa komponenter kan vara ojĂ€mnt belastade. Till exempel, om du har Prometheus som samlar miljontals mĂ€tvĂ€rden per sekund. Och det finns en Prometheus som samlar tusentals mĂ€tvĂ€rden per sekund. Prometheus som samlar miljontals mĂ€tvĂ€rden per sekund belastar servern dĂ€r den körs betydligt mer. Följaktligen kommer Sidecar att arbeta lĂ„ngsammare dĂ€r. Överlag kommer allt att fungera lĂ„ngsammare dĂ€r. Query-komponenten kommer att hĂ€mta data dĂ€rifrĂ„n mycket lĂ„ngsamt. DĂ€rför kommer prestandan för hela din kluster att begrĂ€nsas av den lĂ„ngsamma Sidecar.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Som standard levererar Thanos partiella data om vissa Sidecar:er eller Store Gateway Àr otillgÀngliga. Om du har Sidecar:er utspridda över hela vÀrlden i olika datacenter ökar risken för avbrott i anslutningen och otillgÀnglighet för komponenterna kraftigt. DÀrför kommer du i de flesta fall att fÄ partiella data utan att ens veta om det.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics har ocksÄ sina fallgropar. Den första fallgropen Àr en instÀllning som begrÀnsar mÀngden RAM-minne som anvÀnds för cache i VictoriaMetrics. Som standard gÀller det 60% av RAM-minnet pÄ den maskin dÀr VictoriaMetrics körs, eller 60% av podens RAM-minne för VictoriaMetrics i Kubernetes.

Om detta vÀrde Àndras felaktigt kan det förstöra prestandan för VictoriaMetrics. Till exempel, om du stÀller in ett för lÄgt vÀrde kan data sluta rymmas i cachen för VictoriaMetrics. Det kan leda till att den mÄste göra onödigt arbete och belasta CPU:n och disken. Om du gör denna instÀllning för hög ökar risken för att VictoriaMetrics kraschar med out of memory-fel och det kommer samtidigt att bli kvar mycket lite RAM-minne i operativsystemet för filcachen. VictoriaMetrics Àr beroende av filcachen för prestanda. Om det inte finns tillrÀckligt kan belastningen pÄ disken öka avsevÀrt. DÀrför Àr rÄdet: Àndra inte detta parameter utan yttersta nödvÀndighet.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Den andra instĂ€llningen Ă€r retentionPeriod – en period som som standard Ă€r instĂ€lld pĂ„ 1 mĂ„nad. Detta Ă€r den tid under vilken VictoriaMetrics lagrar data. Efter denna tid raderar VictoriaMetrics data.

MÄnga kör VictoriaMetrics utan denna parameter och samlar data under en mÄnad. Sedan undrar de: varför försvann data för den föregÄende mÄnaden? För att retentionPeriod som standard Àr 1 mÄnad. DÀrför behövs kunskap om och instÀllning av rÀtt retentionPeriod.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

LÄt oss gÄ igenom de unika funktionerna.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Thanos har en funktion som kallas downsampling: 5-minuters och timintervall, som ofta fungerar felaktigt. Om du googlar och tittar pÄ deras Àrenden pÄ GitHub, finns det mÄnga Àrenden kopplade till denna downsampling, dÀr den ibland fungerar felaktigt eller inte som anvÀndarna förvÀntar sig.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Thanos har deduplicering av data för Prometheus HA-par. NÀr tvÄ Prometheus samlar in samma mÀtvÀrden frÄn samma mÄl, och Thanos lÀgger dem i objektlagring. Thanos kan korrekt deduplicera dessa data, till skillnad frÄn VictoriaMetrics.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Thanos har en alert-komponent, som syntes i Thanos-diagrammet. Men den rekommenderas inte för produktion.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Thanos har den fördelen att koden för Thanos och Prometheus Àr gemensam. Thanos och Prometheus har utvecklats av samma utvecklare. Vid förbÀttringar av Thanos eller Prometheus drar den andra sidan nytta.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics huvudfunktion Àr MetricsQL. Detta Àr en utvidgning av VictoriaMetrics för PromQL, som jag berÀttade om pÄ den senaste stora övervakningskonferensen.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics stöder inmatning av data via mÄnga olika protokoll. VictoriaMetrics kan inte bara ta emot data frÄn Prometheus, utan ocksÄ via protokollen Influx, OpenTSDB och Graphite.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Data i VictoriaMetrics tar vanligtvis mycket mindre plats jÀmfört med Thanos och Prometheus.

Om verkliga data skrivs, rapporterar anvÀndarna en minskning av datastorleken pÄ disken med 2-5 gÄnger jÀmfört med Prometheus och Thanos.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Ytterligare en fördel med VictoriaMetrics Àr att den Àr optimerad för hastighet.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

LÄt oss titta pÄ kostnaden för infrastrukturen.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

En av fördelarna med Thanos Àr att den sparar data i objektlagring, vilket Àr relativt billigt.

Vid lagring av data i objektlagring mĂ„ste du betala för skriv- och lĂ€soperationer ($10 per miljon operationer). NĂ€r du skriver data i objektlagring betalar du för dina hostingkostnader för att överföra data till internet, om din kluster inte Ă€r i AWS – dĂ€r Ă€r det gratis. NĂ€r du lĂ€ser data betalar du mellan $10 och $230 per 1 TB. Detta kan bli betydande om du ofta begĂ€r historiska data frĂ„n Thanos-klustret.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

För ett Thanos-kluster behöver servrar för Compact, Store Gateway och Query-komponenter betalas, som krÀver mycket minne och CPU för stora datamÀngder.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

För VictoriaMetrics ser kostnaderna ut sÄ hÀr. Om data lagras pÄ GCE HDD-diskar sÄ blir det $40 per 1TB. För VictoriaMetrics Àr vanliga HDD-diskar tillrÀckliga, inga SSD:er behövs, vilket kostar fem gÄnger sÄ mycket. VictoriaMetrics Àr optimerad för HDD.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

För VictoriaMetrics behövs servrar för komponenterna: antingen Single-node eller för klusterkomponenter, som i motsats till Thanos-komponenter krÀver mycket mindre CPU och RAM, vilket gör det billigare.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Exempel pÄ implementeringar.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Ett exempel pÄ implementering av Thanos Àr GitLab. GitLab fungerar fullt ut med Thanos. Men allt Àr inte sÄ enkelt. Om man tittar pÄ deras issues, kan man se att de stÀndigt har vissa operativa problem med Thanos: det saknas minne för Store Gateway eller Query-komponenter. De tvingas hela tiden öka minneskapaciteten.

DÀrför ökar kostnaderna för att lösa dessa problem.

En andra implementering, som kan vara mer framgÄngsrik, Àr företaget Improbable, som började utvecklingen av Thanos. De publicerade kÀllkoden för Thanos. Improbable Àr ett företag som arbetar med utveckling av spelmotorer.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Publicerade exempel pÄ VictoriaMetrics-implementeringar inkluderar:

  • wix.com webbplatsbyggare
  • Adidas implementerar VictoriaMetrics och presenterade till och med ett föredrag pĂ„ senaste PromCon 2019
  • TrafficStars – annonstjĂ€nst
  • Seznam.cz – en populĂ€r tjeckisk sökmotor.

Och vidare finns det namnlösa företag som jag inte kan nÀmna just nu. De gav ingen tillÄtelse.

  • En stor spelutvecklare. Större Ă€n de inom Improbable.
  • En stor utvecklare av grafikprogramvara.
  • En stor rysk bank.
  • En europeisk tillverkare av vindkraftverk som framgĂ„ngsrikt har testat VictoriaMetrics. Denna tillverkare implementerar VictoriaMetrics för att övervaka data frĂ„n vindkraftverk med en hastighet av 50 samplingar per sekund för varje sensor. I varje vindkraftverk finns det flera hundra sensorer. De har flera hundra vindkraftverk.
  • Ryska flygbolag som vill implementera VictoriaMetrics, men som fortfarande inte kan. Vi Ă€r i avtalsstadiet med dem.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetricsSlutsatser.

VictoriaMetrics och Thanos löser liknande problem, men pÄ olika sÀtt:

  • Global frĂ„ga vy
  • horisontell skalning
  • valfri retention

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Tack.

Vi vÀntar pÄ er pÄ vÄr telegramkanal.

VÀlja datalager för Prometheus: Thanos vs VictoriaMetrics

Endast registrerade anvÀndare kan delta i omröstningen. Logga in, tack.

Vad anvÀnder ni som lÄngsiktig lagring för Prometheus?

  • 35,3%Thanos6

  • 0,0%Cortex0

  • 0,0%M3DB0

  • 41,2%VictoriaMetrics7

  • 23,5%annat4

17 anvÀndare röstade. 16 anvÀndare avstod.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster