Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Hallo zusammen. Unten ist die Entschlüsselung Bericht vom Big Monitoring Meetup 4.

Prometheus – ein System zur Überwachung verschiedener Systeme und Dienste, mit dessen Hilfe Systemadministratoren Informationen über die aktuellen Parameter von Systemen sammeln und Alarme einrichten können, um Benachrichtigungen über Abweichungen im Systembetrieb zu erhalten.

Der Bericht wird vergleichen Thanos и VictoriaMetrics — Projekte zur Langzeitspeicherung von Prometheus-Metriken.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Lassen Sie mich zunächst etwas über Prometheus erzählen. Hierbei handelt es sich um ein Überwachungssystem, das Metriken von bestimmten Zielen sammelt und sie im lokalen Speicher speichert. Prometheus kann Metriken in den Remote-Speicher schreiben, Warnungen generieren und Regeln aufzeichnen.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Prometheus-Einschränkungen:

  • Es gibt keine globale Abfrageansicht. Dies ist der Fall, wenn Sie über mehrere unabhängige Prometheus-Instanzen verfügen. Sie sammeln Kennzahlen. Und Sie möchten zusätzlich zu all diesen Metriken, die von verschiedenen Prometheus-Instanzen gesammelt wurden, eine Abfrage durchführen. Prometheus lässt dies nicht zu.
  • Bei Prometheus ist die Leistung auf nur einen Server beschränkt. Prometheus kann nicht automatisch auf mehrere Server skaliert werden. Sie können Ihre Ziele nur manuell auf mehrere Prometheus aufteilen.
  • Der Umfang der Metriken in Prometheus ist aus dem gleichen Grund auf nur einen Server beschränkt, weil eine automatische Skalierung auf mehrere Server nicht möglich ist.
  • In Prometheus ist es nicht so einfach, die Sicherheit von Daten zu organisieren.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Lösungen für diese Probleme/Aufgaben?

Lösungen sind:

Alle diese Lösungen dienen der Fernspeicherung der von Prometheus erfassten Daten. Sie lösen das Remote-Speicherproblem aus der vorherigen Folie auf unterschiedliche Weise. In dieser Präsentation werde ich nur auf die ersten beiden Lösungen eingehen: Thanos и VictoriaMetrics.

Zum ersten Mal Informationen über Thanos war zusehen auf Link. Die Architektur wird beschrieben Thanos und wie es funktioniert.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

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

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Somit bietet Thanos eine globale Abfrageansicht. Sie können im Objektspeicher gespeicherte Daten von mehreren Prometheus-Instanzen abfragen.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Thanos unterstützt PromQL und Prometheus-Abfrage-API.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Thanos verwendet Prometheus-Code zum Speichern von Daten.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Thanos wird von denselben Entwicklern wie Prometheus entwickelt.

Про VictoriaMetrics. Hierher Linkwo wir zum ersten Mal darüber gesprochen haben VictoriaMetrics.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

VictoriaMetrics erhält Daten von mehreren Prometheus Remote-Schreib-API Protokoll, das von Prometheus unterstützt wird.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

VictoriaMetrics bietet eine globale Abfrageansicht, da mehrere Prometheus-Instanzen Daten in ein einzelnes VictoriaMetrics schreiben können. Dementsprechend können Sie alle diese Daten abfragen.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

VictoriaMetrics unterstützt auch Abfrage-APIs wie Thanos, PromQL und Prometheus.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

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

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

VictoriaMetrics skaliert im Gegensatz zu Thanos sowohl vertikal als auch horizontal. Essen Single-Node-Version, die vertikal skaliert. Sie können mit einem Prozessor und 1 GB Arbeitsspeicher beginnen und auf Hunderte von Prozessoren und 1 TB Arbeitsspeicher aufstocken. VictoriaMetrics weiß, wie man all diese Ressourcen nutzt. Seine Leistung erhöht sich im Vergleich zu einem 100-Core-System um etwa das Hundertfache.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Die Geschichte von Thanos begann im November 2017, als der erste öffentliche Commit erschien. Zuvor wurde Thanos intern entwickelt unwahrscheinlich.io.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Im Juni 2019 gab es eine bahnbrechende Version 0.5.0, in der entfernt Klatsch Protokoll. Er wurde von Thanos entfernt, weil er keine guten Leistungen erbrachte. Oft funktionierte der Thanos-Cluster nicht richtig, Knoten waren aufgrund des Klatschprotokolls falsch mit ihm verbunden. Deshalb haben wir beschlossen, es von dort zu entfernen. Ich glaube, das ist die richtige Entscheidung.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Im selben Juni 2019 schickten sie eine Bewerbungsnummer 256 в Cloud Native Computing Foundation.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Und nach ein paar Monaten wurde Thanos aufgenommen Cloud Native Computing Foundation, zu dem Prometheus, Kubernetes und andere beliebte Projekte gehören.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Im Januar 2018 begann die Entwicklung von VictoriaMetrics.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Im September 2018 habe ich VictoriaMetrics erstmals öffentlich erwähnt.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Im Dezember 2018 wurde die Single-Node-Version veröffentlicht.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

In 2019 wurden veröffentlicht Quellen sowohl der Single-Node- als auch der Cluster-Version.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Im Juni 2019 reichten wir, genau wie Thanos, einen Antrag bei der CNCF-Stiftung unter der Nummer ein 255. Wir haben uns einen Tag vor der Bewerbung von Thanos beworben.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Aber leider wurden wir dort immer noch nicht aufgenommen. Gemeinschaftshilfe erforderlich.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Betrachten Sie die wichtigsten Folien, die die Architektur von Thanos und VictoriaMetrics zeigen.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Beginnen wir mit Thanos. Die gelben Komponenten sind Prometheus-Komponenten. Alles andere sind Thanos-Komponenten. Beginnen wir mit der wichtigsten Komponente. Thanos Sidecar ist eine Komponente, die neben jedem Prometheus installiert ist. Es ist für das Laden von Prometheus-Daten vom lokalen Speicher in S3 oder einen anderen Objektspeicher verantwortlich.

Es gibt auch eine Komponente wie das Thanos Store Gateway, die diese Daten bei eingehenden Anfragen von Thanos Query aus dem Objektspeicher lesen kann. Thanos Query implementiert PromQL und Prometheus API. Das heißt, von außen sieht es aus wie Prometheus. Es akzeptiert PromQL-Anfragen, sendet sie an Thanos Store Gateway, Thanos Store Gateway holt sich die notwendigen Daten vom Object Storage und sendet sie zurück.

Aufgrund der Implementierung von Thanos Sidecar, das die letzten zwei Stunden nicht in Object Storage S3 hochladen kann, haben wir jedoch Daten ohne die letzten zwei Stunden im Objektspeicher gespeichert, da Prometheus für diese zwei Stunden noch keine Dateien im lokalen Speicher erstellt hat.

Wie haben Sie beschlossen, dies zu umgehen? Thanos Query sendet zusätzlich zu Anfragen an das Thanos Store Gateway parallele Anfragen an jeden Thanos Sidecar, der sich neben Prometheus befindet.

Und Thanos Sidecar wiederum leitet Anfragen weiter an Prometheus und ruft Daten für die letzten zwei Stunden ab.

Zusätzlich zu diesen Komponenten gibt es auch eine optionale Komponente, ohne die Thanos ein schlechtes Gewissen haben wird. Dies ist Thanos Compact, das kleine Dateien im Objektspeicher zu größeren Dateien zusammenführt, die von Thanos Sidecars hier hochgeladen wurden. Thanos Sidecar lädt dort zwei Stunden lang Datendateien hoch. Wenn diese Dateien nicht zu größeren Dateien zusammengeführt werden, kann ihre Anzahl sehr stark ansteigen. Je mehr solcher Dateien vorhanden sind, desto mehr Speicher wird für das Thanos Store Gateway benötigt und desto mehr Ressourcen werden für die Übertragung von Daten und Metadaten über das Netzwerk benötigt. Thanos Store Gateway wird ineffizient. Daher ist es notwendig, Thanos Compact auszuführen, das kleine Dateien zu größeren zusammenführt, damit weniger solcher Dateien vorhanden sind und der Overhead auf dem Thanos Store Gateway reduziert wird.

Es gibt auch eine Komponente wie Thanos Ruler. Es führt Prometheus-Warnungsregeln aus und kann Prometheus-Aufzeichnungsregeln berechnen, um Daten zurück in den Objektspeicher zu schreiben. Es wird jedoch nicht empfohlen, diese Komponente zu verwenden, weil. Er neigt dazu, unvollständige Daten zurückzugeben.

Hier ist ein einfaches Schema für Thanos.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Vergleichen wir nun mit dem VictoriaMetrics-Schema.

VictoriaMetrics hat zwei Versionen: Einzelknoten- und Cluster-Version. Single-Node läuft auf einem Computer. Single-Node verfügt nicht über diese Komponenten, sondern nur über eine Binärdatei. Diese Binärdatei auf der Folie sieht wie dieses Quadrat aus. Alles innerhalb des Quadrats ist der Inhalt der Binärdatei für die Single-Node-Version. Sie müssen nichts davon wissen. Führen Sie einfach die Binärdatei aus – und alles funktioniert für uns.

Die Cluster-Version ist schwieriger. Darin befinden sich drei verschiedene Komponenten: vmselect, vminsert und vmstorage. Aus ihrem Namen sollte klar hervorgehen, was jeder von ihnen tut. Die Insert-Komponente akzeptiert Daten in verschiedenen Formaten: von der Prometheus-Remote-Write-API, dem Influx-Line-Protokoll, dem Graphite-Protokoll und dem OpenTSDB-Protokoll. Die Insert-Komponente nimmt sie entgegen, analysiert sie und verteilt sie auf die vorhandenen Speicherkomponenten, in denen die Daten bereits gespeichert sind. Die Select-Komponente wiederum akzeptiert PromQL-Abfragen. Es setzt um PromQLsowie die Prometheus-Abfrage-API und kann als Ersatz für Prometheus in Grafana oder anderen Prometheus-API-Clients verwendet werden. Select nimmt eine PromQL-Anfrage entgegen, analysiert sie, liest die zur Ausführung dieser Anfrage erforderlichen Daten von den Speicherknoten, verarbeitet diese Daten und gibt eine Antwort zurück.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Vergleichen wir die Komplexität der Installation von Thanos und VictoriaMetrics.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Beginnen wir mit Thanos. Bevor Sie mit Thanos arbeiten, müssen Sie einen Bucket im Object Storage, z. B. S3 oder GCS, erstellen, damit Thanos Sidecar dort Daten schreiben kann.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Dann müssen Sie für jeden Prometheus Thanos Sidecar installieren. Zuvor müssen Sie daran denken, die Datenkomprimierung in Prometheus zu deaktivieren. Durch die Datenkomprimierung werden Daten im lokalen Prometheus-Speicher regelmäßig komprimiert, um den Ressourcenverbrauch zu reduzieren.

Wenn Sie Thanos Sidecar auf Ihrem Prometheus installieren, müssen Sie diese Datenkomprimierung deaktivieren, da Thanos Sidecar bei aktivierter Datenkomprimierung nicht ordnungsgemäß funktioniert. Das bedeutet, dass Ihr Prometheus beginnt, Daten in Blöcken von zwei Stunden zu speichern und diese Blöcke nicht mehr zu größeren Blöcken zusammenzuführen. Wenn Sie also Anfragen stellen, die die Dauer der letzten zwei Stunden überschreiten, werden diese nicht so effizient funktionieren, wie sie funktionieren könnten, wenn die Datenkomprimierung aktiviert wäre.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Daher empfiehlt Thanos, die Datenaufbewahrungszeit im lokalen Speicher auf 6–8 Stunden zu reduzieren, um diesen Overhead einer großen Anzahl kleiner Blöcke zu reduzieren.

Nachdem Sie Thanos Sidecar installiert haben, müssen Sie zwei Komponenten für jeden Object Storage Bucket installieren. Dies sind Thanos Compactor und Thanos Store Gateway.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Danach müssen Sie Thanos Query installieren und so konfigurieren, dass es eine Verbindung zu allen Thanos Store Gateways herstellen kann, die Sie haben, sowie eine Verbindung zu allen Thanos Sidecars herstellen kann.

Hier könnte es ein kleines Problem geben.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Sie müssen eine zuverlässige und sichere Verbindung von Thanos Query zu diesen Komponenten einrichten. Und wenn sich Prometheus'y in verschiedenen Rechenzentren oder in verschiedenen VPCs befindet, sind Verbindungen von außen zu ihnen verboten. Aber damit Thanos Query funktioniert, müssen Sie die Verbindung dort irgendwie konfigurieren und einen Weg finden.

Verfügt man über viele solcher Rechenzentren, sinkt entsprechend die Zuverlässigkeit des Gesamtsystems. Da Thanos Query ständig Verbindungen zu allen Thanos Sidecars aufrechterhalten muss, die sich in verschiedenen Rechenzentren befinden. Bei jeder eingehenden Anfrage werden Anfragen an alle Thanos Sidecars gesendet. Wenn die Verbindung unterbrochen wird, erhalten Sie entweder einen unvollständigen Datensatz oder die Antwort „Der Cluster funktioniert nicht“.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

In VictoriaMetrics sind die Dinge etwas einfacher. Für die Single-Node-Version führen Sie einfach eine Binärdatei aus und alles funktioniert.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

In der Cluster-Version reicht es aus, alle oben genannten drei Arten von Komponenten in beliebiger Menge auszuführen, die Sie benötigen oder verwenden Steuerkarte um den Start von Komponenten in Kubernetes zu automatisieren. Wir planen auch die Gründung eines Kubernetes-Operators. Die Helmtabelle deckt einige Fälle nicht ab und ermöglicht es Ihnen, Ihren Fuß zu schießen. Dadurch können Sie beispielsweise die Anzahl der Speicherknoten reduzieren, was zu Datenverlust führen würde.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Nachdem Sie eine binäre oder geclusterte Version gestartet haben, müssen Sie sie nur noch zur Prometheus-Konfiguration hinzufügen Einstellung für Remote-Schreib-URLsodass Daten parallel in den lokalen Speicher und den Remote-Speicher geschrieben werden. Wie Sie sehen, sollte diese Konfiguration viel zuverlässiger funktionieren als die Thanos-Konfiguration. Wir müssen keine Verbindung von VictoriaMetrics zu allen Prometheus-Geräten aufrechterhalten, da Prometheus-Geräte selbst eine Verbindung zu VictoriaMetrics herstellen und Daten übertragen.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Erwägen Sie die Unterstützung von Thanos und VictoriaMetrics.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Thanos muss Sidecar im Auge behalten, damit das Hochladen von Daten in Object Storage nicht aufhört. Sie können diesen Datendownload aufgrund von Downloadfehlern stoppen, z. B. weil Ihre Netzwerkverbindung zum Object Storage vorübergehend unterbrochen ist oder Object Storage vorübergehend nicht verfügbar ist. Thanos Sidecar wird dies an dieser Stelle bemerken, einen Fehler melden, möglicherweise abstürzen und dann nicht mehr funktionieren. Wenn Sie dies nicht überwachen, werden Ihre Daten nicht mehr in den Object Storage übertragen. Wenn die Aufbewahrungszeit abläuft (6–8 Stunden werden empfohlen), gehen Daten verloren, die nicht in den Objektspeicher gelangt sind.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Thanos-Verdichter funktionieren möglicherweise nicht mehr Rennen mit Sidecar. Kompaktoren nehmen Daten aus dem Objektspeicher und führen sie zu größeren Datenblöcken zusammen. Da die Compactoren nicht mit den Sidecars synchronisiert sind, kann Folgendes passieren: Der Sidecar hatte noch keine Zeit, den Block hinzuzufügen, der Compactor entscheidet, dass dieser Block vollständig geschrieben wurde. Compactor beginnt, es zu lesen. Der Block wird unvollständig gelesen und funktioniert nicht mehr. Siehe Einzelheiten hier.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Store Gateway kann aufgrund von Rennen zwischen Compactor und Sidecars inkonsistente Daten zurückgeben. Hier ist es dasselbe, da Store Gateway in keiner Weise mit Compactors und Sidecars synchronisiert ist. Dementsprechend kann es zu Race Conditions kommen, wenn das Store Gateway einen Teil der Daten nicht oder zusätzliche Daten sieht.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Die Abfragekomponente in Thanos gibt standardmäßig ein Teilergebnis zurück, wenn einige Sidecars oder Store Gateways derzeit nicht verfügbar sind. Sie erhalten einen Teil der Daten und wissen nicht einmal, dass Sie nicht alle Daten erhalten haben. So funktioniert es standardmäßig. In einer ähnlichen Situation gibt VictoriaMetrics gekennzeichnete Daten als teilweise zurück.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Im Gegensatz zu Thanos gehen bei VictoriaMetrics selten Daten verloren. Selbst wenn die Verbindung von Prometheus zu VictoriaMetrics unterbrochen wird, stellt dies kein Problem dar, da Prometheus eingehende neue Daten weiterhin in das 2 Stunden lange Write Ahead Log schreibt. Wenn Sie die Verbindung zu VictoriaMetrics innerhalb von zwei Stunden wiederherstellen, gehen die Daten nicht verloren. Prometheus kann Daten anhängen, nachdem die Verbindung zu VictoriaMetrics wiederhergestellt wurde.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Im Gegensatz zu Thanos, das Daten erst nach zwei Stunden in den Objektspeicher schreibt, repliziert Prometheus die Daten automatisch über ein Remote-Schreibprotokoll in einen Remote-Speicher wie VictoriaMetrics. Sie haben keine Angst vor dem Verlust des lokalen Speichers in Prometheus. Wenn er plötzlich den lokalen Speicher verliert, verlieren Sie im schlimmsten Fall die letzten Sekunden der Daten, die keine Zeit hatten, in den Remote-Speicher zu schreiben.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Kubernetes verwaltet den Cluster im Gegensatz zu Thanos automatisch. Im Gegensatz zu VictoriaMetrics-Clusterkomponenten ist es schwierig, alle Thanos-Komponenten in einem Kubernetes-Cluster zu platzieren.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

VictoriaMetrics bietet ein sehr einfaches Upgrade auf die neue Version. Stoppen Sie einfach VictoriaMetrics, aktualisieren Sie die Binärdateien und starten Sie. Wenn sie über ein SIGINT-Signal gestoppt werden, werden alle VictoriaMetrics-Binärdateien ordnungsgemäß heruntergefahren. Sie speichern die notwendigen Daten korrekt, schließen eingehende Verbindungen korrekt, um nichts zu verlieren. Sie verlieren also nichts, wenn Sie ein Upgrade durchführen.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

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

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Über Fallstricke in Thanos und VictoriaMetrics.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Thanos hat die folgenden Fallstricke. Prometheus sollte Daten der letzten zwei Stunden speichern. Wenn sie verloren gehen, verlieren Sie sie vollständig, da sie keine Zeit hatten, in Object Storage, z. B. S3, zu schreiben.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Die Store Gateway-Komponente und die Compactor-Komponente können bei der Verarbeitung großer Objektspeicher speicherintensiv sein, wenn dort viele kleine Dateien gespeichert sind. Je größer die Anzahl und Größe der Dateien ist, desto mehr RAM benötigen das Store Gateway und der Compactor zum Speichern von Metainformationen. Thanos hat viele Probleme mit dem, was Store Gateway und Compactor stürzen bei mittleren geschriebenen Datenmengen ab.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Es wird beworben, dass Thanos mit der Anzahl seiner Prometheus unbegrenzt skalieren kann. Eigentlich stimmt das nicht. Da alle Anfragen die Query-Komponente durchlaufen, die alle Store Gateway-Komponenten und alle Sidecar-Komponenten parallel abfragen muss, extrahieren Sie Daten von dort und verarbeiten Sie sie dann vor. Es ist offensichtlich, dass die Rate der Anfragen durch den langsamsten schwachen Link, das langsamste Store Gateway oder den langsamsten Sidecar begrenzt wird.

Diese Komponenten können ungleichmäßig belastet sein. Sie haben beispielsweise Prometheus, das Millionen von Messwerten pro Sekunde sammelt. Und es gibt Prometheus, das Tausende von Messwerten pro Sekunde sammelt. Prometheus, das Millionen von Messwerten pro Sekunde sammelt, belastet den Server, auf dem es läuft, deutlich stärker. Dementsprechend ist Sidecar dort langsamer. Und im Allgemeinen ist dort alles langsam. Und die Abfragekomponente ruft Daten sehr langsam von dort ab. Dementsprechend wird die Leistung Ihres gesamten Clusters durch dieses langsame Sidecar eingeschränkt.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Standardmäßig gibt Thanos Teildaten zurück, wenn einige Sidecars und eines der Store Gateways nicht verfügbar sind. Wenn Sie beispielsweise Sidecars über die ganze Welt in verschiedenen Rechenzentren verstreut haben, steigt die Wahrscheinlichkeit einer Unterbrechung und Nichtverfügbarkeit von Komponenten erheblich. Dementsprechend erhalten Sie in den meisten Fällen Teildaten, ohne es zu wissen.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

VictoriaMetrics hat auch Fallstricke. Der erste Fallstrick ist eine Option, die die für den VictoriaMetrics-Cache verwendete RAM-Menge begrenzt. Der Standardwert beträgt 60 % RAM auf dem Computer, auf dem VictoriaMetrics ausgeführt wird, oder 60 % RAM auf dem VictoriaMetrics-Pod in Kubernetes.

Wenn Sie diesen Wert falsch ändern, kann die Leistung von VictoriaMetrics beeinträchtigt werden. Wenn der Wert beispielsweise zu niedrig eingestellt ist, passen die Daten möglicherweise nicht mehr in den VictoriaMetrics-Cache. Aus diesem Grund muss sie zusätzliche Arbeit leisten und den Prozessor mit der Festplatte belasten. Wenn Sie diese Option zu groß einstellen, erhöht sich erstens die Wahrscheinlichkeit, dass VictoriaMetrics mit einem Fehler wegen unzureichendem Speicher abstürzt, und zweitens führt dies dazu, dass das Betriebssystem nur noch sehr wenig RAM für die Datei hat Zwischenspeicher. Und VictoriaMetrics verlässt sich für die Leistung auf den Dateicache. Reicht dies nicht aus, kann die Belastung der Festplatte stark ansteigen. Deshalb Rat: Ändern Sie den Parameter nur, wenn dies unbedingt erforderlich ist.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Zweite Option. Dieser Aufbewahrungszeitraum ist ein Zeitraum, der standardmäßig auf 1 Monat eingestellt ist. Dies ist der Zeitraum, in dem VictoriaMetrics die Daten speichert. Nach diesem Zeitraum löscht VictoriaMetrics die Daten.

Viele Leute führen VictoriaMetrics ohne diese Option aus und zeichnen Daten einen Monat lang auf. Und dann fragen sie: Warum sind die Daten für den Vormonat verschwunden? Weil der Standard-Aufbewahrungszeitraum 1 Monat beträgt. Daher müssen Sie den richtigen Aufbewahrungszeitraum kennen und festlegen.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Lassen Sie uns die einzigartigen Funktionen durchgehen.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Thanos verfügt über eine Funktion namens Downsampling: 5-Minuten- und Stundenintervalle, die häufig vorkommen nicht richtig funktionieren. Wenn Sie googeln und sich ihr Problem auf Github ansehen, gibt es viele Probleme im Zusammenhang mit diesem Downsampling, dass es manchmal nicht richtig oder nicht wie von Benutzern erwartet funktioniert.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Thanos bietet Datendeduplizierung für Prometheus HA-Paare. Wenn zwei Prometheus dieselben Metriken von denselben Zielen sammeln und Thanos sie zum Objektspeicher hinzufügt. Im Gegensatz zu VictoriaMetrics kann Thanos diese Daten ordnungsgemäß deduplizieren.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Thanos verfügt über eine Alarmkomponente, die im Thanos-Schaltplan enthalten war. Aber er nicht für den Einsatz in der Produktion empfohlen.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Thanos hat den Vorteil, dass Thanos und Prometheus den gleichen Code teilen. Thanos und Prometheus werden von denselben Entwicklern entwickelt. Mit Verbesserungen bei Thanos oder Prometheus gewinnt die andere Seite.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Die Hauptfunktion von VictoriaMetrics ist MetricsQL. Dies sind die VictoriaMetrics-Erweiterungen für PromQL, über die ich beim letzten großen Monitoring-Meeting gesprochen habe.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

VictoriaMetrics unterstützt das Hochladen von Daten mithilfe vieler verschiedener Protokolle. VictoriaMetrics kann nicht nur Daten von Prometheus empfangen, sondern auch über die Protokolle Influx, OpenTSDB und Graphite.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Die Daten von VictoriaMetrics nehmen viel weniger Platz ein als die von Thanos und Prometheus.

Beim Schreiben realer Daten sprechen Benutzer von einer zwei- bis fünffachen Reduzierung der Datengröße auf der Festplatte im Vergleich zu Prometheus und Thanos.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

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

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Lassen Sie uns die Kosten der Infrastruktur durchgehen.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Einer der Vorteile von Thanos besteht darin, dass es Daten im Objektspeicher speichert, was relativ günstig ist.

Wenn Sie Daten im Objektspeicher speichern, müssen Sie für Datenschreib- und Lesevorgänge bezahlen (10 US-Dollar pro Million Vorgänge). Wenn Sie Daten in den Objektspeicher schreiben, zahlen Sie Ihre Hosting-Kosten für das Hochladen von Daten ins Internet. Wenn sich Ihr Cluster nicht in AWS befindet, ist es dort kostenlos. Wenn Sie Daten lesen, zahlen Sie für 10 TB zwischen 230 und 1 US-Dollar. Dies kann von Bedeutung sein, wenn Sie häufig historische Daten vom Thanos-Cluster anfordern.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

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

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Für VictoriaMetrics fallen folgende Kosten an. Wenn Sie Daten auf GCE-Festplatten speichern, kommen 40 US-Dollar für 1 TB heraus. Für VictoriaMetrics genügen gewöhnliche HDD-Laufwerke, es werden keine SSDs benötigt, die das Fünffache kosten. VictoriaMetrics ist für HDD optimiert.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

VictoriaMetrics benötigt Server für Komponenten: entweder Single-Nod- oder Cluster-Komponenten, die im Gegensatz zu Thanos-Komponenten viel weniger CPU und RAM benötigen – bzw. günstiger sind.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Implementierungsbeispiele.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Für Thanos ist Gitlab das Implementierungsbeispiel. Gitlab läuft vollständig auf Thanos. Aber dort ist nicht alles so glatt. Wenn man sie anschaut Probleme, dann sieht man, dass sie ständig welche haben Betriebsprobleme mit Thanos: Nicht genügend Speicher für Store Gateway- oder Query-Komponenten. Sie müssen den Speicher ständig vergrößern.

Aus diesem Grund steigen die Kosten für die Lösung dieser Probleme.

Die zweite Implementierung, die möglicherweise erfolgreicher ist, ist Improbable, der mit der Entwicklung von Thanos begonnen hat. Sie haben die Thanos-Quelle veröffentlicht. Improbable ist ein Unternehmen, das Spiel-Engines entwickelt.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

VictoriaMetrics verfügt über öffentliche Implementierungsbeispiele:

  • Wix-Website-Builder
  • Adidas implementiert VictoriaMetrics und präsentierte sich sogar auf der letzten PromCon 2019
  • TrafficStars-Werbenetzwerk
  • Seznam.cz ist eine beliebte tschechische Suchmaschine.

Und dann gab es No-Name-Unternehmen, deren Namen ich jetzt nicht nennen kann. Sie waren anderer Meinung.

  • Ein großer Spieleentwickler. Größer als ich. Unwahrscheinlich.
  • Großer Entwickler von Grafiksoftware.
  • Große russische Bank.
  • Europäischer Windkraftanlagenhersteller, der VictoriaMetrics erfolgreich getestet hat. Dieser Hersteller implementiert VictoriaMetrics, um Windkraftanlagendaten mit einer Rate von 50 Abtastungen pro Sekunde und Sensor zu überwachen. Jede Windkraftanlage verfügt über mehrere hundert Sensoren. Sie haben mehrere hundert Windkraftanlagen.
  • Russische Fluggesellschaften, die VictoriaMetrics implementieren wollen, es aber immer noch nicht können. Wir befinden uns mit ihnen im Vertragsstadium.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetricsSchlussfolgerungen.

VictoriaMetrics und Thanos lösen ähnliche Probleme, jedoch auf unterschiedliche Weise:

  • Globale Abfrageansicht
  • horizontale Skalierung
  • willkürliche Aufbewahrung

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

Vielen Dank.

Wir erwarten Sie auf unserem Telegrammkanal.

Auswahl eines Datenspeichers für Prometheus: Thanos vs. VictoriaMetrics

An der Umfrage können nur registrierte Benutzer teilnehmen. Einloggenbitte.

Was nutzen Sie als Langzeitspeicher für Prometheus?

  • 35,3%Thanos6

  • 0,0%Cortex0

  • 0,0%M3DB0

  • 41,2%VictoriaMetrics7

  • 23,5%andere4

17 Benutzer haben abgestimmt. 16 Benutzer enthielten sich der Stimme.

Source: habr.com

Kommentar hinzufügen