Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Salutare tuturor. Mai jos găsiți transcrierea prezentării de la Big Monitoring Meetup 4.

Prometheus este un sistem de monitorizare a diverselor sisteme și servicii, prin care administratorii de sistem pot colecta informații despre parametrii actuali ai sistemelor și pot configura notificări pentru a primi alerte în caz de abateri de la funcționarea normală a acestora.

În prezentare va fi comparat Thanos și VictoriaMetrics - proiecte pentru stocarea pe termen lung a metricilor Prometheus.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Redați video

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Mai întâi, voi vorbi despre Prometheus. Acesta este un sistem de monitorizare care colectează metrici de la ținti specificate și le salvează într-un stocare locală. Prometheus poate scrie metrici într-un stocare externă, poate genera alerte și reguli de înregistrare.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Limitările Prometheus:

  • Nu are vizualizare globală a interogărilor. Aceasta este atunci când aveți mai multe instanțe independente de Prometheus. Ele colectează metrici și doriți să faceți o interogare pe toate aceste metrici, colectate de la diferite instanțe de Prometheus. Prometheus nu permite acest lucru.
  • Performanța Prometheus este limitată la un singur server. Prometheus nu se poate scalabil automat pe mai multe servere. Puteți doar să vă împărțiți manual țintele între mai multe instanțe de Prometheus.
  • Volumul metricilor în Prometheus este limitat la un singur server din același motiv pentru care nu se poate scala automat pe mai multe servere.
  • În Prometheus nu este atât de simplu să organizați păstrarea datelor.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Care sunt soluțiile pentru aceste probleme?

Soluțiile sunt:

Toate aceste soluții sunt pentru stocarea externă a datelor colectate de Prometheus. Ele abordează problema stocării externe diferit. În această prezentare voi vorbi doar despre primele două soluții: Thanos și VictoriaMetrics.

Informația despre Thanos a apărut prima dată la acest link. Acolo este descrisă arhitectura Thanos și modul în care funcționează.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Thanos ia datele pe care Prometheus le-a salvat pe disc local și le copiază în S3, în GCS sau în alt stocaj de obiecte.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Astfel, Thanos oferă vizibilitate globală asupra interogărilor. Puteți solicita datele stocate în stocarea de obiecte de la mai multe instanțe Prometheus.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Thanos suportă PromQL și API-ul de interogare Prometheus.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Thanos utilizează codul Prometheus pentru stocarea datelor.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Thanos este dezvoltat de aceiași dezvoltatori care au creat Prometheus.

Despre VictoriaMetrics. Iată linkul, unde am vorbit prima dată despre VictoriaMetrics.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics preia date de la mai multe instanțe Prometheus prin API-ul remote write protocolul, suportat de Prometheus.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics oferă o vedere globală a interogărilor, deoarece mai multe instanțe Prometheus pot scrie date într-o singură instanță VictoriaMetrics. Astfel, poți realiza interogări pentru toate aceste date.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics suportă, la fel ca Thanos, PromQL și API-ul de interogare Prometheus.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Spre deosebire de Thanos, codul sursă al VictoriaMetrics a fost scris de la zero și optimizat pentru viteză și consum de resurse.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics, spre deosebire de Thanos, se scalează atât vertical, cât și orizontal. Există o versiune single-node, care se scalează vertical. Poți începe cu un procesor și 1 GB de memorie și să crești treptat până la sute de procesoare și 1 TB de memorie. VictoriaMetrics este capabilă să utilizeze toate aceste resurse. Performanța ei va crește de aproximativ 100 de ori comparativ cu un sistem cu un singur nucleu.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Istoria Thanos a început în noiembrie 2017, când a avut loc prima commit publică. Înainte de aceasta, Thanos a fost dezvoltat intern în compania improbable.io.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

În iunie 2019, a avut loc un lansare semnificativă 0.5.0, în care a fost eliminat protocolul gossip. Acesta a fost eliminat din Thanos deoarece s-a dovedit a fi ineficient. Adesea, clusterul Thanos funcționa greșit, iar nodurile se conectau incorect din cauza protocolului gossip. Prin urmare, s-a decis eliminarea acestuia. Consider că aceasta a fost o decizie corectă.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

În aceeași lună iunie 2019, au trimis cererea numărul 256 în Cloud Native Computing Foundation.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

și, după câteva luni, Thanos a fost acceptat în Cloud Native Computing Foundation, care include Prometheus, Kubernetes și alte proiecte populare.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

În ianuarie 2018, a început dezvoltarea VictoriaMetrics.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

În septembrie 2018, am menționat pentru prima dată public despre VictoriaMetrics.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

În decembrie 2018, a fost publicată versiunea Single-node.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

În mai 2019 au fost publicate sursele atât pentru versiunea Single-node, cât și pentru versiunea cluster.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

În iunie 2019, la fel ca Thanos, am trimis o cerere la fundația CNCF sub numărul 255. Am trimis cererea cu o zi înainte decât Thanos.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Dar, din păcate, nu am fost acceptați acolo până acum. Avem nevoie de ajutorul comunității.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Să analizăm cele mai importante diapozitive, care arată arhitectura Thanos și VictoriaMetrics.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Să începem cu Thanos. Componentele galbene sunt componente Prometheus. Tot ce este altceva sunt componente Thanos. Să începem cu componenta cea mai importantă. Thanos Sidecar este componenta care este instalată lângă fiecare Prometheus. Aceasta se ocupă cu încărcarea datelor Prometheus din storage local în S3 sau în alt Object Storage.

Există și un component numit Thanos Store Gateway, care poate citi aceste date din Object Storage la cererile primite de la Thanos Query. Thanos Query implementează PromQL și API-ul Prometheus. Așadar, din exterior, acesta arată ca Prometheus. Acceptă cereri PromQL, le trimite către Thanos Store Gateway, iar Thanos Store Gateway obține datele necesare din Object Storage și le trimite înapoi.

Însă în Object Storage avem datele lipsă din ultimele două ore din cauza particularităților implementării Thanos Sidecar, care nu poate încărca ultimele două ore în Object Storage S3, deoarece pentru aceste două ore Prometheus nu a creat încă fișiere în stocarea locală.

Cum am reușit să o ocolim? Thanos Query, în afară de cererile către Thanos Store Gateway, trimite în paralel cereri și către fiecare Thanos Sidecar care se află aproape de Prometheus.

Iar Thanos Sidecar, la rândul său, procesează cererile mai departe în Prometheus și obține datele din ultimele două ore.

Pe lângă aceste componente, există și un component opțional, fără de care Thanos se va simți rău. Acesta este Thanos Compact, care se ocupă cu fuzionarea fișierelor mici din Object Storage în fișiere mai mari, care au fost încărcate aici de Thanos Sidecar-uri. Thanos Sidecar încarcă fișiere cu date pentru două ore. Aceste fișiere, dacă nu sunt fuzionate în fișiere mai mari, pot crește semnificativ. Cu cât sunt mai multe astfel de fișiere, cu atât mai multă memorie este necesară pentru Thanos Store Gateway, cu atât mai multe resurse sunt necesare pentru transferul datelor prin rețea și metadatele. Funcționarea Thanos Store Gateway devine ineficientă. Prin urmare, trebuie să lansezi neapărat Thanos Compact, care fuzionează fișierele mici în fișiere mai mari, pentru a avea mai puține astfel de fișiere și pentru a reduce overhead-ul pe Thanos Store Gateway.

Există și un component numit Thanos Ruler. Acesta execută regulile de alertă Prometheus și poate calcula regulile de înregistrare Prometheus, pentru a putea salva din nou datele în Object Storage. Dar acest component nu este recomandat, deoarece tinde să returneze date incomplete.

Iată o schemă simplă a lui Thanos.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Acum să comparăm cu schema VictoriaMetrics.

VictoriaMetrics are 2 versiuni: Single-node și versiunea de cluster. Single-node funcționează pe un singur computer. În Single-node nu există aceste componente, ci doar un binar. Acest binar pe diapozitiv arată ca acest pătrat. Tot ce se află în interiorul pătratului este conținutul fișierului binar pentru versiunea Single-node. Nu trebuie să știți despre el. Pur și simplu rulați binarul și totul funcționează.

Versiunea cluster este mai complexă. În interiorul acesteia se află trei componente diferite: vmselect, vminsert și vmstorage. Din denumirile lor ar trebui să fie clar ce se ocupă fiecare dintre ele. Componenta Insert acceptă date în diferite formate: din API-ul Prometheus remote write, protocolul Influx line, protocolul Graphite și protocolul OpenTSDB. Componenta Insert le primește, le parsează și le împarte între componentele storage existente, unde datele sunt deja salvate. Componenta Select, pe de altă parte, acceptă interogări PromQL. Aceasta implementează PromQL, precum și API-ul de interogare Prometheus, și poate fi folosit ca un substitut pentru Prometheus în Grafana sau în alți clienți API Prometheus. Select primește interogări promql, le parsează, citește datele necesare pentru a executa această interogare din nodurile storage, le procesează și returnează un răspuns.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Să comparăm complexitatea instalării Thanos și VictoriaMetrics.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Să începem cu Thanos. Înainte de a începe să lucrați cu Thanos, trebuie să creați un bucket în Object Storage, cum ar fi S3 sau GCS, astfel încât Thanos Sidecar să poată scrie date acolo.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Apoi, pentru fiecare Prometheus trebuie să instalați Thanos Sidecar. Înainte de aceasta, nu uitați să dezactivați compresia datelor în Prometheus. Compresia datelor comprimă periodic datele din stocarea locală a Prometheus pentru a reduce consumul de resurse.

Atunci când instalați Thanos Sidecar la Prometheus-urile dvs., trebuie să dezactivați această compresie a datelor, deoarece Thanos Sidecar nu funcționează corect cu compresia activă. Aceasta înseamnă că Prometheus dvs. începe să salveze datele în blocuri de câte două ore și încetează să îmbine aceste blocuri în unele mai mari. Deci, dacă faceți interogări care depășesc durata ultimelor două ore, acestea nu vor funcționa atât de eficient comparativ cu cum ar putea funcționa dacă compresia datelor ar fi activată.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

De aceea, Thanos recomandă reducerea timpului de retenție a datelor în stocarea locală la 6-8 ore, pentru a reduce această suprasarcină a unui număr mare de blocuri mici.

După ce ați instalat Thanos Sidecar, trebuie să instalați două componente pentru fiecare Object Storage Bucket. Acestea sunt Thanos Compactor și Thanos Store Gateway.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

După aceea, trebuie să instalați Thanos Query și să-l configurați pentru a se putea conecta la toate Thanos Store Gateway-urile pe care le aveți, precum și să se conecteze la toate Thanos Sidecar-urile.

Aici poate apărea o mică problemă.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Trebuie să configurați o conexiune fiabilă și sigură de la Thanos Query la aceste componente. Iar dacă aveți Prometheus-uri în diferite centre de date sau în VPC-uri diferite, conexiunile externe sunt interzise. Dar pentru ca Thanos Query să funcționeze, trebuie să găsiți o modalitate de a configura conexiunea acolo.

Dacă aveți multe astfel de centre de date, fiabilitatea întregului sistem scade. Deoarece Thanos Query trebuie să mențină constant conexiunile cu toate Thanos Sidecar-urile situate în diferite centre de date. La fiecare solicitare primită, va redirecționa solicitările către toate Thanos Sidecar-urile. Dacă conexiunea se întrerupe, veți obține fie un set incomplet de date, fie un răspuns „clusterele nu funcționează”.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

În VictoriaMetrics, totul este puțin mai simplu. Pentru versiunea Single-node, este suficient să rulați un singur binar și totul funcționează.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Pentru versiunea în cluster, este suficient să rulați toate cele trei tipuri de componente menționate anterior în orice număr de care aveți nevoie, sau să folosiți helm chart pentru automatizarea lansării componentelor în Kubernetes. De asemenea, plănuim să dezvoltăm un operator Kubernetes. Helm chart-ul nu acoperă unele cazuri și vă permite să vă împușcați în picior. De exemplu, permite reducerea numărului de storage node, ceea ce va duce la pierderea datelor.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

După ce ați lansat un binar sau versiunea în cluster, este suficient să adăugați în configurația Prometheus setarea pentru remote write url, pentru a începe să scrie datele simultan în storage-ul local și în storage-ul remote. După cum ați observat, această configurație ar trebui să funcționeze mult mai fiabil în comparație cu configurația Thanos. Nu avem nevoie să menținem conexiunea de la VictoriaMetrics la toate Prometheus-urile, deoarece Prometheus-urile se conectează singure la VictoriaMetrics și transmit datele.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Să analizăm mentenanța Thanos și VictoriaMetrics.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Thanos trebuie să monitorizeze Sidecar pentru a se asigura că nu întrerupe transferul de date în Object Storage. Acesta poate opri acest transfer din cauza unor erori de încărcare, de exemplu, dacă aveți o întrerupere temporară a conexiunii de rețea cu Object Storage sau dacă Object Storage devine temporar inaccesibil. Thanos Sidecar va observa acest lucru, va raporta o eroare, poate să se prăbușească și apoi să înceteze să funcționeze. Dacă nu îl monitorizați, datele nu vor mai fi transmise în Object Storage. Dacă trece timpul de retenție (6-8 ore recomandate), veți pierde datele care nu au ajuns în Object Storage.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Thanos compactorii pot înceta să funcționeze din cauza concurențelor cu Sidecar. Compactorii preiau date din Object Storage și le îmbină în bucăți de date mai mari. Deoarece compactorii nu sunt sincronizați cu Sidecar-urile, poate apărea următoarea situație: Sidecar-ul nu a terminat încă scrierea blocului, Compactorul decide că acest bloc este complet scris. Compactorul începe să-l citească. El citește blocul incomplet și încetează să funcționeze. Vezi detalii aici.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Store Gateway poate returna date inconsistene din cauza concurențelor între Compactor și Sidecar-uri. Aici este o situație similară, deoarece Store Gateway nu este sincronizat cu Compactorii și Sidecar-urile. Prin urmare, pot apărea condiții de cursă, când Store Gateway nu vede o parte a datelor sau vede date suplimentare.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Componenta Query din Thanos returnează implicit un rezultat parțial dacă unele Sidecar-uri sau Store Gateway nu sunt disponibile în acel moment. Veți primi o parte din date și nici nu veți ști că nu ați primit toate datele. Așa funcționează în mod implicit. Într-o situație similară, VictoriaMetrics returnează datele marcate ca parțiale.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Spre deosebire de Thanos, VictoriaMetrics rareori pierde date. Chiar dacă conexiunea de la Prometheus la VictoriaMetrics este întreruptă, nu este o problemă, deoarece Prometheus continuă să scrie datele noi primite în Write Ahead Log, care are o dimensiune de 2 ore. Dacă în termen de două ore restabiliți conexiunea cu VictoriaMetrics, datele nu se vor pierde. Prometheus poate adăuga date după restabilirea conexiunii cu VictoriaMetrics.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Spre deosebire de Thanos, care scrie datele în object storage doar după două ore, Prometheus replică automat datele prin protocolul remote write în remote storage, cum ar fi VictoriaMetrics. Nu trebuie să îți faci griji cu privire la pierderea local storage în Prometheus. Dacă ar pierde local storage, în cel mai rău caz vei pierde ultimele secunde de date care nu au apucat să fie scrise în remote storage.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Kubernetes gestionează automat clusterul, spre deosebire de Thanos. Toate componentele Thanos sunt greu de inclus într-un singur cluster Kubernetes, în contrast cu componentele cluster ale VictoriaMetrics.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics are o actualizare foarte simplă la o nouă versiune. Pur și simplu oprești VictoriaMetrics, actualizezi binarele și repornești. Când este oprit prin semnalul SIGINT, toate binarele VictoriaMetrics fac un shutdown grațios. Ele salvează corect datele necesare, închid corect conexiunile intrante pentru a nu pierde nimic. Prin urmare, nu vei pierde nimic în timpul actualizării.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Extinderea clusterului VictoriaMetrics este foarte simplă. Pur și simplu adaugi componentele necesare și continui să lucrezi.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Despre capcanele din Thanos și VictoriaMetrics.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Thanos are următoarele capcane. Prometheus trebuie să stocheze datele pentru ultimele două ore. Dacă acestea se pierd, le vei pierde complet, deoarece nu au apucat să fie scrise în Object Storage, cum ar fi S3.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Componenta Store Gateway și componenta compactor pot necesita multă memorie pentru a lucra cu un mare Object Storage, dacă acolo sunt stocate multe fișiere mici. Cu cât numărul și volumul fișierelor sunt mai mari, cu atât Store Gateway și compactorul necesită mai multă memorie operațională pentru a stoca metainformațiile. Thanos are multe probleme legate de faptul că Store Gateway și compactorul se prăbușesc la volume medii de date înregistrate..

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Thanos se laudă că se poate scala infinit în raport cu numărul de Prometheus. În realitate, acest lucru nu este adevărat. Deoarece toate cererile trec prin componenta Query, care trebuie să interogheze în paralel toate componentele Store Gateway și toate componentele Sidecar, extrașând date de acolo și apoi preprocesându-le. Este evident că viteza cererilor este limitată de cel mai lent punct slab, cel mai lent Store Gateway sau cel mai lent Sidecar.

Aceste componente pot fi supraîncărcate inegal. De exemplu, aveți un Prometheus care colectează milioane de metrici pe secundă. Și există un Prometheus care colectează mii de metrici pe secundă. Prometheus-ul care colectează milioane de metrici pe secundă solicită mult mai mult serverul pe care funcționează. Prin urmare, Sidecar-ul de acolo va funcționa mai lent. Și, în general, totul va funcționa încet. Componenta Query va extrage datele de acolo foarte încet. Astfel, performanța întregului cluster va fi limitată de acest Sidecar lent.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

În mod implicit, Thanos oferă date parțiale dacă unele Sidecar-uri sau Store Gateway-uri nu sunt disponibile. De exemplu, dacă aveți Sidecar-uri dispersate în întreaga lume în diferite centre de date, probabilitatea de a întrerupe conexiunea și de a avea componente inaccesibile crește semnificativ. Prin urmare, în majoritatea cazurilor veți obține date parțiale, fără a ști chiar despre asta.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

De asemenea, VictoriaMetrics are capcane. Prima capcană este opțiunea care limitează cantitatea de memorie RAM utilizată pentru cache-ul VictoriaMetrics. În mod implicit, aceasta este setată la 60% din memoria RAM a mașinii pe care rulează VictoriaMetrics sau 60% din RAM-ul podului VictoriaMetrics în Kubernetes.

Dacă schimbați incorect această valoare, puteți afecta performanța VictoriaMetrics. De exemplu, dacă setați o valoare prea mică, datele pot înceta să încapă în cache-ul VictoriaMetrics. Din această cauză, va trebui să efectueze muncă suplimentară și să solicite procesorul împreună cu discul. Dacă faceți această opțiune prea mare, crește, pe de o parte, probabilitatea ca VictoriaMetrics să se închidă cu eroarea out of memory, și, pe de altă parte, va duce la faptul că în sistemul de operare va rămâne foarte puțină memorie RAM pentru cache-ul de fișiere. Iar VictoriaMetrics se bazează pe cache-ul de fișiere pentru performanță. Dacă nu este suficient, atunci sarcina pe disc se poate crește semnificativ. De aceea, sfatul este să nu schimbați parametrul fără o necesitate extremă.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

A doua opțiune. Este retentionPeriod — perioada care, în mod implicit, este setată la 1 lună. Aceasta este perioada în care VictoriaMetrics păstrează datele. La expirarea acestui termen, VictoriaMetrics șterge datele.

Multe persoane rulează VictoriaMetrics fără acest parametru, înregistrează date timp de o lună. Apoi se întreabă: de ce datele au dispărut în luna precedentă? Pentru că retentionPeriod implicit este de 1 lună. Așadar, trebuie să cunoști și să stabilești un retentionPeriod corect.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Să trecem în revistă caracteristicile unice.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Thanos are o funcționalitate numită downsampling: intervale de 5 minute și orare, care de multe ori nu funcționează corect. Dacă cauți pe Google și verifici problemele lor pe GitHub, vei găsi multe probleme legate de acest downsampling, care uneori nu funcționează corect sau nu funcționează așa cum se așteaptă utilizatorii.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Thanos are deduplicarea datelor pentru perechi Prometheus HA. Când două instanțe Prometheus colectează aceleași metrici de la aceleași ținte, Thanos le stochează în Object Storage. Thanos poate deduplica corect aceste date, spre deosebire de VictoriaMetrics.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Thanos are un component de alertă, care a fost menționat în schema Thanos. Dar acesta nu este recomandat pentru utilizarea în producție.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Thanos are avantajul că codul din Thanos și Prometheus este comun. Thanos și Prometheus sunt dezvoltate de aceiași dezvoltatori. Atunci când se fac îmbunătățiri în Thanos, partea cealaltă (Prometheus) beneficiază.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Principala caracteristică a VictoriaMetrics este — MetricsQL. Aceasta este extensia VictoriaMetrics pentru PromQL, despre care am vorbit la anteriorul big monitoring meetup.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics suportă încărcarea datelor prin multe protocoale diferite. VictoriaMetrics nu doar că poate primi date de la Prometheus, dar și prin protocoale precum Influx, OpenTSDB și Graphite.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Datele VictoriaMetrics ocupă de obicei mult mai puțin spațiu comparativ cu Thanos și Prometheus.

Dacă se înregistrează date reale, utilizatorii afirmă că dimensiunea datelor pe disc este redusă de 2-5 ori comparativ cu Prometheus și Thanos.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Un alt avantaj al VictoriaMetrics este că este optimizată pentru viteză.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Să discutăm despre costul infrastructurii.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Unul dintre avantajele Thanos este că acesta păstrează datele în object storage, care este relativ ieftin.

Când salvezi date în obiect storage, trebuie să plătești pentru operațiile de scriere și citire a datelor (10 dolari pe milion de operații). Când scrii date în object storage, plătești costurile de hosting pentru încărcarea datelor pe internet, dacă clusterul tău nu se află în AWS — acolo este gratuit. Când citești datele, plătești între 10 dolari și 230 dolari pentru 1TB. Acest lucru poate fi semnificativ dacă soliciti frecvent date istorice din clusterul Thanos.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Pentru clusterul Thanos, este necesar să plătiți servere pentru componentele Compact, Store Gateway, Query, care necesită multă memorie și CPU pentru volume mari de date.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

La VictoriaMetrics, costurile sunt astfel. Dacă păstrezi datele pe discuri GCE HDD, ajunge la 40 USD pe 1TB. Pentru VictoriaMetrics, sunt suficiente discuri HDD obișnuite, nu sunt necesare SSD-uri, care costă de cinci ori mai mult. VictoriaMetrics este optimizată pentru HDD.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics necesită servere pentru componente: fie Single-node, fie pentru componentele cluster, care, spre deosebire de componentele Thanos, necesită mult mai puțin CPU și RAM — astfel, va fi mai ieftin.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Exemple de implementare.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Un exemplu de implementare pentru Thanos este Gitlab. Gitlab funcționează pe deplin pe Thanos. Dar nu totul este atât de simplu. Dacă ne uităm la issues, putem observa că au constant anumite probleme operaționale cu Thanos: le lipsește memorie pentru componentele Store Gateway sau Query. Sunt nevoiți să își crească constant capacitatea de memorie.

Din această cauză, costurile pentru rezolvarea acestor probleme cresc.

A doua implementare, care ar putea fi mai reușită — este compania Improbable, care a început dezvoltarea Thanos. Ei au publicat sursele Thanos. Improbable este o companie care se ocupă cu dezvoltarea de motoare de jocuri.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

La VictoriaMetrics, exemplele publice de implementare sunt:

  • wix.com, constructor de site-uri
  • Adidas implementează VictoriaMetrics și chiar a făcut o prezentare la ultimul PromCon 2019
  • TrafficStars — rețea de publicitate
  • Seznam.cz — un motor de căutare popular din Cehia.

Apoi au fost companii mai puțin cunoscute, pe care nu pot să le numesc acum. Nu au dat consimțământul.

  • Un dezvoltator mare de jocuri. Mai mare decât Improbable.
  • Un mare dezvoltator de software grafic.
  • O mare bancă rusă.
  • Un producător european de turbine eoliene, care a testat cu succes VictoriaMetrics. Acest producător implementează VictoriaMetrics pentru monitorizarea datelor recepționate de la turbinele eoliene cu o rată de 50 de eșantioane pe secundă pentru fiecare senzor. Fiecare turbină eoliană are câteva sute de senzori. Au câteva sute de turbine eoliene.
  • Aeroporturi ruse, care doresc să implementeze VictoriaMetrics, dar încă nu reușesc. Suntem în stadiul de contract.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetricsConcluzii.

VictoriaMetrics și Thanos abordează probleme similare, dar în moduri diferite:

  • Viziune globală a interogărilor
  • scalare orizontală
  • retentie arbitrară

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Mulțumim.

Te așteptăm pe canalul nostru de telegram.

Alegerea unui sistem de stocare a datelor pentru Prometheus: Thanos vs VictoriaMetrics

Numai utilizatorii înregistrați pot participa la sondaj. Conectați-vă, vă rugăm.

Ce folosești ca stocare pe termen lung pentru Prometheus?

  • 35,3%Thanos

  • 0,0%Cortex

  • 0,0%M3DB

  • 41,2%VictoriaMetrics

  • 23,5%alte

Au votat 17 de utilizatori. 16 utilizatori s-au abținut.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster