{"id":81888,"date":"2020-05-17T13:42:23","date_gmt":"2020-05-17T11:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus"},"modified":"2020-05-17T13:42:23","modified_gmt":"2020-05-17T11:42:23","slug":"thanos-masshtabiruemyj-prometheus","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","title":{"rendered":"Thanos \u2014 Prometheus scalabil","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Traducerea articolului a fost preg\u0103tit\u0103 special pentru studen\u021bii cursului <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">\u201ePracticile \u0219i instrumentele DevOps\u201d<\/a><\/noindex>.<\/i><\/b><\/p>\n<p>\n<i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/fabxc\">Fabian Reinartz<\/a><\/noindex> \u2014 dezvoltator de software, pasionat de Go \u0219i iubitor de provoc\u0103ri complexe. De asemenea, este mentinator pentru Prometheus \u0219i cofondator al Kubernetes SIG instrumentation. \u00cen trecut, a fost inginer de produc\u021bie la SoundCloud \u0219i a condus echipa de monitorizare la CoreOS. \u00cen prezent, lucreaz\u0103 la Google.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Bplotka\">Bartek Plotka<\/a><\/noindex> \u2014 inginer de infrastructur\u0103 la Improbable. Este interesat de tehnologiile noi \u0219i de problemele sistemelor distribuite. Are experien\u021b\u0103 \u00een programarea la nivel de baz\u0103 la Intel, experien\u021b\u0103 ca contributor \u00een Mesos \u0219i experien\u021b\u0103 de produc\u021bie SRE la nivel global la Improbable. Lucreaz\u0103 la \u00eembun\u0103t\u0103\u021birea lumii microserviciilor. Cele trei iubiri ale sale sunt: Golang, codul surs\u0103 deschis \u0219i voleiul.<\/i><\/p>\n<p>Privind produsul nostru de v\u00e2rf, SpatialOS, po\u021bi intui c\u0103 Improbable necesit\u0103 o infrastructur\u0103 cloud dinamic\u0103, la scar\u0103 global\u0103, cu zeci de clustere Kubernetes. Am fost printre primii care au \u00eenceput s\u0103 utilizeze sistemul de monitorizare <noindex><a rel=\"nofollow\" href=\"https:\/\/prometheus.io\/\">Prometheus<\/a><\/noindex>. Prometheus poate urm\u0103ri milioane de metrici \u00een timp real \u0219i vine cu un limbaj de interogare puternic, care permite extragerea informa\u021biilor necesare.<\/p>\n<p>Simplicity and reliability of Prometheus is one of its main advantages. However, after reaching a certain scale, we encountered several shortcomings. To address these issues, we developed <noindex><a rel=\"nofollow\" href=\"https:\/\/thanos.io\/\">Thanos<\/a><\/noindex> \u2014 un proiect open-source, creat de Improbable, pentru transformarea seamless a clusterelor existente Prometheus \u00eentr-un sistem de monitorizare unificat cu stocare nelimitat\u0103 a datelor istorice. Thanos este disponibil pe Github <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\">aici<\/a><\/noindex>.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/gdk.improbable.io\/l\/169082\/2020-01-10\/2j9yxq\">R\u0103m\u00e2i la curent cu ultimele nout\u0103\u021bi de la Improbable.<\/a><\/noindex><\/p>\n<h2>Obiectivele noastre cu Thanos<\/h2>\n<p>\nLa o anumit\u0103 scar\u0103, apar probleme care dep\u0103\u0219esc capacit\u0103\u021bile vaniliei Prometheus. Cum putem stoca \u00een mod fiabil \u0219i economic petabytes de date istorice? Se poate face acest lucru f\u0103r\u0103 a afecta timpii de r\u0103spuns la interog\u0103ri? Putem accesa toate metricile afl\u00e2ndu-se pe servere Prometheus diferite printr-o singur\u0103 interogare API? Putem cumva s\u0103 unim datele replicate, adunate folosind Prometheus HA?<\/p>\n<p>Pentru a r\u0103spunde acestor \u00eentreb\u0103ri, am creat Thanos. \u00cen sec\u021biunile urm\u0103toare, v\u0103 vom descrie cum am abordat aceste \u00eentreb\u0103ri \u0219i vom explica obiectivele pe care le-am urm\u0103rit.<\/p>\n<h4>Interogarea datelor din mai multe instan\u021be Prometheus (interogare global\u0103)<\/h4>\n<p>\nPrometheus ofer\u0103 o abordare func\u021bional\u0103 pentru shard-ing. Chiar \u0219i un singur server Prometheus asigur\u0103 o scalabilitate adecvat\u0103 pentru a elibera utilizatorii de complexit\u0103\u021bile shard-ului orizontal, practic \u00een toate cazurile de utilizare.<\/p>\n<p>De\u0219i este un model excelent de desf\u0103\u0219urare, adesea este necesar s\u0103 accesa\u021bi datele de pe diferite servere Prometheus printr-un API sau UI unic \u2014 global view. Desigur, exist\u0103 posibilitatea de a afi\u0219a mai multe cereri \u00eentr-un singur panou Grafana, dar fiecare cerere poate fi efectuat\u0103 doar pe un singur server Prometheus. Pe de alt\u0103 parte, cu ajutorul Thanos, pute\u021bi solicita \u0219i agrega date de la mai multe servere Prometheus, deoarece toate sunt disponibile de la un singur punct final.<\/p>\n<p>Anterior, pentru a ob\u021bine global view \u00een Improbable, ne-am organizat instan\u021bele Prometheus \u00eentr-o structur\u0103 ierarhic\u0103. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/prometheus\/blob\/master\/docs\/federation.md#hierarchical-federation\">Federarea Ierarhic\u0103<\/a><\/noindex>. Aceasta a \u00eensemnat crearea unui meta-server Prometheus, care colecteaz\u0103 o parte din metricile fiec\u0103rui server \u201eleaf\u201d.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabil\" src=\"\/wp-content\/uploads\/2020\/05\/82590f017734f5dc1038a0e13f772d2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAceast\u0103 abordare s-a dovedit a fi problematic\u0103. A dus la complicarea configura\u021biei, ad\u0103ugarea unui poten\u021bial punct de e\u0219ec suplimentar \u0219i aplicarea unor reguli complexe pentru a oferi punctului final federat doar datele necesare. \u00cen plus, o astfel de federare nu permite ob\u021binerea unui adev\u0103rat global view, deoarece nu toate datele sunt disponibile dintr-o singur\u0103 cerere API.<\/p>\n<p>Acest lucru este str\u00e2ns legat de viziunea unitar\u0103 a datelor colectate pe servere Prometheus cu \u00eenalt\u0103 disponibilitate (high-availability, HA). Modelul HA Prometheus colecteaz\u0103 datele independent de dou\u0103 ori, ceea ce este at\u00e2t de simplu \u00eenc\u00e2t nu poate fi mai simplu. Cu toate acestea, utilizarea unei viziuni combinate \u0219i deduplicat\u0103 a ambelor fluxuri ar fi mult mai convenabil\u0103.<\/p>\n<p>Desigur, exist\u0103 o nevoie de servere Prometheus cu \u00eenalt\u0103 disponibilitate. La Improbable, trat\u0103m foarte serios monitorizarea datelor la fiecare minut, dar a avea o singur\u0103 instan\u021b\u0103 Prometheus pe cluster este un punct unic de e\u0219ec. Orice eroare de configurare sau defec\u021biune hardware poate duce poten\u021bial la pierderea unor date importante. Chiar \u0219i o desf\u0103\u0219urare simpl\u0103 poate duce la mici \u00eentreruperi \u00een colectarea metricilor, deoarece repornirea poate dura semnificativ mai mult dec\u00e2t intervalul de scraping.<\/p>\n<h4>Stocare fiabil\u0103 a datelor istorice<\/h4>\n<p>\nStocarea metricelor ieftin\u0103, rapid\u0103 \u0219i de lung\u0103 durat\u0103 este visul nostru (\u00eemp\u0103rt\u0103\u0219it de majoritatea utilizatorilor Prometheus). La Improbable, a trebuit s\u0103 set\u0103m perioada de stocare a metricelor pe nou\u0103 zile (pentru Prometheus 1.8). Aceasta aduce limit\u0103ri evidente asupra c\u00e2t de departe putem privi \u00eenapoi.<\/p>\n<p>Prometheus 2.0 a devenit mai bun \u00een aceast\u0103 privin\u021b\u0103, deoarece num\u0103rul de serii temporale nu mai influen\u021beaz\u0103 performan\u021ba general\u0103 a serverului (vezi. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=nDalewt4BOw\">prezentarea de la KubeCon despre Prometheus 2<\/a><\/noindex>). Cu toate acestea, Prometheus stocheaz\u0103 datele pe discul local. De\u0219i compresia de date de \u00eenalt\u0103 performan\u021b\u0103 poate reduce semnificativ utilizarea SSD-ului local, totu\u0219i exist\u0103 o limitare asupra volumului de date istorice stocate.<\/p>\n<p>\u00cen plus, la Improbable, ne pas\u0103 de fiabilitate, simplitate \u0219i costuri. Discurile locale mari sunt mai greu de operat \u0219i de realizat backup. Acestea sunt mai scumpe \u0219i necesit\u0103 mai multe instrumente pentru backup, ceea ce duce la o complexitate excesiv\u0103.<\/p>\n<h4>Reducerea<\/h4>\n<p>\nOdat\u0103 ce am \u00eenceput s\u0103 lucr\u0103m cu datele istorice, am realizat c\u0103 exist\u0103 dificult\u0103\u021bi fundamentale cu O-mare, care fac ca interog\u0103rile s\u0103 devin\u0103 din ce \u00een ce mai lente atunci c\u00e2nd lucr\u0103m cu date pe s\u0103pt\u0103m\u00e2ni, luni \u0219i ani.<\/p>\n<p>Solu\u021bia standard pentru aceast\u0103 problem\u0103 este <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Decimation_(signal_processing)\">reducing<\/a><\/noindex> (downsampling) \u2013 reducerea frecven\u021bei de e\u0219antionare a semnalului. Prin sc\u0103derea e\u0219antion\u0103rii, putem \u201ereduce scala\u201d la un interval de timp mai mare \u0219i p\u0103stra acela\u0219i num\u0103r de e\u0219antioane, ceea ce va permite men\u021binerea rapidit\u0103\u021bii interog\u0103rilor.<\/p>\n<p>Reducerea datelor vechi este o cerin\u021b\u0103 inevitabil\u0103 a oric\u0103rei solu\u021bii pentru stocarea pe termen lung \u0219i dep\u0103\u0219e\u0219te Prometheus-ul vanilat.<\/p>\n<h4>Obiective suplimentare<\/h4>\n<p>\nUnul dintre obiectivele ini\u021biale ale proiectului Thanos a fost integrarea f\u0103r\u0103 cusur cu orice instalare existent\u0103 a Prometheus. Al doilea obiectiv a fost u\u0219urin\u021ba \u00een utilizare cu o barier\u0103 de intrare minim\u0103. Orice dependen\u021be trebuie s\u0103 fie u\u0219or satisf\u0103cute at\u00e2t pentru utilizatori mici, c\u00e2t \u0219i pentru cei mari, ceea ce implic\u0103, de asemenea, costuri de baz\u0103 reduse.<\/p>\n<h2>Arhitectura Thanos<\/h2>\n<p>\nDup\u0103 ce am enumerat obiectivele noastre \u00een sec\u021biunea anterioar\u0103, haide\u021bi s\u0103 lucr\u0103m la ele \u0219i s\u0103 vedem cum Thanos abordeaz\u0103 aceste probleme.<\/p>\n<h4>Vizuinea global\u0103<\/h4>\n<p>\nPentru a ob\u021bine o vedere global\u0103 asupra instan\u021belor existente Prometheus, trebuie s\u0103 conect\u0103m un punct unic de intrare al cererilor cu toate serverele. Acesta este rolul componentului Thanos. <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2015\/06\/the-distributed-system-toolkit-patterns#example-1-sidecar-containers\">Sidecar<\/a><\/noindex>. Acesta este desf\u0103\u0219urat l\u00e2ng\u0103 fiecare server Prometheus \u0219i func\u021bioneaz\u0103 ca un proxy, servind datele locale Prometheus prin intermediul interfe\u021bei gRPC Store API, permi\u021b\u00e2nd selectarea datelor time series pe baza etichetelor \u0219i intervalului de timp.<\/p>\n<p>Pe de alt\u0103 parte, se afl\u0103 componenta Querier, care este scalabil\u0103 orizontal \u0219i f\u0103r\u0103 stocare de stare, care face mai mult dec\u00e2t s\u0103 r\u0103spund\u0103 la cererile PromQL prin intermediul standard HTTP API al Prometheus. Componentele Querier, Sidecar \u0219i alte module Thanos interac\u021bioneaz\u0103 prin <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Gossip_protocol\">protocul gossip.<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabil\" src=\"\/wp-content\/uploads\/2020\/05\/fbcf1e756f5da4e8529f17abd4cedd00.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>Querier, la primirea unei cereri, se conecteaz\u0103 la serverul corespunz\u0103tor Store API, adic\u0103 la Sidecar-urile noastre, \u0219i ob\u021bine datele time series de la serverele Prometheus corespunz\u0103toare.<\/li>\n<li>Apoi, acesta combin\u0103 r\u0103spunsurile \u0219i execut\u0103 cererea PromQL. Querier poate combina date at\u00e2t din surse necorelate, c\u00e2t \u0219i date duplicate de la serverele HA Prometheus.<\/li>\n<\/ol>\n<p>\nAceasta rezolv\u0103 cea mai mare parte a problemei noastre \u2014 combinarea datelor de pe serverele izolate Prometheus \u00eentr-o singur\u0103 imagine. Practic, Thanos poate fi utilizat doar pentru aceast\u0103 func\u021bionalitate. Nu sunt necesare modific\u0103ri \u00een serverele Prometheus existente!<\/p>\n<h4>Stocare nelimitat\u0103!<\/h4>\n<p>\nCu toate acestea, mai devreme sau mai t\u00e2rziu, vom dori s\u0103 p\u0103str\u0103m datele care dep\u0103\u0219esc perioada obi\u0219nuit\u0103 de stocare Prometheus. Pentru stocarea datelor istorice, am ales un serviciu de stocare de obiecte. Acesta este disponibil pe scar\u0103 larg\u0103 \u00een orice cloud, precum \u0219i \u00een centre de date locale, \u0219i este foarte economic. \u00cen plus, aproape orice serviciu de stocare de obiecte este accesibil prin binecunoscutul S3 API.<\/p>\n<p>Prometheus scrie datele din memoria opera\u021bional\u0103 pe disc la aproximativ fiecare dou\u0103 ore. Modul \u00een care datele sunt salvate con\u021bine toate datele pentru o perioad\u0103 fix\u0103 de timp \u0219i este imuabil. Acest lucru este foarte convenabil, deoarece Thanos Sidecar poate doar s\u0103 verifice catalogul de date Prometheus \u0219i, pe m\u0103sur\u0103 ce apar noi module, s\u0103 le \u00eencarce \u00een bucketurile serviciului de stocare de obiecte.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabil\" src=\"\/wp-content\/uploads\/2020\/05\/2be803d8d7e0ce9a5ffa441b7778a40b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cenc\u0103rcarea \u00een serviciul de stocare de obiecte imediat dup\u0103 scrierea pe disc permite de asemenea men\u021binerea simplit\u0103\u021bii \u201escraper-ului\u201d (Prometheus \u0219i Thanos Sidecar). Acest lucru simplific\u0103 \u00eentre\u021binerea, costurile \u0219i designul sistemului.<\/p>\n<p>Dup\u0103 cum pute\u021bi vedea, backup-ul datelor se realizeaz\u0103 foarte simplu. Dar ce zicem despre cererea de date din stocarea obiectelor?<\/p>\n<p>Componenta Thanos Store ac\u021bioneaz\u0103 ca un proxy pentru ob\u021binerea datelor din stocarea obiectelor. La fel ca Thanos Sidecar, acesta particip\u0103 la clusterul gossip \u0219i implementeaz\u0103 API-ul Store. Astfel, Querier-urile existente \u00eel pot considera ca pe un Sidecar, ca o alt\u0103 surs\u0103 de date time series \u2014 nicio configurare special\u0103 nu este necesar\u0103.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabil\" src=\"\/wp-content\/uploads\/2020\/05\/5a437ae1bf8a6f79b8d24aeb9dde2d17.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBlocurile de date time series sunt formate din mai multe fi\u0219iere mari. Desc\u0103rcarea lor la cerere ar fi destul de ineficient\u0103, iar stocarea local\u0103 \u00een cache ar necesita o cantitate uria\u0219\u0103 de memorie \u0219i spa\u021biu pe disc.<\/p>\n<p>\u00cen schimb, Store Gateway \u0219tie cum s\u0103 gestioneze formatul de stocare Prometheus. Datorit\u0103 unui planificator de cereri inteligent \u0219i a stoc\u0103rii \u00een cache doar a p\u0103r\u021bilor index necesare ale blocurilor, a devenit posibil s\u0103 reducem cererile complexe la un num\u0103r minim de cereri HTTP c\u0103tre fi\u0219ierele din stocarea obiectelor. Astfel, se poate reduce num\u0103rul de cereri cu patru p\u00e2n\u0103 la \u0219ase ordine de m\u0103rime \u0219i se poate ob\u021bine un timp de r\u0103spuns care este, \u00een general, greu de deosebit de cererile de date pe un SSD local.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabil\" src=\"\/wp-content\/uploads\/2020\/05\/ebcbe1ee16dbac18daa474e7cb4b12b2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDup\u0103 cum este ar\u0103tat \u00een diagrama de mai sus, Thanos Querier reduce semnificativ costurile pentru o cerere de date din stocarea obiectelor, folosind formatul de stocare Prometheus \u0219i plas\u00e2nd datele conexe aproape. Folosind aceast\u0103 abordare, putem combina numeroase cereri individuale \u00eentr-un num\u0103r minim de opera\u021bii bulk.<\/p>\n<h4>Compresia \u0219i downsampling-ul<\/h4>\n<p>\nDup\u0103 ce un nou bloc de date time series a fost \u00eenc\u0103rcat cu succes \u00een stocarea obiectelor, \u00eel consider\u0103m date \u201eistorice\u201d, care devin imediat disponibile prin Store Gateway.<\/p>\n<p>Cu toate acestea, dup\u0103 un timp, blocurile dintr-o singur\u0103 surs\u0103 (Prometheus cu Sidecar) se acumuleaz\u0103 \u0219i nu mai profit\u0103 din plin de poten\u021bialul de indexare. Pentru a rezolva aceast\u0103 problem\u0103, am introdus un alt component numit Compactor. Acesta aplic\u0103 pur \u0219i simplu mecanismul local de compresie Prometheus datelor istorice din stocarea obiectelor \u0219i poate fi rulat ca o simpl\u0103 sarcin\u0103 programat\u0103 periodic.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabil\" src=\"\/wp-content\/uploads\/2020\/05\/c7dd83dab074a4c5f93069a4bc152342.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDatorit\u0103 comprim\u0103rii eficiente, solicit\u0103rile de stocare pe o perioad\u0103 lung\u0103 de timp nu reprezint\u0103 o problem\u0103 din punct de vedere al dimensiunii datelor. Totu\u0219i, costul poten\u021bial de descompresie a unui miliard de valori \u0219i de procesare a acestora va duce inevitabil la o cre\u0219tere semnificativ\u0103 a timpului de execu\u021bie al cererii. Pe de alt\u0103 parte, deoarece pentru fiecare pixel de pe ecran exist\u0103 sute de puncte de date, devine imposibil s\u0103 se vizualizeze chiar \u0219i datele \u00een rezolu\u021bie maxim\u0103. Astfel, downsampling-ul nu este doar posibil, ci nu va duce la o pierdere semnificativ\u0103 a preciziei. <\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabil\" src=\"\/wp-content\/uploads\/2020\/05\/5f36a05aba3fbffa905b6a8da482ab3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPentru downsampling-ul datelor, Compactor agreg\u0103 continuu datele cu o rezolu\u021bie de cinci minute \u0219i o or\u0103. Pentru fiecare fragment nestructurat, codificat cu compresia TSDB XOR, sunt stocate diferite tipuri de date agregate, cum ar fi min, max sau sum pentru un singur bloc. Aceasta permite Querier-ului s\u0103 selecteze automat agregatul care se potrive\u0219te pentru solicitarea PromQL dat\u0103. <\/p>\n<p>Pentru utilizarea datelor cu precizie redus\u0103, utilizatorul nu necesit\u0103 nicio configurare special\u0103. Querier-ul trece automat \u00eentre diferite rezolu\u021bii \u0219i date nestructurate pe m\u0103sur\u0103 ce utilizatorul m\u0103re\u0219te sau mic\u0219oreaz\u0103 scala. Dac\u0103 dore\u0219te, utilizatorul poate gestiona acest lucru direct prin parametrul 'step' din solicitare. <\/p>\n<p>Av\u00e2nd \u00een vedere c\u0103 costul stoc\u0103rii unui GB este redus, Thanos p\u0103streaz\u0103 implicit datele originale, datele cu rezolu\u021bie de cinci minute \u0219i de o or\u0103. Nu este necesar s\u0103 se elimine datele originale.<\/p>\n<h2>Reguli de \u00eenregistrare<\/h2>\n<p>\nChiar \u0219i cu Thanos, regulile de \u00eenregistrare sunt o parte esen\u021bial\u0103 a stivei de monitorizare. Acestea reduc complexitatea, laten\u021ba \u0219i costul solicit\u0103rilor. De asemenea, sunt utile utilizatorilor pentru a ob\u021bine date agregate pe metrici. Thanos se bazeaz\u0103 pe instan\u021bele vanille ale Prometheus, a\u0219a c\u0103 este absolut acceptabil s\u0103 se p\u0103streze regulile de \u00eenregistrare \u0219i regulile de alert\u0103 pe serverul Prometheus existent. Totu\u0219i, \u00een unele cazuri, acest lucru poate s\u0103 nu fie suficient:<\/p>\n<ul>\n<li>Alert\u0103 \u0219i regul\u0103 globale (de exemplu, alert\u0103 atunci c\u00e2nd un serviciu nu func\u021bioneaz\u0103 \u00een mai mult de dou\u0103 dintre cele trei clustere).<\/li>\n<li>Regul\u0103 pentru datele din afara stoc\u0103rii locale.<\/li>\n<li>Tendin\u021ba de a p\u0103stra toate regulile \u0219i alertele \u00eentr-un singur loc.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabil\" src=\"\/wp-content\/uploads\/2020\/05\/ab48e044b952bd891932b99e248120fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPentru toate aceste cazuri, Thanos include un component separat numit Ruler, care calculeaz\u0103 reguli \u0219i alerte prin Thanos Queries. Oferind un well-known StoreAPI, nodul Query poate accesa metrici recent calculate. Ulterior, acestea sunt de asemenea salvate \u00een stocarea de obiecte \u0219i devin disponibile prin Store Gateway.<\/p>\n<h2>Puterea Thanos<\/h2>\n<p>\nThanos este suficient de flexibil pentru a fi configurat conform cerin\u021belor dumneavoastr\u0103. Acest lucru este deosebit de util la migrarea de la un Prometheus simplu. Hai s\u0103 ne amintim rapid, cu un exemplu mic, ce am \u00eenv\u0103\u021bat despre componentele Thanos. Iat\u0103 cum s\u0103 transfera\u021bi Prometheus-ul dvs. vanilla \u00een lumea \u201estoc\u0103rii nelimitate a metricilor\u201d:<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 Prometheus scalabil\" src=\"\/wp-content\/uploads\/2020\/05\/f6ee4185af57d2a1869890014e6a0062.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>Ad\u0103uga\u021bi Thanos Sidecar la serverele dvs. Prometheus \u2014 de exemplu, un container vecin \u00een podul Kubernetes.<\/li>\n<li>Dezvolta\u021bi mai multe replici Thanos Querier pentru a permite vizualizarea datelor. \u00cen aceast\u0103 etap\u0103, este u\u0219or s\u0103 configura\u021bi gossip \u00eentre Scraper \u0219i Querier. Pentru a verifica interac\u021biunea componentelor, folosi\u021bi metrica \u2018thanos_cluster_members\u2019.<\/li>\n<\/ol>\n<p>\nNumai ace\u0219ti doi pa\u0219i sunt suficien\u021bi pentru a asigura o viziune global\u0103 \u0219i deduplicarea f\u0103r\u0103 cusur a datelor de la posibilele replici HA ale Prometheus! Conecta\u021bi pur \u0219i simplu tablourile de bord la punctul final HTTP Querier sau folosi\u021bi interfa\u021ba Thanos UI direct.<\/p>\n<p>Totu\u0219i, dac\u0103 ave\u021bi nevoie de backup pentru metrici \u0219i stocare pe termen lung, va fi necesar s\u0103 efectua\u021bi \u00eenc\u0103 trei pa\u0219i:<\/p>\n<ol>\n<li>Crea\u021bi un bucket AWS S3 sau GCS. Configura\u021bi Sidecar pentru a copia datele \u00een aceste bucket-uri. Acum pute\u021bi minimiza stocarea local\u0103 a datelor.<\/li>\n<li>Dezvolta\u021bi Store Gateway \u0219i conecta\u021bi-l la clusterul gossip existent. Acum pute\u021bi trimite cereri c\u0103tre datele din backup-uri!<\/li>\n<li>Dezvolta\u021bi Compactor pentru a \u00eembun\u0103t\u0103\u021bi eficien\u021ba cererilor pentru intervale lungi de timp, folosind comprimarea \u0219i downsampling-ul.<\/li>\n<\/ol>\n<p>\nDac\u0103 dori\u021bi s\u0103 afla\u021bi mai multe, nu ezita\u021bi, consulta\u021bi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\/tree\/master\/kube\">exemplele de manifest kubernetes<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\/blob\/master\/docs\/getting-started.md\">\u00eencepe\u021bi<\/a><\/noindex>!<\/p>\n<p>\u00cen total, \u00een cinci pa\u0219i, am transformat Prometheus \u00eentr-un sistem de monitorizare de \u00eencredere cu viziune global\u0103, timp nelimitat de stocare \u0219i disponibilitate \u00eenalt\u0103 poten\u021bial\u0103 pentru metrici.<\/p>\n<h3>Cerere de pull: avem nevoie de voi!<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\">Thanos<\/a><\/noindex> a fost un proiect open-source \u00eenc\u0103 de la \u00eenceput. Integrarea f\u0103r\u0103 cusur cu Prometheus \u0219i capacitatea de a folosi doar o parte din Thanos fac din el o alegere excelent\u0103 pentru scalarea sistemului de monitorizare f\u0103r\u0103 eforturi suplimentare.<\/p>\n<p>Suntem \u00eentotdeauna bucuro\u0219i s\u0103 primim Pull Request-uri \u0219i Issues pe GitHub. De asemenea, nu ezita\u021bi s\u0103 ne contacta\u021bi prin GitHub Issues sau Slack.<noindex><a rel=\"nofollow\" href=\"https:\/\/join.slack.com\/t\/improbable-eng\/shared_invite\/enQtMzQ1ODcyMzQ5MjM4LWY5ZWZmNGM2ODc5MmViNmQ3ZTA3ZTY3NzQwOTBlMTkzZmIxZTIxODk0OWU3YjZhNWVlNDU3MDlkZGViZjhkMjc\"> Improbable-eng #thanos<\/a><\/noindex>, dac\u0103 ave\u021bi \u00eentreb\u0103ri sau feedback, sau dori\u021bi s\u0103 \u00eemp\u0103rt\u0103\u0219i\u021bi experien\u021ba dumneavoastr\u0103! Dac\u0103 v\u0103 place ceea ce facem la Improbable, nu ezita\u021bi s\u0103 ne contacta\u021bi \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/improbable.io\/careers\/\">avem \u00eentotdeauna posturi disponibile.<\/a><\/noindex>!<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">Afl\u0103 mai multe despre curs.<br \/>\n<\/a><\/noindex><\/p>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/502122\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb. \u0424\u0430\u0431\u0438\u0430\u043d \u0420\u0435\u0439\u043d\u0430\u0440\u0446 (Fabian Reinartz) \u2014 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0444\u0430\u043d\u0430\u0442 Go \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u043c\u044d\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Prometheus \u0438 \u0441\u043e\u0443\u0447\u0440\u0435\u0434\u0438\u0442\u0435\u043b\u044c Kubernetes SIG instrumentation. \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043e\u043d \u0431\u044b\u043b production-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0432 SoundCloud \u0438 \u0432\u043e\u0437\u0433\u043b\u0430\u0432\u043b\u044f\u043b \u0433\u0440\u0443\u043f\u043f\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0432 CoreOS. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Google. \u0411\u0430\u0440\u0442\u0435\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":81889,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-81888","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Thanos \u2014 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439 Prometheus | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-17T11:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-17T11:42:23+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Thanos \u2014 Prometheus scalabil | ProHoster","description":"Traducerea articolului a fost realizat\u0103 special pentru studen\u021bii cursului \u201ePractici \u0219i instrumente DevOps\u201d.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Thanos \u2014 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439 Prometheus | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-17T11:42:23+00:00","article:modified_time":"2020-05-17T11:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"81888","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:48:24","updated":"2022-09-30 01:06:17","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/81888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=81888"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/81888\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/81889"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=81888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=81888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=81888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}