Thanos - Skalierbar Prometheus

D'Iwwersetzung vum Artikel gouf speziell fir d'Schüler vum Cours virbereet "DevOps Praktiken an Tools".

Fabian Reinartz ass e Softwareentwéckler, Go Fanatiker, a Problemléiser. Hien ass och e Prometheus Ënnerhalter a Matgrënner vu Kubernetes SIG Instrumentatioun. An der Vergaangenheet war hien e Produktiounsingenieur bei SoundCloud an huet d'Iwwerwaachungsteam bei CoreOS gefouert. De Moment schafft bei Google.

Bartek Plotka - Infrastrukturingenieur bei Improbable. Hien ass interesséiert nei Technologien a Problemer vun verdeelt Systemer. Hien huet niddereg-Niveau Programméierungserfarung bei Intel, Mataarbechtererfahrung bei Mesos, a Weltklass SRE Produktiounserfarung bei Improbable. Engagéiert fir d'Welt vu Mikroservicer ze verbesseren. Seng dräi Léift: Golang, Open Source a Volleyball.

Wann Dir eist Flaggschëff Produkt SpatialOS kuckt, kënnt Dir roden datt Improbable eng héich dynamesch, global Skala Cloud Infrastruktur mat Dosende vu Kubernetes Cluster erfuerdert. Mir waren ee vun deenen éischten, déi en Iwwerwaachungssystem benotzt hunn Prometheus. Prometheus ass fäeg Millioune Metriken an Echtzäit ze verfollegen a kënnt mat enger mächteger Ufrosprooch déi Iech erlaabt d'Informatioun ze extrahieren déi Dir braucht.

D'Einfachheet an Zouverlässegkeet vum Prometheus ass ee vun hiren Haaptvirdeeler. Wéi och ëmmer, wa mir laanscht eng gewësse Skala koumen, hu mir e puer Nodeeler gestouss. Fir dës Problemer ze léisen hu mir entwéckelt Thanos ass en Open Source Projet erstallt vun Improbable fir existent Prometheus Cluster nahtlos an en eenzegen Iwwerwaachungssystem mat onlimitéierter historescher Datelagerung ze transforméieren. Thanos ass verfügbar op Github hei.

Bleift um neiste Stand vun den Neiegkeeten vun Improbable.

Eis Ziler mam Thanos

Op enger gewësser Skala entstinn Probleemer déi iwwer d'Fäegkeete vum Vanille Prometheus sinn. Wéi zouverlässeg a wirtschaftlech Petabytes vun historeschen Donnéeën ze späicheren? Kann dëst gemaach ginn ouni d'Äntwertzäit ze kompromittéieren? Ass et méiglech Zougang zu all Metriken op verschiddene Prometheus Server mat enger eenzeger API Ufro ze kréien? Gëtt et e Wee fir replizéiert Daten ze kombinéieren, gesammelt mat Prometheus HA?

Fir dës Themen unzegoen, hu mir den Thanos erstallt. Déi folgend Sektioune beschreiwen wéi mir dës Themen ukomm sinn an eis Ziler erklären.

Ufroen vun Daten aus multiple Prometheus Instanzen (global Ufro)

Prometheus bitt eng funktionell Approche fir d'Sharding. Och en eenzege Prometheus-Server bitt genuch Skalierbarkeet fir d'Benotzer vun de Komplexitéite vum horizontalen Sharding a bal all Benotzungsfäll ze befreien.

Och wann dëst e super Deploymentmodell ass, ass et dacks noutwendeg Zougang zu Daten op verschiddene Prometheus Serveren duerch eng eenzeg API oder UI ze kréien - eng global Vue. Natierlech ass et méiglech verschidde Ufroen an engem Grafana Panel ze weisen, awer all Ufro kann nëmmen op engem Prometheus Server ausgefouert ginn. Op der anerer Säit, mat Thanos kënnt Dir Daten vu multiple Prometheus Server ufroen an aggregéieren well se all vun engem eenzegen Endpunkt zougänglech sinn.

Virdrun, fir eng global Vue an Improbable ze kréien, hu mir eis Prometheus Instanzen an e Multi-Level organiséiert Hierarchesch Federatioun. Dëst bedeit e Prometheus Meta Server ze kreéieren deen e puer vun de Metriken vun all Blatserver sammelt.

Thanos - Skalierbar Prometheus

Dës Approche huet sech problematesch bewisen. Dëst huet zu méi komplexe Konfiguratiounen gefouert, d'Zousatz vun engem zousätzleche potenziellen Ausfallpunkt an d'Applikatioun vu komplexe Reegele fir sécherzestellen datt de federéierten Endpunkt nëmmen déi Donnéeën kritt déi se brauch. Zousätzlech erlaabt dës Aart vu Federatioun Iech net eng richteg global Vue ze kréien, well net all Daten aus enger eenzeger API Ufro verfügbar sinn.

Eng Zesummenhang mat dësem ass eng vereenegt Vue vun den Daten gesammelt op High-Disponibilitéit (HA) Prometheus Serveren. Prometheus 'HA Modell sammelt onofhängeg Daten zweemol, wat sou einfach ass datt et net méi einfach ka sinn. Wéi och ëmmer, eng kombinéiert an deduplizéiert Vue vu béide Streamen ze benotzen wier vill méi praktesch.

Natierlech gëtt et e Bedierfnes fir héich verfügbare Prometheus Serveren. Bei Improbable huelen mir Minutt-fir-Minutt Dateniwwerwaachung wierklech eescht, awer eng Prometheus Instanz pro Cluster ze hunn ass en eenzege Punkt vum Echec. All Konfiguratiounsfehler oder Hardwarefehler kënnen potenziell zum Verloscht vu wichtegen Donnéeën féieren. Och eng einfach Installatioun kann kleng Stéierungen an der Sammlung vun Metriken verursaachen, well Neistarten däitlech méi laang kënne sinn wéi de Schrauwenintervall.

Zouverlässeg Späichere vun historeschen Donnéeën

Bëlleg, séier, laangfristeg Metriklagerung ass eisen Dram (gedeelt vun de meeschte Prometheus Benotzer). Am Onwahrscheinlech ware mir gezwongen d'Metriken Retentiounsperiod op néng Deeg ze konfiguréieren (fir Prometheus 1.8). Dëst füügt offensichtlech Limite fir wéi wäit zréck mir kënne kucken.

Prometheus 2.0 huet sech an dëser Hisiicht verbessert, well d'Zuel vun Zäitserien net méi d'allgemeng Leeschtung vum Server beaflosst (kuckt. KubeCon Keynote iwwer Prometheus 2). Wéi och ëmmer, Prometheus späichert Daten op lokalen Disk. Och wann héicheffizient Datekompressioun d'lokal SSD Notzung wesentlech reduzéiere kann, ass et schlussendlech nach ëmmer eng Limit fir d'Quantitéit vun historeschen Donnéeën déi gespäichert kënne ginn.

Zousätzlech, bei Improbable këmmere mir eis ëm Zouverlässegkeet, Einfachheet a Käschten. Grouss lokal Disken si méi schwéier ze bedreiwen an ze backen. Si kaschten méi a erfuerderen méi Backup-Tools, wat zu onnéideger Komplexitéit resultéiert.

Downsampling

Eemol hu mir ugefaang mat historeschen Donnéeën ze schaffen, hu mir gemierkt datt et fundamental Schwieregkeete mat Big-O gëtt, déi Ufroe méi lues a méi lues maachen wéi mir mat Wochen, Méint a Jore vun Daten schaffen.

D'Standardléisung fir dëse Problem wier downsampling (downsampling) - reduzéieren d'Signal Sampling Frequenz. Mat Downsampling kënne mir op e gréisseren Zäitraum "ofskaléieren" an déi selwecht Unzuel u Proben behalen, d'Ufroen reaktiounsfäeger halen.

Downsampling al Donnéeën ass eng inévitabel Fuerderung vun all laangfristeg Stockage Léisung an ass iwwer den Ëmfang vun Vanille Prometheus.

Zousätzlech Ziler

Ee vun den ursprénglechen Ziler vum Thanos-Projet war nahtlos mat all existente Prometheus-Installatiounen z'integréieren. Dat zweet Zil war einfach Operatioun mat minimale Barrièren fir d'Entrée. All Ofhängegkeete solle liicht zefridden sinn fir béid kleng a grouss Benotzer, wat och eng niddreg Basiskäschte bedeit.

Thanos Architektur

Nodeems mir eis Ziler an der viregter Sektioun opgelëscht hunn, loosst eis duerch se schaffen a kucken wéi den Thanos dës Probleemer léist.

Global Vue

Fir eng global Vue uewen op existéierend Prometheus Instanzen ze kréien, musse mir en eenzegen Ufro-Entréepunkt un all Server verbannen. Dëst ass genau wat den Thanos Komponent mécht. Sidecar. Et gëtt nieft all Prometheus Server ofgesat an handelt als Prometheus, servéiert lokal Prometheus Daten duerch d'gRPC Store API, wat et erlaabt Zäitseriedaten duerch Tag an Zäitbereich zréckzekommen.

Op der anerer Säit ass de scale-out, stateless Querier Komponent, dee wéineg méi mécht wéi just PromQL Ufroen iwwer de Standard Prometheus HTTP API beäntweren. Querier, Sidecar an aner Thanos Komponenten kommunizéieren iwwer Klatsch Protokoll.

Thanos - Skalierbar Prometheus

  1. De Querier, wann hien eng Ufro kritt, verbënnt mat dem entspriechende Store API Server, dat ass, op eis Sidecars a kritt Zäitreihendaten vun den entspriechende Prometheus Serveren.
  2. Duerno kombinéiert et d'Äntwerten an fiert eng PromQL Ufro op hinnen aus. Querier ka souwuel disjoint Donnéeën an duplizéiert Daten vu Prometheus HA Server fusionéieren.

Dëst léist e grousst Stéck vun eisem Puzzel - d'Kombinatioun vun Daten vun isoléierte Prometheus Serveren an eng eenzeg Vue. Tatsächlech kann Thanos nëmme fir dës Feature benotzt ginn. Keng Ännerunge mussen op existéierend Prometheus Server gemaach ginn!

Onlimitéiert Regal Liewen!

Wéi och ëmmer, fréier oder spéider wëlle mir Daten iwwer déi normal Prometheus Retentiounszäit späicheren. Mir hunn Objektlagerung gewielt fir historesch Daten ze späicheren. Et ass wäit verfügbar an all Wollek wéi och on-premises Datenzenteren an ass ganz kosteneffektiv. Zousätzlech ass bal all Objektlagerung iwwer de bekannte S3 API verfügbar.

Prometheus schreift Daten vum RAM op Disk ongeféier all zwou Stonnen. De gespäichert Dateblock enthält all Daten fir eng fix Zäit an ass onverännerbar. Dëst ass ganz praktesch well den Thanos Sidecar kann einfach de Prometheus Dateverzeichnis kucken a wéi nei Blocks verfügbar sinn, lued se an Objektspeicher Eemer.

Thanos - Skalierbar Prometheus

Lueden an Objektlagerung direkt nom Schreiwen op Disk erlaabt Iech och d'Einfachheet vum Scraper (Prometheus an Thanos Sidecar) z'erhalen. Wat vereinfacht Ënnerstëtzung, Käschten a Systemdesign.

Wéi Dir gesitt kann, Backupsatellit Daten ass ganz einfach. Awer wat iwwer d'Ufro vun Daten an der Objektlagerung?

Den Thanos Store Komponent handelt als Proxy fir Daten aus Objektlagerung ze recuperéieren. Wéi Thanos Sidecar, bedeelegt se un de Klatschcluster an implementéiert de Store API. Op dës Manéier kann existent Querier et wéi e Sidecar behandelen, als eng aner Quell vun Zäitseriedaten - keng speziell Konfiguratioun erfuerderlech.

Thanos - Skalierbar Prometheus

Zäitserie Dateblock besteet aus e puer grouss Dateien. Luede se op Ufro wier zimmlech ineffizient, a se lokal ze cachen géif eng enorm Quantitéit un Erënnerung an Disk Space erfuerderen.

Amplaz, Store Gateway weess wéi de Prometheus Stockage Format ze verschaffen. Dank engem Smart Ufro Scheduler an Caching nëmmen déi néideg Index Deeler vun Blocks, ass et méiglech komplex Ufroen ze reduzéieren op eng Minimum Unzuel vun HTTP-Ufroen ze Objet Stockage Fichieren. Op dës Manéier kënnt Dir d'Zuel vun den Ufroe vu véier bis sechs Uerderen reduzéieren an Äntwertzäiten erreechen, déi allgemeng schwéier z'ënnerscheeden vun Ufroen op Daten op enger lokaler SSD.

Thanos - Skalierbar Prometheus

Wéi am Diagramm uewe gewisen, reduzéiert den Thanos Querier d'Käschte pro Ufro vun Objektspeicherdaten wesentlech andeems de Prometheus-Späicherformat benotzt a verbonne Daten niewentenee plazéiert. Mat dëser Approche kënne mir vill eenzel Ufroen an eng minimal Unzuel u Bulk Operatiounen kombinéieren.

Verdichtung an Downsampling

Wann en neie Block vun Zäitseriedaten erfollegräich an d'Objetlagerung gelueden ass, behandele mir et als "historesch" Donnéeën, déi direkt iwwer de Store Gateway verfügbar sinn.

Wéi och ëmmer, no enger Zäit accumuléieren d'Blocker vun enger Quell (Prometheus mat Sidecar) a benotzen net méi de vollen Indexpotenzial. Fir dëse Problem ze léisen, hu mir eng aner Komponent genannt Compactor agefouert. Et applizéiert einfach Prometheus 'lokal Verdichtungsmotor op historesch Daten an der Objektlagerung a kann als einfache periodesch Batchjob lafen.

Thanos - Skalierbar Prometheus

Dank effizienter Kompressioun, d'Ufro vun der Späichere iwwer eng laang Zäit stellt kee Problem wat d'Dategréisst ugeet. Wéi och ëmmer, déi potenziell Käschte fir eng Milliard Wäerter auszepaken an se duerch e Queryprozessor ze lafen wäert zwangsleefeg zu enger dramatescher Erhéijung vun der Ufro Ausféierungszäit féieren. Op der anerer Säit, well et Honnerte vun Datepunkte pro Pixel um Bildschierm sinn, gëtt et onméiglech d'Daten souguer mat voller Opléisung ze visualiséieren. Also ass Downsampling net nëmme méiglech, awer wäert och net zu engem merkbare Verloscht vun der Genauegkeet féieren.

Thanos - Skalierbar Prometheus

Fir Daten erofzesetzen, aggregéiert Compactor kontinuéierlech Daten mat enger Resolutioun vu fënnef Minutten an enger Stonn. Fir all raw Stéck kodéiert mat TSDB XOR Kompressioun, ginn verschidden Aarte vun aggregéierten Donnéeën gespäichert, sou wéi min, Max oder Zomm fir ee Block. Dëst erlaabt de Querier automatesch en Aggregat ze wielen dee passend ass fir eng bestëmmte PromQL Ufro.

Keng speziell Konfiguratioun ass erfuerderlech fir de Benotzer reduzéiert Präzisiounsdaten ze benotzen. Querier wiesselt automatesch tëscht verschiddene Resolutiounen a Matière Daten wéi de Benotzer an an aus zoomt. Wann Dir wëllt, kann de Benotzer dëst direkt duerch de "Schrëtt" Parameter an der Ufro kontrolléieren.

Zënter datt d'Käschte fir ee GB ze späicheren niddereg sinn, späichert den Thanos als Standard réi Daten, fënnef Minutten an eng Stonn Opléisungsdaten. Et ass net néideg d'Original Donnéeën ze läschen.

Recording Regelen

Och mam Thanos sinn Opnamregelen e wesentleche Bestanddeel vum Iwwerwaachungsstack. Si reduzéieren Komplexitéit, Latenz, a Käschte vun Ufroen. Si sinn och bequem fir d'Benotzer aggregéiert Daten duerch Metriken ze kréien. Thanos baséiert op Vanille Prometheus Instanzen, sou datt et perfekt akzeptabel ass Opnamregelen an Alarmregelen op engem existente Prometheus Server ze späicheren. Wéi och ëmmer, an e puer Fäll kann dëst net genuch sinn:

  • Global Alarm a Regel (zum Beispill eng Alarm wann e Service net op méi wéi zwee vun dräi Cluster funktionnéiert).
  • Regel fir Daten ausserhalb vun der lokaler Späichere.
  • De Wonsch all Regelen an Alarmer op enger Plaz ze späicheren.

Thanos - Skalierbar Prometheus

Fir all dës Fäll enthält Thanos eng separat Komponent genannt Ruler, déi d'Regel an d'Alarm iwwer Thanos Queries berechent. Andeems Dir e bekannte StoreAPI liwwert, kann de Query Node Zougang zu frësch berechnen Metriken kréien. Spéider ginn se och an Objektlagerung gelagert an iwwer de Store Gateway zur Verfügung gestallt.

D'Kraaft vum Thanos

Thanos ass flexibel genuch fir personaliséiert ze ginn fir Äre Besoinen ze passen. Dëst ass besonnesch nëtzlech wann Dir vum Einfache Prometheus migréiert. Loosst eis séier recapéieren wat mir iwwer Thanos Komponenten geléiert hunn mat engem schnelle Beispill. Hei ass wéi Dir Äre Vanille Prometheus an d'Welt vun der "onlimitéierter Metriklagerung" bréngt:

Thanos - Skalierbar Prometheus

  1. Füügt Thanos Sidecar op Är Prometheus Serveren - zum Beispill e Sidecar Container an engem Kubernetes Pod.
  2. Deploy Multiple Thanos Querier Repliken fir Daten ze gesinn. Op dëser Etapp ass et einfach Klatsch tëscht Scraper a Querier opzestellen. Fir d'Interaktioun vu Komponenten z'iwwerpréiwen, benotzt d'Thanos_cluster_members Metrik.

Just dës zwee Schrëtt si genuch fir eng global Vue an eng nahtlos Dateduplikatioun vu potenziellen Prometheus HA Repliken ze bidden! Connectéiert Är Dashboards einfach mam Querier HTTP Endpunkt oder benotzt den Thanos UI direkt.

Wéi och ëmmer, wann Dir Metriken-Backup a laangfristeg Späichere brauch, musst Dir dräi méi Schrëtt ausfëllen:

  1. Erstellt en AWS S3 oder GCS Eemer. Sidecar konfiguréieren fir Daten op dës Eemer ze kopéieren. Lokal Datelagerung kann elo miniméiert ginn.
  2. Deploy Store Gateway a verbënnt et mat Ärem existente Klatschcluster. Elo kënnt Dir déi geséchert Daten ufroen!
  3. Deploy Compactor fir d'Ufroeffizienz iwwer laang Zäit ze verbesseren mat Verdichtung an Downsampling.

Wann Dir méi wësse wëllt, zéckt net eis ze kucken kubernetes manifest Beispiller и ufänken!

A just fënnef Schrëtt hu mir Prometheus zu engem zouverléissege Iwwerwaachungssystem mat globaler Vue, onlimitéierter Späicherzäit a potenziell héijer Disponibilitéit vu Metriken ëmgewandelt.

Pull Ufro: mir brauchen Iech!

Thanos war vun Ufank un en Open Source Projet. Nahtlos Integratioun mam Prometheus an d'Fäegkeet just en Deel vum Thanos ze benotzen mécht et eng exzellent Wiel fir Äert Iwwerwaachungssystem ouni Ustrengung ze skaléieren.

Mir begréissen ëmmer GitHub Pull Ufroen an Themen. An der Tëschenzäit, fillt Iech gratis eis iwwer Github Themen oder Slack ze kontaktéieren Improbable-eng #thanoswann Dir Froen oder Feedback hutt, oder wëllt Är Erfahrung matdeelen! Wann Dir gär hutt wat mir bei Improbable maachen, zéckt net eis ze kontaktéieren - mir hunn ëmmer fräi Plazen!

Léiert méi iwwer de Cours.

Source: will.com

Setzt e Commentaire