Hallo zusammen. Nachfolgend finden Sie die Transkription .
– ein Überwachungssystem für verschiedene Systeme und Dienste, mit dem Systemadministratoren Informationen über aktuelle Parameter der Systeme sammeln und Benachrichtigungen für Abweichungen im Betrieb der Systeme einstellen können.
Im Vortrag wird ein Vergleich und — von Projekten zur langfristigen Speicherung von Prometheus-Metriken.



Zuerst erzähle ich über Prometheus. Dies ist ein Überwachungssystem, das Metriken von festgelegten Zielorten sammelt und sie in einem lokalen Speicher speichert. Prometheus kann Metriken in einen externen Speicher schreiben, kann Alarme und Aufzeichnungsregeln generieren.

Einschränkungen von Prometheus:
- Es gibt keine globale Abfrageansicht. Das ist, wenn Sie mehrere unabhängige Instanzen von Prometheus haben. Sie sammeln Metriken. Und Sie möchten eine Abfrage über all diese Metriken, die von verschiedenen Instanzen von Prometheus gesammelt wurden, durchführen. Das erlaubt Prometheus nicht.
- Die Leistung von Prometheus ist nur auf einen Server beschränkt. Prometheus kann automatisch nicht auf mehrere Server skalieren. Sie können lediglich manuell Ihre Zielorte auf mehrere Prometheus-Instanzen aufteilen.
- Das Volumen der Metriken in Prometheus ist nur auf einen Server beschränkt, aus demselben Grund, warum es nicht automatisch auf mehrere Server skalieren kann.
- Es ist nicht so einfach, in Prometheus die Datenspeicherung zu organisieren.

Lösungen für diese Probleme/Aufgaben?
Die Lösungen sind:
All diese Lösungen sind für die entfernte Speicherung von Daten, die von Prometheus gesammelt wurden. Sie lösen das Problem des entfernten Speichers aus der vorherigen Folie unterschiedlich. In dieser Präsentation werde ich nur die ersten beiden Lösungen vorstellen: und .
Erstmals wurden Informationen über veröffentlicht am . Dort wird die Architektur beschrieben und wie es funktioniert.

Thanos nimmt die Daten, die Prometheus auf der lokalen Festplatte gespeichert hat, und kopiert sie in S3, in oder in einen anderen Objektspeicher.

So bietet Thanos eine globale Abfrageansicht. Sie können Daten anfragen, die in Objektspeichern von mehreren Prometheus-Instanzen gespeichert sind.

Thanos unterstützt PromQL und .

Thanos verwendet den Code von Prometheus zur Datenspeicherung.

Thanos wird von denselben Entwicklern entwickelt, die auch Prometheus entwickelt haben.
Über . Hier gesprochen. .

VictoriaMetrics erhält Daten von mehreren Prometheus über einem von Prometheus unterstützten Protokoll.

VictoriaMetrics bietet eine globale Abfrageansicht, da mehrere Instanzen von Prometheus Daten in eine VictoriaMetrics schreiben können. Dementsprechend können Sie Abfragen über all diese Daten stellen.

VictoriaMetrics unterstützt ebenfalls, wie Thanos — PromQL und die Prometheus-Abfrage-API.

Im Gegensatz zu Thanos wurde der Quellcode von VictoriaMetrics von Grund auf neu geschrieben und hinsichtlich Geschwindigkeit und Ressourcenverbrauch optimiert.

VictoriaMetrics, im Gegensatz zu Thanos, skaliert sowohl vertikal als auch horizontal. Es gibt , die vertikal skaliert. Sie können mit einem Prozessor und 1 GB RAM beginnen und schrittweise auf mehrere Dutzend Prozessoren und 1 TB RAM wachsen. VictoriaMetrics kann all diese Ressourcen nutzen. Ihre Leistung wird im Vergleich zu einem Ein-Kern-System etwa hundertmal steigen.

Die Geschichte von Thanos begann im November 2017, als der erste öffentliche Commit erschien. Vorher wurde Thanos intern bei .

entwickelt. Im Juni 2019 gab es das markante Release 0.5.0, in dem Protokoll entfernt wurde. Es wurde aus Thanos entfernt, weil es sich nicht bewährt hatte. Oft funktionierte der Thanos-Cluster nicht richtig, und die Knoten wurden aufgrund des Gossip-Protokolls falsch verbunden. Daher wurde beschlossen, es zu entfernen. Ich halte dies für eine richtige Entscheidung.

Im selben Juni 2019 reichten sie die Anfrage Nummer in .

ein und nach ein paar Monaten wurde Thanos in die , die auch Prometheus, Kubernetes und andere beliebte Projekte umfasst, aufgenommen.

Die Entwicklung von VictoriaMetrics begann im Januar 2018.

Im September 2018 erwähnte ich VictoriaMetrics erstmals öffentlich.

Im Dezember 2018 wurde die Einzelknoten-Version veröffentlicht.

Im Mai 2019 Im Juni 2019 reichten wir, wie Thanos, unsere Anfrage bei der CNCF-Stiftung unter der Nummer

ein. Wir reichten die Anfrage einen Tag früher ein als Thanos. Aber leider wurden wir bisher noch nicht aufgenommen. Die Community benötigt Unterstützung.

Lassen Sie uns die wichtigsten Folien betrachten, die die Architektur von Thanos und VictoriaMetrics zeigen.

Beginnen wir mit Thanos. Die gelben Komponenten sind die Komponenten von Prometheus. Alles andere sind die Komponenten von Thanos. Beginnen wir mit der wichtigsten Komponente. Thanos Sidecar ist eine Komponente, die neben jedem Prometheus installiert wird. Sie kümmert sich darum, die Prometheus-Daten aus dem lokalen Speicher in S3 oder in einen anderen Object Storage zu laden.

Lassen Sie uns mit Thanos beginnen. Die gelben Komponenten sind die Komponenten von Prometheus. Alles andere sind die Komponenten von Thanos. Beginnen wir mit der wichtigsten Komponente. Thanos Sidecar ist die Komponente, die neben jedem Prometheus installiert wird. Sie kümmert sich darum, dass die Daten von Prometheus aus dem lokalen Speicher in S3 oder einen anderen Object Storage geladen werden.
Es gibt auch eine Komponente namens Thanos Store Gateway, die in der Lage ist, diese Daten aus dem Object Storage bei eingehenden Anfragen von Thanos Query zu lesen. Thanos Query implementiert PromQL und das Prometheus API. Das heißt, nach außen hin sieht er aus wie Prometheus. Er nimmt PromQL-Anfragen entgegen, sendet sie an Thanos Store Gateway, das die benötigten Daten aus dem Object Storage abruft und sie zurückschickt.
Aber in unserem Object Storage werden die Daten der letzten zwei Stunden aufgrund der Besonderheit der Implementierung von Thanos Sidecar gespeichert, der die letzten zwei Stunden nicht in den Object Storage S3 hochladen kann, da für diese beiden Stunden Prometheus noch keine Dateien im lokalen Speicher erstellt hat.
Wie wurde das umgangen? Thanos Query sendet neben den Anfragen an Thanos Store Gateway parallel Anfragen an jeden Thanos Sidecar, der sich in der Nähe von Prometheus befindet.
Der Thanos Sidecar leitet die Anfragen seinerseits an Prometheus weiter und holt die Daten der letzten zwei Stunden ab.
Neben diesen Komponenten gibt es eine optionale Komponente, ohne die Thanos nicht gut funktionieren kann. Das ist Thanos Compact, das die Zusammenführung kleiner Dateien im Object Storage zu größeren Dateien, die von den Thanos Sidecars hochgeladen wurden, übernimmt. Thanos Sidecar lädt Dateien mit Daten der letzten zwei Stunden hoch. Wenn diese Dateien nicht zu größeren zusammengeführt werden, könnte ihre Anzahl erheblich ansteigen. Je mehr solcher Dateien, desto mehr Speicher wird für Thanos Store Gateway benötigt, desto mehr Ressourcen sind für die Datenübertragung über das Netzwerk und für Metadaten erforderlich. Die Arbeit des Thanos Store Gateway wird ineffizient. Daher sollte Thanos Compact unbedingt gestartet werden, um kleine Dateien in größere zusammenzuführen, damit die Anzahl dieser Dateien reduziert wird und um den Overhead für Thanos Store Gateway zu verringern.
Es gibt auch eine Komponente namens Thanos Ruler. Sie führt die Alerting-Regeln von Prometheus aus und kann die Recording-Regeln von Prometheus berechnen, um die Daten wieder in den Object Storage zu speichern. Aber es wird nicht empfohlen, diese Komponente zu verwenden, da sie .
Das ist das einfache Schema von Thanos.

Jetzt vergleichen wir es mit dem Schema von VictoriaMetrics.
VictoriaMetrics gibt es in 2 Versionen: Single-Node und Cluster-Version. Single-Node läuft auf einem Computer. In der Single-Node gibt es diese Komponenten nicht, nur ein Binärprogramm. Dieses Binärprogramm sieht auf der Folie wie dieses Quadrat aus. Alles, was sich innerhalb des Quadrats befindet, ist der Inhalt der Binärdatei für die Single-Node-Version. Sie müssen es nicht unbedingt wissen. Sie starten einfach das Binärprogramm und schon funktioniert alles.
Die Cluster-Version ist komplexer. Sie besteht aus drei verschiedenen Komponenten: vmselect, vminsert und vmstorage. Aus ihren Namen sollte ersichtlich sein, was jede von ihnen macht. Die Insert-Komponente nimmt Daten in verschiedenen Formaten entgegen: über die Prometheus Remote Write API, das Influx Line Protokoll, das Graphite Protokoll und das OpenTSDB Protokoll. Die Insert-Komponente empfängt, parst und verteilt sie an die vorhandenen Storage-Komponenten, wo die Daten dann gespeichert werden. , sowie die Prometheus Querying API, und sie kann als Ersatz für Prometheus in Grafana oder anderen Prometheus API-Clients verwendet werden. Select empfängt PromQL-Anfragen, analysiert sie, liest die notwendigen Daten zur Ausführung dieser Anfragen aus den Storage-Knoten, verarbeitet diese Daten und gibt die Antwort zurück.

Lassen Sie uns die Installationskomplexität von Thanos und VictoriaMetrics vergleichen.

Beginnen wir mit Thanos. Bevor Sie mit Thanos arbeiten können, müssen Sie einen Bucket im Object Storage erstellen, wie S3 oder GCS, damit der Thanos Sidecar dort Daten speichern kann.

Dann muss für jeden Prometheus der Thanos Sidecar installiert werden. Vergessen Sie nicht, die Datenkompression in Prometheus zu deaktivieren. Die Datenkompression komprimiert periodisch die Daten im lokalen Storage von Prometheus, um den Ressourcenverbrauch zu verringern.
Wenn Sie Thanos Sidecar zu Ihren Prometheus-Instanzen installieren, müssen Sie diese Datenkompression deaktivieren, da der Thanos Sidecar nicht richtig funktioniert, wenn die Datenkompression aktiviert ist. Dies bedeutet, dass Ihr Prometheus beginnt, Daten in zwei-Stunden-Blöcken zu speichern und aufhört, diese Blöcke in größere zusammenzuführen. Dementsprechend werden Abfragen, die die Dauer der letzten zwei Stunden überschreiten, nicht so effizient sein, verglichen mit dem, wie sie funktionieren könnten, wenn die Datenkompression aktiviert wäre.

Daher empfiehlt Thanos, die Aufbewahrungszeit der Daten im lokalen Storage auf 6-8 Stunden zu reduzieren, um den Overhead einer großen Anzahl kleiner Blöcke zu verringern.
Nachdem Sie den Thanos Sidecar installiert haben, müssen Sie für jeden Object Storage Bucket zwei Komponenten installieren. Dies sind Thanos Compactor und Thanos Store Gateway.

Anschließend müssen Sie Thanos Query installieren und konfigurieren, damit es sich mit allen Thanos Store Gateways verbindet, die Sie haben, sowie mit allen Thanos Sidecar.
Es könnte hier ein kleines Problem geben.

Sie müssen eine zuverlässige und sichere Verbindung von Thanos Query zu diesen Komponenten einrichten. Und wenn sich Ihre Prometheus-Instanzen in verschiedenen Rechenzentren oder in unterschiedlichen VPCs befinden, sind Verbindungen von außen verboten. Aber um Thanos Query zum Laufen zu bringen, müssen Sie eine Möglichkeit finden, eine Verbindung zu diesen herzustellen.
Wenn Sie viele solcher Rechenzentren haben, verringert sich entsprechend die Zuverlässigkeit des gesamten Systems. Thanos Query muss ständig Verbindungen zu allen Thanos Sidecars in den verschiedenen Rechenzentren halten. Bei jeder eingehenden Anfrage wird es Anfragen an alle Thanos Sidecars senden. Wenn die Verbindung unterbrochen wird, erhalten Sie entweder einen unvollständigen Datensatz oder die Antwort "Cluster funktioniert nicht".

Bei VictoriaMetrics ist alles etwas einfacher. Für die Single-Node-Version reicht es aus, ein einziges Binary zu starten und schon funktioniert alles.

Für die Cluster-Version reicht es aus, alle oben genannten drei Typen von Komponenten in jeder benötigten Anzahl zu starten oder ein Komponentenautomatisierungstool in Kubernetes zu verwenden. Wir planen auch, einen Kubernetes-Operator zu erstellen. Das Helm-Chart deckt einige Anwendungsfälle nicht ab und kann Ihnen in die Quere kommen. Zum Beispiel erlaubt es Ihnen, die Anzahl der Storage-Nodes zu reduzieren, was zu Datenverlust führen kann.

Nachdem Sie ein Binary oder die Cluster-Version gestartet haben, müssen Sie lediglich die Konfiguration von Prometheus hinzufügen. , damit es beginnt, Daten parallel im lokalen Storage und im Remote Storage zu schreiben. Wie Sie bemerkt haben, sollte eine solche Konfiguration erheblich zuverlässiger funktionieren als die Thanos-Konfiguration. Wir müssen keine Verbindung von VictoriaMetrics zu allen Prometheus-Instanzen halten, da diese sich selbst mit VictoriaMetrics verbinden und Daten übertragen.

Betrachten wir die Unterstützung von Thanos und VictoriaMetrics.

Thanos muss den Sidecar überwachen, damit dieser nicht aufhört, Daten in den Object Storage hochzuladen. Er kann diesen Upload aufgrund von Fehlermeldungen unterbrechen, beispielsweise wenn Sie vorübergehend die Netzwerkverbindung zum Object Storage verloren haben oder der Object Storage vorübergehend nicht verfügbar ist. Thanos Sidecar wird dies zu diesem Zeitpunkt bemerken, eine Fehlermeldung ausgeben, möglicherweise abstürzen und danach aufhören zu arbeiten. Wenn Sie ihn nicht überwachen, werden keine Daten mehr an den Object Storage übertragen. Wenn die Retentionszeit verstrichen ist (empfohlen 6-8 Stunden), verlieren Sie Daten, die nicht in den Object Storage gelangt sind.

Thanos-Compactor können aufgrund von aufhören zu arbeiten. Compactor nehmen Daten aus dem Object Storage und fassen sie zu größeren Datenmengen zusammen. Da die Compactor nicht mit den Sidecar synchronisiert sind, kann Folgendes passieren: Der Sidecar hat den Block noch nicht vollständig geschrieben, der Compactor geht jedoch davon aus, dass dieser Block vollständig geschrieben ist. Der Compactor beginnt, ihn zu lesen. Er liest den Block nicht in vollständiger Form und hört dann auf zu arbeiten. Siehe Details. .

Der Store Gateway kann inkonsistente Daten zurückgeben, aufgrund von Rennbedingungen zwischen dem Compactor und den Sidecar. Hier gilt dasselbe, da der Store Gateway nicht mit den Compactor und Sidecar synchronisiert ist. Infolgedessen können Rennbedingungen entstehen, bei denen der Store Gateway einen Teil der Daten nicht sieht oder zusätzliche Daten erkennt.

Die Abfrage-Komponente in Thanos gibt standardmäßig ein teilweise Ergebnis zurück, wenn einige Sidecar oder der Store Gateway derzeit nicht verfügbar sind. Sie erhalten einen Teil der Daten und werden sogar nicht wissen, dass Sie nicht alle Daten erhalten haben. So funktioniert es standardmäßig. In einer ähnlichen Situation gibt VictoriaMetrics markierte Daten als teilweise zurück.

Im Gegensatz zu Thanos verliert VictoriaMetrics selten Daten. Selbst wenn die Verbindung von Prometheus zu VictoriaMetrics unterbrochen wird, ist das kein Problem, da Prometheus weiterhin neue eingehende Daten im Write Ahead Log speichert, dessen Umfang zwei Stunden beträgt. Wenn Sie die Verbindung zu VictoriaMetrics innerhalb von zwei Stunden wiederherstellen, gehen keine Daten verloren. Prometheus .

Im Gegensatz zu Thanos, das Daten erst nach zwei Stunden im Object Storage speichert, repliziert Prometheus Daten automatisch über das Remote Write-Protokoll im Remote Storage, wie VictoriaMetrics. Der Verlust des lokalen Speichers in Prometheus bereitet Ihnen keine Sorgen. Sollte der lokale Speicher plötzlich verloren gehen, verlieren Sie im schlimmsten Fall nur die letzten Sekunden an Daten, die nicht rechtzeitig im Remote Storage gespeichert wurden.

Kubernetes verwaltet den Cluster automatisch, im Gegensatz zu Thanos. Es ist schwierig, alle Komponenten von Thanos in einem einzigen Kubernetes-Cluster unterzubringen, im Gegensatz zu den Clusterkomponenten von VictoriaMetrics.

VictoriaMetrics bietet ein sehr einfaches Upgrade auf die neue Version. Sie stoppen einfach VictoriaMetrics, aktualisieren die Binärdateien und starten es neu. Bei einem Stopp durch das SIGINT-Signal führen alle Binärdateien von VictoriaMetrics einen Graceful Shutdown durch. Sie speichern die erforderlichen Daten korrekt, schließen die eingehenden Verbindungen ordnungsgemäß, um nichts zu verlieren. Daher verlieren Sie bei einem Upgrade nichts.

Bei VictoriaMetrics ist es sehr einfach, den Cluster zu erweitern. Sie fügen einfach die erforderlichen Komponenten hinzu und arbeiten weiter.

Zu den Fallstricken in Thanos und VictoriaMetrics.

Thanos hat folgende Fallstricke. Prometheus muss Daten für die letzten zwei Stunden speichern. Wenn sie verloren gehen, verlieren Sie sie vollständig, da sie noch nicht im Object Storage, wie S3, gespeichert wurden.

Das Store Gateway und der Compactor benötigen möglicherweise viel Speicher, um mit großem Object Storage zu arbeiten, wenn viele kleine Dateien darin gespeichert sind. Je mehr Dateien und je größer ihr Volumen sind, desto mehr Arbeitsspeicher benötigt das Store Gateway und der Compactor zur Speicherung von Metainformationen. Thanos hat viele Probleme in Bezug auf die .

Thanos wird mit dem Versprechen beworben, dass er unendlich skalieren kann, basierend auf der Anzahl Ihrer Prometheus. In Wirklichkeit ist das nicht wahr. Da alle Anfragen über die Query-Komponente laufen, die alle Store Gateway-Komponenten und alle Sidecar-Komponenten parallel abfragen muss, um Daten abzurufen und sie dann vorzuverarbeiten. Offensichtlich ist die Geschwindigkeit von Anfragen durch das langsamste Glied, sei es das langsamste Store Gateway oder das langsamste Sidecar, begrenzt.
Diese Komponenten können ungleichmäßig belastet sein. Zum Beispiel haben Sie ein Prometheus, das Millionen von Metriken pro Sekunde sammelt. Und es gibt Prometheus, das Tausende von Metriken pro Sekunde sammelt. Das Prometheus, das Millionen von Metriken pro Sekunde sammelt, belastet den Server, auf dem es läuft, viel stärker. Dementsprechend arbeitet der Sidecar dort langsamer. Und im Allgemeinen funktioniert alles dort langsam. Und die Abfrage-Komponente wird sehr langsam Daten daraus abrufen. Somit wird die Leistung Ihres gesamten Clusters durch diesen langsamen Sidecar limitiert.

Standardmäßig liefert Thanos teilweise Daten, wenn einige Sidecars und/oder Store Gateways nicht verfügbar sind. Wenn Ihre Sidecars beispielsweise über die ganze Welt in verschiedenen Rechenzentren verteilt sind, steigt die Wahrscheinlichkeit für Verbindungsabbrüche und die Nichterreichbarkeit von Komponenten erheblich. Dementsprechend werden Sie in den meisten Fällen teilweise Daten erhalten, ohne es zu wissen.

Auch VictoriaMetrics hat seine Tücken. Die erste Tücke ist die Option, die den Speicherverbrauch für den Cache von VictoriaMetrics begrenzt. Standardmäßig beträgt dieser 60 % des Arbeitsspeichers auf der Maschine, auf der VictoriaMetrics ausgeführt wird, oder 60 % des RAM des VictoriaMetrics-Pods in Kubernetes.
Wenn Sie diesen Wert falsch ändern, können Sie die Leistung von VictoriaMetrics ruinieren. Wenn Sie beispielsweise einen zu niedrigen Wert setzen, können die Daten im Cache von VictoriaMetrics nicht mehr gespeichert werden. Das zwingt ihn dazu, zusätzliche Arbeiten zu verrichten und die CPU zusammen mit der Festplatte zu belasten. Wenn Sie diesen Wert zu hoch setzen, erhöht sich erstens die Wahrscheinlichkeit, dass VictoriaMetrics mit einem "Out of Memory"-Fehler abstürzt, und zweitens bleibt dem Betriebssystem sehr wenig Arbeitsspeicher für den Dateicache. VictoriaMetrics ist auf den Dateicache für die Leistung angewiesen. Wenn nicht genügend vorhanden ist, kann die Festplattenlast erheblich steigen. Daher der Rat: Ändern Sie die Einstellung nur im äußersten Notfall.

Die zweite Option ist der retentionPeriod — der Zeitraum, der standardmäßig auf 1 Monat eingestellt ist. Dies ist der Zeitraum, während dem VictoriaMetrics Daten speichert. Nach Ablauf dieser Zeit löscht VictoriaMetrics die Daten.
Viele starten VictoriaMetrics ohne diesen Parameter und schreiben einen Monat lang Daten. Und dann fragen sie: Warum sind die Daten vom letzten Monat verschwunden? Weil der retentionPeriod standardmäßig 1 Monat beträgt. Daher ist es wichtig, den richtigen retentionPeriod zu kennen und einzustellen.

Lassen Sie uns die einzigartigen Möglichkeiten durchgehen.

Thanos hat eine Funktion namens Downsampling: 5-Minuten- und Stundenintervalle, die oft . Wenn man danach googelt und die Issues auf GitHub ansieht, gibt es viele Probleme im Zusammenhang mit diesem Downsampling, dass es manchmal nicht richtig funktioniert oder nicht so, wie die Benutzer es erwarten.

Thanos hat eine Deduplication-Funktion für Prometheus HA-Paare. Wenn zwei Prometheus-Instanzen die gleichen Metriken von denselben Targets sammeln und Thanos sie im Object Storage zusammenführt. Thanos kann diese Daten korrekt deduplizieren, im Gegensatz zu VictoriaMetrics.

Thanos hat eine Alert-Komponente, die auf dem Thanos-Schema basiert. Aber es wird .

Ein Vorteil von Thanos ist, dass der Code von Thanos und Prometheus identisch ist. Thanos und Prometheus wurden von denselben Entwicklern erstellt. Bei Verbesserungen in Thanos profitiert auch Prometheus.

Das Hauptmerkmal von VictoriaMetrics ist MetricsQL. Dies ist eine Erweiterung von VictoriaMetrics für PromQL, über die ich beim letzten großen Monitoring-Meeting gesprochen habe.

VictoriaMetrics unterstützt das Einfüllen von Daten über viele verschiedene Protokolle. VictoriaMetrics kann nicht nur Daten von Prometheus empfangen, sondern auch über die Protokolle Influx, OpenTSDB und Graphite.

Daten von VictoriaMetrics benötigen normalerweise viel weniger Speicherplatz im Vergleich zu Thanos und Prometheus.
Wenn reale Daten aufgezeichnet werden, berichten die Benutzer von einer 2- bis 5-fachen Reduzierung der Datenmenge auf der Festplatte im Vergleich zu Prometheus und Thanos.

Ein weiterer Vorteil von VictoriaMetrics ist, dass sie auf Geschwindigkeit optimiert ist.

Lassen Sie uns über die Kosten der Infrastruktur sprechen.

Ein Vorteil von Thanos ist, dass er Daten im Object Storage speichert, der vergleichsweise günstig ist.
Beim Speichern von Daten im Object Storage müssen Sie die Schreib- und Lesevorgänge bezahlen (10 USD pro Million Vorgänge). Wenn Sie Daten in den Object Storage schreiben, zahlen Sie die Kosten Ihres Hostings für das Hochladen von Daten ins Internet, es sei denn, Ihr Cluster befindet sich in AWS – dort ist es kostenlos. Wenn Sie Daten abrufen, bezahlen Sie zwischen 10 und 230 USD pro 1 TB. Das kann erheblich sein, wenn Sie häufig historische Daten aus dem Thanos-Cluster anfordern.

Für den Thanos-Cluster müssen Server für die Komponenten Compact, Store Gateway und Query bezahlt werden, die viel Speicher und CPU für große Datenmengen benötigen.

Die Kosten für VictoriaMetrics sind wie folgt. Wenn Daten auf GCE HDD-Laufwerken gespeichert werden, belaufen sich die Kosten auf 40 $ pro 1 TB. Für VictoriaMetrics sind gewöhnliche HDDs ausreichend, es sind keine SSDs erforderlich, die fünfmal teurer sind. VictoriaMetrics ist für HDDs optimiert.

Für VictoriaMetrics werden Server für die Komponenten benötigt: entweder Single-Node oder für clusterfähige Komponenten, die im Gegensatz zu Thanos-Komponenten viel weniger CPU und RAM benötigen – was entsprechend günstiger ist.

Beispiele für Implementierungen.

Ein Beispiel für die Implementierung von Thanos ist Gitlab. Gitlab läuft vollständig auf Thanos. Doch alles ist nicht so reibungslos. Wenn man sich ihre , ansieht, kann man feststellen, dass sie ständig auf irgendwelche stoßen: Es fehlt an Speicher für die Store Gateway- oder Query-Komponenten. Sie müssen ständig den Speicher erhöhen.
Deshalb steigen die Kosten zur Lösung dieser Probleme.
Die zweite Implementierung, die erfolgreicher sein könnte, ist das Unternehmen Improbable, das mit der Entwicklung von Thanos begonnen hat. Sie haben den Quellcode von Thanos veröffentlicht. Improbable ist ein Unternehmen, das sich mit der Entwicklung von Spiel-Engines beschäftigt.

Öffentliche Beispiele für die Implementierung von VictoriaMetrics sind:
- wix.com, ein Website-Builder
- Adidas implementiert VictoriaMetrics und hielt sogar einen Vortrag auf der letzten PromCon 2019
- TrafficStars – Ad-Netzwerk
- Seznam.cz – eine beliebte tschechische Suchmaschine.
Und dann gab es einige No-Name-Unternehmen, die ich jetzt nicht nennen kann. Sie haben nicht zugestimmt.
- Ein großer Spieleentwickler. Größer als Improbable.
- Ein großer Anbieter von Grafiksoftware.
- Eine große russische Bank.
- Ein europäischer Hersteller von Windkraftanlagen, der VictoriaMetrics erfolgreich getestet hat. Dieser Hersteller implementiert VictoriaMetrics zur Überwachung von Daten, die von Windkraftanlagen mit einer Geschwindigkeit von 50 Proben pro Sekunde pro Sensor erhalten werden. Jede Windkraftanlage hat mehrere Hundert Sensoren. Sie haben mehrere Hundert Windkraftanlagen.
- Die russischen Fluggesellschaften, die VictoriaMetrics einführen möchten, es aber einfach nicht schaffen. Wir befinden uns in der Vertragsphase mit ihnen.
Fazit.
VictoriaMetrics und Thanos lösen ähnliche Aufgaben, aber auf unterschiedliche Weise:
- Globale Abfrageansicht
- Horizontale Skalierung
- Willkürliche Aufbewahrung

Danke.
Wir freuen uns auf Ihr Kommen auf unserem .

Nur registrierte Benutzer können an der Umfrage teilnehmen. .
Was verwenden Sie als langfristigen Speicher für Prometheus?
35,3%Thanos6
0,0%Cortex0
0,0%M3DB0
41,2%VictoriaMetrics7
23,5%anderes4
17 Benutzer haben abgestimmt. 16 Benutzer haben sich enthalten.
Quelle: habr.com
