Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Ciao a tutti. Di seguito è riportata la trascrizione della presentazione al Big Monitoring Meetup 4.

Prometheus – un sistema di monitoraggio per vari sistemi e servizi, che consente agli amministratori di sistema di raccogliere informazioni sui parametri attuali dei sistemi e di configurare avvisi per ricevere notifiche su eventuali malfunzionamenti.

Nella presentazione verrà effettuato un confronto Thanos e VictoriaMetrics — progetti per la conservazione a lungo termine delle metriche di Prometheus.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Riproduci video

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Iniziamo con Prometheus. È un sistema di monitoraggio che raccoglie metriche da target specificati e le salva in uno storage locale. Prometheus è in grado di registrare metriche in uno storage remoto, generare avvisi e recording rules.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Limitazioni di Prometheus:

  • Non dispone di una vista globale delle query. Questo accade quando avete più istanze indipendenti di Prometheus che raccolgono metriche. E volete eseguire una query su tutte queste metriche raccolte da diverse istanze di Prometheus. Prometheus non lo consente.
  • In prometheus, le prestazioni sono limitate a un solo server. Prometheus non può scalare automaticamente su più server. Puoi solo suddividere manualmente i tuoi target tra più Prometheus.
  • Il numero di metriche in Prometheus è limitato a un solo server per lo stesso motivo per cui non può scalare automaticamente su più server.
  • In Prometheus non è così facile garantire la persistenza dei dati.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Quali sono le soluzioni a questi problemi?

Le soluzioni sono:

Tutte queste soluzioni servono per l'archiviazione remota dei dati raccolti da Prometheus. Risolvono il problema dello storage remoto del diapositiva precedente in modi diversi. In questa presentazione parlerò solo delle prime due soluzioni: Thanos e VictoriaMetrics.

Per la prima volta, informazioni su Thanos sono apparse a questo link. Qui viene descritta l'architettura Thanos e come funziona.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Thanos prende i dati che Prometheus ha salvato sul disco locale e li copia in S3, in GCS o in un altro storage object.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

In questo modo Thanos fornisce una vista globale delle query. Puoi interrogare i dati archiviati nello storage object da più istanze di Prometheus.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Thanos supporta PromQL e l'API di query di Prometheus..

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Thanos utilizza il codice di Prometheus per la persistenza dei dati.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Thanos è sviluppato dagli stessi sviluppatori di Prometheus.

Riguardo VictoriaMetrics. Ecco link, dove abbiamo parlato per la prima volta di VictoriaMetrics.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics raccoglie dati da più prometheus tramite remote write API un protocollo supportato da Prometheus.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics fornisce una vista di query globale, poiché più istanze di Prometheus possono scrivere dati in un'unica VictoriaMetrics. Pertanto, puoi effettuare richieste su tutti questi dati.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics supporta, come Thanos, sia PromQL che l'API di query di Prometheus.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

A differenza di Thanos, il codice sorgente di VictoriaMetrics è stato scritto da zero ed è ottimizzato per velocità e consumo di risorse.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics, a differenza di Thanos, può scalare sia verticalmente che orizzontalmente. C'è una versione single-node, che scala verticalmente. Puoi iniziare con un processore e 1 GB di memoria e crescere gradualmente fino a centinaia di processori e 1 TB di memoria. VictoriaMetrics è in grado di utilizzare tutte queste risorse. Le sue performance aumenteranno di circa 100 volte rispetto a un sistema a un nucleo.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

La storia di Thanos è iniziata a novembre 2017, quando è stato effettuato il primo commit pubblico. Prima di ciò, Thanos era sviluppato all'interno dell'azienda improbable.io.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Nel giugno 2019, è stata rilasciata la versione 0.5.0, in cui è stata rimossa gossip protocollo. È stato rimosso da Thanos perché ha mostrato alcune lacune. Spesso il cluster Thanos non funzionava correttamente, con nodi che si collegavano in modo errato a causa del protocollo gossip. Per questo motivo si è deciso di rimuoverlo. Ritengo che sia la scelta giusta.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Nello stesso giugno 2019 hanno inviato la richiesta numero 256 in Cloud Native Computing Foundation.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

E dopo qualche mese, Thanos è stato accettato in Cloud Native Computing Foundation, che include Prometheus, Kubernetes e altri progetti popolari.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Nel gennaio 2018 è iniziato lo sviluppo di VictoriaMetrics.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

A settembre 2018 ho menzionato pubblicamente per la prima volta VictoriaMetrics.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

A dicembre 2018 è stata pubblicata la versione Single-node.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

A maggio 2019 sono stati pubblicati i sorgenti sia della versione Single-node che di quella cluster.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

A giugno 2019, proprio come Thanos, abbiamo presentato la domanda alla CNCF foundation con il numero 255. Abbiamo presentato la domanda un giorno prima rispetto a Thanos.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Ma, sfortunatamente, non siamo ancora stati accettati. Abbiamo bisogno dell'aiuto della community.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Esaminiamo le diapositive più importanti, che mostrano l'architettura di Thanos e VictoriaMetrics.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Iniziamo con Thanos. I componenti gialli sono i componenti di Prometheus. Tutto il resto sono componenti di Thanos. Cominciamo con il componente più importante. Thanos Sidecar è un componente che si installa accanto a ogni Prometheus. Si occupa di caricare i dati di Prometheus dallo storage locale in S3 o in un altro Object Storage.

C'è anche un componente chiamato Thanos Store Gateway, che può leggere questi dati dall'Object Storage quando riceve richieste da Thanos Query. Thanos Query implementa PromQL e l'API di Prometheus. Quindi, esternamente, appare come Prometheus. Riceve richieste PromQL, le invia a Thanos Store Gateway, il quale recupera i dati necessari dall'Object Storage e li rimanda indietro.

Tuttavia, nel nostro Object Storage i dati degli ultimi due ore non sono conservati a causa della particolare implementazione di Thanos Sidecar, che non riesce a caricare le ultime due ore nell'Object Storage S3, poiché per queste due ore Prometheus non ha ancora creato i file nello storage locale.

Come abbiamo risolto questo problema? Thanos Query, oltre a inviare richieste a Thanos Store Gateway, invia parallelamente richieste a ciascun Thanos Sidecar che si trova accanto a Prometheus.

Il Thanos Sidecar, a sua volta, inoltra le richieste a Prometheus, recuperando i dati delle ultime due ore.

Oltre a questi componenti, c'è un componente opzionale senza il quale Thanos potrebbe non funzionare bene. Si tratta di Thanos Compact, che gestisce la fusione di file di piccole dimensioni in file più grandi all'interno dello Object Storage, caricati dai Thanos Sidecar. Thanos Sidecar carica i file di dati delle ultime due ore. Se non vengono uniti in file più grandi, il loro numero può aumentare notevolmente. Maggiore è il numero di questi file, più memoria è necessaria per Thanos Store Gateway e più risorse occorrono per la trasmissione dei dati tramite la rete e i metadati. L'efficacia di Thanos Store Gateway diminuisce. Pertanto, è essenziale avviare Thanos Compact, che unisce i file di piccole dimensioni in file più grandi, per ridurre il numero di tali file e diminuire il sovraccarico su Thanos Store Gateway.

C'è anche un componente chiamato Thanos Ruler. Esso esegue le regole di allerta di Prometheus e può calcolare le regole di registrazione di Prometheus, per registrare nuovamente i dati nello Object Storage. Tuttavia, non si raccomanda di utilizzare questo componente, poiché è inclinato a restituire dati incompleti.

Ecco uno schema semplice di Thanos.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Ora confrontiamolo con lo schema di VictoriaMetrics.

VictoriaMetrics offre due versioni: quella a nodo singolo e la versione cluster. La versione a nodo singolo funziona su un solo computer. Non ci sono questi componenti nella versione a nodo singolo, ma solo un binario. Questo binario è rappresentato da questo quadrato nel diagramma. Tutto ciò che si trova all'interno del quadrato è il contenuto del file binario per la versione a nodo singolo. Non è necessario sapere nulla di più. Basta eseguire il binario e tutto funziona.

La versione cluster è più complessa. Al suo interno ci sono tre componenti diversi: vmselect, vminsert e vmstorage. Dalla loro denominazione si può intuire qual è la funzione di ciascuno di essi. Il componente Insert accetta dati in diversi formati: dall'API Prometheus remote write, dal protocollo Line di Influx, dal protocollo Graphite e dal protocollo OpenTSDB. Il componente Insert li riceve, li analizza e li distribuisce tra i componenti di storage disponibili, dove i dati vengono effettivamente memorizzati. Il componente Select, dal canto suo, riceve le query PromQL. Implementa PromQL, oltre all'API di interrogazione di Prometheus, e può essere utilizzato come sostituto di Prometheus in Grafana o in altri client API di Prometheus. Il Select accetta una query promql, la analizza, legge i dati necessari per eseguire questa query dai nodi di storage, elabora questi dati e restituisce la risposta.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Confrontiamo la complessità di installazione di Thanos e VictoriaMetrics.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Iniziamo con Thanos. Prima di iniziare a lavorare con Thanos, è necessario creare un bucket nello storage oggetti, come S3 o GCS, affinché il Thanos Sidecar possa scrivere i dati.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Successivamente, per ogni Prometheus, è necessario installare il Thanos Sidecar. Prima di questo, non dimenticare di disattivare la compattazione dei dati in Prometheus. La compattazione dei dati comprime periodicamente i dati nel storage locale di Prometheus per ridurre il consumo di risorse.

Quando installi il Thanos Sidecar sui tuoi Prometheus, devi disattivare questa compattazione dei dati, perché il Thanos Sidecar non può funzionare correttamente se la compattazione dei dati è attiva. Questo significa che il tuo Prometheus inizia a salvare i dati in blocchi di due ore e smette di unire questi blocchi in dimensioni maggiori. Di conseguenza, se effettui richieste che superano la durata delle ultime due ore, queste non funzioneranno in modo altrettanto efficiente, rispetto a come potrebbero se la compattazione dei dati fosse attiva.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Pertanto, Thanos consiglia di ridurre il periodo di conservazione dei dati nel storage locale a 6-8 ore, per diminuire questo overhead di un gran numero di piccoli blocchi.

Dopo aver installato Thanos Sidecar, è necessario installare due componenti per ogni Object Storage Bucket. Questi sono Thanos Compactor e Thanos Store Gateway.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Successivamente, devi installare Thanos Query e configurarlo in modo che possa connettersi a tutti i Thanos Store Gateway che hai, oltre a sapersi collegare a tutti i Thanos Sidecar.

Qui potrebbe esserci un piccolo problema.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

È necessario configurare una connessione sicura e affidabile da Thanos Query a questi componenti. E se i tuoi Prometheus si trovano in diversi data center o in diverse VPC, le connessioni esterne sono vietate. Tuttavia, per far funzionare Thanos Query, devi trovare un modo per configurare la connessione.

Se hai molti di questi data center, l'affidabilità dell'intero sistema diminuisce. Thanos Query deve mantenere continuamente le connessioni a tutti i Thanos Sidecar situati in diversi data center. Ad ogni richiesta in ingresso, invierà le richieste a tutti i Thanos Sidecar. Se la connessione si interrompe, riceverai o un set di dati incompleto o la risposta 'cluster non funziona'.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Con VictoriaMetrics tutto è un po' più semplice. Per la versione Single-node, basta avviare un binario e tutto funziona.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Nella versione cluster, è necessario avviare tutti e tre i tipi di componenti menzionati in qualsiasi numero desiderato, oppure utilizzare helm chart per automatizzare l'avvio dei componenti in Kubernetes. Abbiamo in programma di creare un operatore Kubernetes. Helm chart non copre alcuni casi e può causare problemi. Ad esempio, consente di ridurre il numero di storage node, il che comporterà una perdita di dati.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Dopo aver avviato un binario oppure la versione cluster, è sufficiente aggiungere alla configurazione di Prometheus la configurazione per l'url di remote write, affinché inizi a scrivere i dati contemporaneamente nello storage locale e nello storage remoto. Come avrete notato, questa configurazione dovrebbe funzionare in modo molto più affidabile rispetto a quella di Thanos. Non abbiamo bisogno di mantenere una connessione da VictoriaMetrics a tutti i Prometheus, perché i Prometheus si connettono direttamente a VictoriaMetrics e trasmettono i dati.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Consideriamo il supporto di Thanos e VictoriaMetrics.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Thanos deve monitorare Sidecar per assicurarsi che continui a caricare i dati in Object Storage. Potrebbero interrompere questo caricamento a causa di errori, ad esempio se la connessione di rete con Object Storage viene temporaneamente interrotta o se Object Storage diventa temporaneamente non disponibile. In quel momento, Thanos Sidecar noterà il problema, segnalerà l'errore, potrebbe chiudersi e smettere di funzionare. Se non lo monitori, i dati smetteranno di essere trasferiti in Object Storage. Se trascorre il tempo di retention (6-8 ore raccomandato), perderai i dati che non sono stati salvati in Object Storage.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

I compactor di Thanos possono smettere di funzionare a causa di concorrenza con Sidecar. I compactor prelevano i dati da Object Storage e li uniscono in blocchi più grandi. Poiché i compactor non sono sincronizzati con i Sidecar, può verificarsi quanto segue: il Sidecar non ha ancora completato la scrittura del blocco e il Compactor decide che quel blocco è completamente registrato. Il Compactor inizia a leggerlo. Lo legge in modo incompleto e smette di funzionare. Vedi dettagli. qui.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Store Gateway può restituire dati incoerenti a causa di race condition tra il Compactor e i Sidecar. Qui succede la stessa cosa, perché il Store Gateway non è sincronizzato con i Compactor e i Sidecar. Di conseguenza, possono verificarsi condizioni di gara in cui il Store Gateway non vede parte dei dati o vede dati extra.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Il componente Query in Thanos restituisce per impostazione predefinita un risultato parziale se alcuni Sidecar o il Store Gateway non sono disponibili al momento. Otterrete parte dei dati, e non saprete nemmeno di aver ricevuto solo una parte. Funziona così per impostazione predefinita. In situazioni simili, VictoriaMetrics restituisce i dati contrassegnati come parziali.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

A differenza di Thanos, VictoriaMetrics perde raramente dati. Anche se la connessione tra Prometheus e VictoriaMetrics viene interrotta, non è un problema, poiché Prometheus continua a registrare i nuovi dati in arrivo nel Write Ahead Log, la cui dimensione è di 2 ore. Se entro due ore ripristinate la connessione a VictoriaMetrics, i dati non andranno persi. Prometheus è in grado di aggiungere dati dopo il ripristino della connessione a VictoriaMetrics..

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

A differenza di Thanos, che registra i dati nell'object storage solo dopo due ore, Prometheus replica automaticamente i dati tramite il protocollo remote write nello storage remoto, come VictoriaMetrics. Non devi preoccuparti di perdere lo storage locale in Prometheus. Se dovesse perdere lo storage locale, nel peggiore dei casi perderai solo gli ultimi secondi di dati che non sono stati registrati nello storage remoto.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Kubernetes gestisce automaticamente il cluster, a differenza di Thanos. Tutti i componenti di Thanos sono complessi da collocare in un unico cluster Kubernetes, a differenza dei componenti cluster di VictoriaMetrics.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Con VictoriaMetrics, l'aggiornamento a una nuova versione è molto semplice. Basta fermare VictoriaMetrics, aggiornare i file binari e riavviarlo. Durante l'arresto tramite il segnale SIGINT, tutti i file binari di VictoriaMetrics eseguono un gracefull shutdown. Salvano correttamente i dati necessari e chiudono le connessioni in ingresso per non perdere nulla. Quindi, non perderai nulla durante l'aggiornamento.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Espandere il cluster di VictoriaMetrics è molto semplice. Basta aggiungere i componenti necessari e continuare a lavorare.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Sugli insidiosi aspetti di Thanos e VictoriaMetrics.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Thanos presenta alcune insidie. Prometheus deve memorizzare i dati delle ultime due ore. Se vengono persi, li perderai completamente, poiché non sono ancora stati salvati nello storage oggetti, come S3.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Il componente Store Gateway e il componente compactor possono richiedere molta memoria per lavorare con un grande Object Storage, se contiene molti file piccoli. Maggiore è il numero e il volume dei file, maggiore è la memoria operativa richiesta da Store Gateway e compactor per memorizzare le informazioni sui metadati. Thanos ha molti problemi al riguardo. Store Gateway e compactor si bloccano con volumi medi di dati registrati..

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Thanos viene pubblicizzato come in grado di scalare all'infinito in base al numero dei tuoi Prometheus. In realtà, non è vero. Poiché tutte le richieste passano attraverso il componente Query, che deve interrogare in parallelo tutti i componenti Store Gateway e tutti i componenti Sidecar, estrarre i dati e poi pre-processarli. È ovvio che la velocità delle richieste è limitata dal anello più debole, cioè dal Store Gateway più lento o dal Sidecar più lento.

Questi componenti potrebbero essere caricati in modo non uniforme. Ad esempio, avete un Prometheus che raccoglie milioni di metriche al secondo. E c'è un Prometheus che raccoglie migliaia di metriche al secondo. Il Prometheus che raccoglie milioni di metriche al secondo carica il server su cui è in esecuzione in modo molto più intenso. Di conseguenza, il Sidecar funziona più lentamente. E in generale, tutto lì funziona lentamente. E il componente Query estrarrà i dati da lì molto lentamente. Pertanto, le prestazioni dell'intero cluster saranno limitate da questo Sidecar lento.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Per impostazione predefinita, Thanos restituisce dati parziali se alcuni Sidecar o Store Gateway non sono disponibili. Ad esempio, se i vostri Sidecar sono distribuiti in tutto il mondo in diversi data center, la probabilità di interruzione della connessione e di indisponibilità dei componenti aumenta notevolmente. Pertanto, nella maggior parte dei casi riceverete dati parziali, senza nemmeno saperlo.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Anche VictoriaMetrics ha le sue insidie. La prima insidia è l'opzione che limita la quantità di memoria RAM utilizzata per la cache di VictoriaMetrics. Per impostazione predefinita, è pari al 60% della memoria RAM sulla macchina in cui è in esecuzione VictoriaMetrics oppure al 60% della RAM del pod VictoriaMetrics in Kubernetes.

Se questo valore viene modificato in modo errato, si può compromettere le prestazioni di VictoriaMetrics. Ad esempio, impostare un valore troppo basso può far sì che i dati non riescano a stare nella cache di VictoriaMetrics. Questo costringerà il sistema a effettuare più lavoro, sovraccaricando la CPU e il disco. Se si imposta questo parametro troppo alto, aumenta, da un lato, la probabilità che VictoriaMetrics si blocchi con un errore di out of memory, e dall'altro, si avrà pochissima memoria RAM disponibile per la cache di file nel sistema operativo. VictoriaMetrics fa affidamento sulla cache di file per le prestazioni. Se è insufficiente, il carico sul disco può aumentare notevolmente. Pertanto, il consiglio è di non modificare il parametro senza una necessità estrema.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Secondo opzione. Questo è il retentionPeriod — il periodo predefinito impostato su 1 mese. È il tempo durante il quale VictoriaMetrics archivia i dati. Al termine di questo periodo, VictoriaMetrics elimina i dati.

Molti avviano VictoriaMetrics senza questo parametro, registrano i dati per un mese. E poi si chiedono: perché i dati sono scomparsi nel mese precedente? Perché il retentionPeriod predefinito è di 1 mese. Quindi è necessario sapere e impostare il retentionPeriod corretto.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Esploriamo le caratteristiche uniche.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Thanos ha una funzione chiamata downsampling: intervalli di 5 minuti e orari, che spesso non funzionano correttamente. Se si cerca su Google e si guarda alle loro issue su GitHub, ci sono molte questioni relative a questo downsampling, che talvolta funziona in modo errato o non come si aspettano gli utenti.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Thanos ha una deduplicazione dei dati per le coppie Prometheus HA. Quando due Prometheus raccolgono le stesse metriche dagli stessi target e Thanos le accumula nello Object Storage. Thanos sa deduplicare correttamente questi dati, a differenza di VictoriaMetrics.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Thanos ha un componente di alert che era nello schema di Thanos. Ma non è raccomandato per l'uso in produzione..

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Thanos ha il vantaggio che il codice di Thanos e Prometheus è condiviso. Thanos e Prometheus sono stati sviluppati dagli stessi programmatori. Con miglioramenti in Thanos, l'altra parte beneficia anche in Prometheus.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

La caratteristica principale di VictoriaMetrics è MetricsQL. Si tratta di un'estensione di VictoriaMetrics per PromQL, di cui ho parlato al recente big monitoring meetup.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics supporta il caricamento di dati tramite diversi protocolli. VictoriaMetrics può non solo ricevere dati da Prometheus, ma anche tramite i protocolli Influx, OpenTSDB e Graphite.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

I dati di VictoriaMetrics Occupano notevolmente meno spazio rispetto a Thanos e Prometheus.

Se si registrano dati reali, gli utenti segnalano una riduzione delle dimensioni su disco dei dati da 2 a 5 volte rispetto a Prometheus e Thanos.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Un ulteriore vantaggio di VictoriaMetrics è che è ottimizzata per la velocità.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Diamo un'occhiata ai costi dell'infrastruttura.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Uno dei vantaggi di Thanos è che memorizza i dati nel cloud storage, che è relativamente economico.

Quando salvi i dati nello storage a oggetti, devi pagare per le operazioni di scrittura e lettura dei dati (10€ per milione di operazioni). Quando registri dati nello storage a oggetti, copri i costi del tuo hosting per caricare i dati su Internet, a meno che il tuo cluster non si trovi in AWS — lì è gratuito. Quando leggi i dati, paghi da 10 a 230€ per 1TB. Questo può risultare significativo se richiedi frequentemente dati storici dal cluster Thanos.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Per il cluster Thanos è necessario pagare i server per i componenti Compact, Store Gateway, Query, che richiedono molta memoria e CPU per grandi volumi di dati.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

I costi per VictoriaMetrics sono i seguenti. Se conservi i dati su dischi HDD GCE, il costo è di 40€ per 1TB. Per VictoriaMetrics sono sufficienti normali dischi HDD, non sono necessari SSD, che costano cinque volte di più. VictoriaMetrics è ottimizzata per gli HDD.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Per VictoriaMetrics sono necessari server per i componenti: o un nodo singolo o per componenti cluster, che richiedono molte meno CPU e RAM rispetto ai componenti Thanos — di conseguenza saranno più economici.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Esempi di implementazione.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Un esempio di implementazione per Thanos è Gitlab. Gitlab funziona completamente su Thanos. Tuttavia, non è tutto così semplice. Se guardi il loro issues, si può notare che hanno costantemente problemi operativi con Thanos: manca memoria per i componenti Store Gateway o Query. Devono continuamente aumentare la quantità di memoria.

A causa di ciò, i costi per risolvere questi problemi aumentano.

Un secondo implementazione, che potrebbe avere più successo, è l'azienda Improbable, che ha iniziato a sviluppare Thanos. Hanno pubblicato il codice sorgente di Thanos. Improbable è un'azienda che si occupa dello sviluppo di motori grafici.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics presenta esempi pubblici di implementazione:

  • wix.com creatore di siti web
  • Adidas implementa VictoriaMetrics e ha persino fatto una presentazione all'ultimo PromCon 2019
  • TrafficStars — rete pubblicitaria
  • Seznam.cz — popolare motore di ricerca ceco.

E poi ci sono aziende sconosciute che non posso nominare adesso. Non hanno dato il loro consenso.

  • Un grande sviluppatore di giochi. Più grande di Improbable.
  • Un importante sviluppatore di software grafico.
  • Una grande banca russa.
  • Produttore europeo di turbine eoliche che ha testato con successo VictoriaMetrics. Questo produttore implementa VictoriaMetrics per il monitoraggio dei dati provenienti dalle turbine eoliche a una velocità di 50 campioni al secondo per ogni sensore. Ogni turbina eolica ha centinaia di sensori. Hanno diverse centinaia di turbine eoliche.
  • Compagnie aeree russe che desiderano implementare VictoriaMetrics, ma non riescono mai a farlo. Siamo in fase di contratto con loro.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetricsConclusioni.

VictoriaMetrics e Thanos risolvono problemi simili, ma in modi diversi:

  • Vista di query globale
  • scalabilità orizzontale
  • retention arbitraria

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Grazie.

Vi aspettiamo sul nostro canale telegram.

Scelta dello storage dati per Prometheus: Thanos vs VictoriaMetrics

Solo gli utenti registrati possono partecipare al sondaggio. Accedi, per favore.

Cosa usate come storage a lungo termine per Prometheus?

  • 35,3%Thanos6

  • 0,0%Cortex0

  • 0,0%M3DB0

  • 41,2%VictoriaMetrics7

  • 23,5%altro4

Hanno votato 17 utenti. Si sono astenuti 16 utenti.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster