{"id":81888,"date":"2020-05-17T13:42:23","date_gmt":"2020-05-17T11:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus"},"modified":"2020-05-17T13:42:23","modified_gmt":"2020-05-17T11:42:23","slug":"thanos-masshtabiruemyj-prometheus","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","title":{"rendered":"Thanos \u2013 skalierbares Prometheus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Die \u00dcbersetzung des Artikels wurde speziell f\u00fcr die Studierenden des Kurses erstellt <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">\u201eDevOps-Praktiken und -Werkzeuge\u201c<\/a><\/noindex>.<\/i><\/b><\/p>\n<p>\n<i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/fabxc\">Fabian Reinartz<\/a><\/noindex> \u2014 Softwareentwickler, Go-Fan und Liebhaber komplexer Aufgaben. Er ist auch Maintainer von Prometheus und Mitbegr\u00fcnder der Kubernetes SIG Instrumentation. Zuvor war er Production Engineer bei SoundCloud und leitete das Monitoring-Team bei CoreOS. Derzeit arbeitet er bei Google.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Bplotka\">Bartek Plotka<\/a><\/noindex> \u2014 Infrastruktur-Ingenieur bei Improbable. Er interessiert sich f\u00fcr neue Technologien und Probleme verteilter Systeme. Er hat Erfahrung in der Low-Level-Programmierung bei Intel, war Contributor bei Mesos und hat globale SRE-Produktions-Erfahrung bei Improbable. Er arbeitet daran, die Welt der Mikrodienste zu verbessern. Seine drei Leidenschaften: Golang, Open Source und Volleyball.<\/i><\/p>\n<p>Wenn Sie sich unser Flaggschiff-Produkt SpatialOS ansehen, k\u00f6nnen Sie erraten, dass Improbable eine hochdynamische Cloud-Infrastruktur globalen Ma\u00dfstabs mit Dutzenden von Kubernetes-Clustern ben\u00f6tigt. Wir geh\u00f6rten zu den Ersten, die ein Monitoring-System einsetzten <noindex><a rel=\"nofollow\" href=\"https:\/\/prometheus.io\/\">Prometheus<\/a><\/noindex>. Prometheus kann Millionen von Metriken in Echtzeit \u00fcberwachen und wird mit einer leistungsstarken Abfragesprache geliefert, die es erm\u00f6glicht, notwendige Informationen abzurufen.<\/p>\n<p>Die Einfachheit und Zuverl\u00e4ssigkeit von Prometheus ist eines seiner Hauptvorteile. Doch bei einer bestimmten Skalierung sind wir auf einige Nachteile gesto\u00dfen. Um diese Probleme zu l\u00f6sen, haben wir <noindex><a rel=\"nofollow\" href=\"https:\/\/thanos.io\/\">Thanos<\/a><\/noindex> \u2014 ein Open-Source-Projekt, das von Improbable erstellt wurde, um bestehende Prometheus-Cluster nahtlos in ein einheitliches \u00dcberwachungssystem mit unbegrenzter historischer Datenspeicherung zu transformieren. Thanos ist auf Github verf\u00fcgbar. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\">hier<\/a><\/noindex>.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/gdk.improbable.io\/l\/169082\/2020-01-10\/2j9yxq\">Bleiben Sie auf dem Laufenden \u00fcber die neuesten Nachrichten von Improbable.<\/a><\/noindex><\/p>\n<h2>Unsere Ziele mit Thanos<\/h2>\n<p>\nBei einer bestimmten Skalierung treten Probleme auf, die \u00fcber die M\u00f6glichkeiten von Vanilla Prometheus hinausgehen. Wie speichert man Petabytes historischer Daten zuverl\u00e4ssig und kosteng\u00fcnstig? Ist dies m\u00f6glich, ohne die Antwortzeiten zu beeintr\u00e4chtigen? Kann man auf alle Metriken, die auf verschiedenen Prometheus-Servern liegen, mit einer einzigen API-Anfrage zugreifen? Ist es m\u00f6glich, replizierte Daten, die mit Prometheus HA gesammelt wurden, irgendwie zu kombinieren?<\/p>\n<p>Um diese Fragen zu beantworten, haben wir Thanos entwickelt. In den folgenden Abschnitten wird beschrieben, wie wir an die L\u00f6sung dieser Fragen herangegangen sind, und die Ziele erkl\u00e4rt, die wir verfolgt haben.<\/p>\n<h4>Datenanfragen von mehreren Instanzen von Prometheus (globale Abfrage)<\/h4>\n<p>\nPrometheus bietet einen funktionalen Ansatz f\u00fcr das Sharding an. Selbst ein einzelner Prometheus-Server gew\u00e4hrleistet eine ausreichende Skalierbarkeit, um die Nutzer von den Komplikationen des horizontalen Shardings in nahezu allen Anwendungsf\u00e4llen zu befreien.<\/p>\n<p>Obwohl dies ein hervorragendes Bereitstellungsmodell ist, wird h\u00e4ufig der Zugriff auf Daten von verschiedenen Prometheus-Servern \u00fcber eine einheitliche API oder UI \u2013 global view \u2013 ben\u00f6tigt. Nat\u00fcrlich ist es m\u00f6glich, mehrere Abfragen in einem Grafana-Dashboard anzuzeigen, aber jede Abfrage kann nur auf einen Prometheus-Server ausgef\u00fchrt werden. Andererseits k\u00f6nnen Sie mit Thanos Daten von mehreren Prometheus-Servern abfragen und aggregieren, da sie alle \u00fcber einen einzigen Endpunkt zug\u00e4nglich sind.<\/p>\n<p>Fr\u00fcher haben wir zur Erzielung einer globalen Ansicht bei Improbable unsere Prometheus-Instanzen in eine mehrstufige <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/prometheus\/blob\/master\/docs\/federation.md#hierarchical-federation\">Hierarchische F\u00f6deration<\/a><\/noindex>Das bedeutete die Erstellung eines Meta-Servers f\u00fcr Prometheus, der einen Teil der Metriken von jedem \"Blatt\"-Server sammelt.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2013 skalierbares Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/82590f017734f5dc1038a0e13f772d2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDieser Ansatz erwies sich als problematisch. Er f\u00fchrte zu einer komplizierten Konfiguration, zu einer zus\u00e4tzlichen potenziellen Fehlerquelle und zur Anwendung komplexer Regeln, um der f\u00f6derierten Endstelle nur die ben\u00f6tigten Daten bereitzustellen. Dar\u00fcber hinaus erm\u00f6glicht diese Art der F\u00f6deration keine echte globale Ansicht, da nicht alle Daten \u00fcber eine einzige API-Anfrage abgerufen werden k\u00f6nnen.<\/p>\n<p>Hierzu geh\u00f6rt auch die einheitliche Darstellung von Daten, die auf hochverf\u00fcgbaren (high-availability, HA) Prometheus-Servern gesammelt werden. Das HA-Modell von Prometheus sammelt Daten unabh\u00e4ngig zweimal, was so einfach ist, dass es nicht einfacher sein k\u00f6nnte. Es w\u00e4re jedoch viel praktischer, eine kombinierte und deduplizierte Ansicht beider Datenstr\u00f6me zu verwenden.<\/p>\n<p>Nat\u00fcrlich gibt es in hochverf\u00fcgbaren Prometheus-Servern einen Bedarf. Bei Improbable nehmen wir die Daten\u00fcberwachung im Minutentakt sehr ernst, aber das Vorhandensein einer einzigen Prometheus-Instanz pro Cluster stellt einen einzelnen Fehlerpunkt dar. Jede Konfigurationsfehler oder jedes Hardwareversagen k\u00f6nnte potenziell zum Verlust wichtiger Daten f\u00fchren. Selbst eine einfache Bereitstellung kann zu geringf\u00fcgigen Ausf\u00e4llen beim Metrik-Sammeln f\u00fchren, da ein Neustart deutlich l\u00e4nger als das Scraping-Intervall dauern kann.<\/p>\n<h4>Zuverl\u00e4ssige Speicherung historischer Daten<\/h4>\n<p>\nEine kosteng\u00fcnstige, schnelle und langfristige Speicherung von Metriken ist unser Traum (den die meisten Benutzer von Prometheus teilen). Bei Improbable waren wir gezwungen, die Speicherdauer der Metriken auf neun Tage (f\u00fcr Prometheus 1.8) einzustellen. Das bringt offensichtliche Einschr\u00e4nkungen mit sich, wie weit wir in der Vergangenheit schauen k\u00f6nnen.<\/p>\n<p>Prometheus 2.0 ist in dieser Hinsicht besser geworden, da die Anzahl der Zeitreihen die Gesamtleistung des Servers nicht mehr beeinflusst (siehe <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=nDalewt4BOw\">KubeCon-Keynote \u00fcber Prometheus 2<\/a><\/noindex>). Dennoch speichert Prometheus Daten auf der lokalen Festplatte. Obwohl eine hochgradig effiziente Datenkompression den Einsatz von lokalem SSD-Speicher erheblich reduzieren kann, gibt es letztendlich trotzdem eine Grenze f\u00fcr die Menge der gespeicherten historischen Daten.<\/p>\n<p>Au\u00dferdem k\u00fcmmern wir uns bei Improbable um Zuverl\u00e4ssigkeit, Einfachheit und Kosten. Gro\u00dfe lokale Festplatten sind schwieriger zu betreiben und zu sichern. Sie sind teurer und erfordern mehr Werkzeuge f\u00fcr die Datensicherung, was zu \u00fcberm\u00e4\u00dfiger Komplexit\u00e4t f\u00fchrt.<\/p>\n<h4>Herunterstufen<\/h4>\n<p>\nSobald wir begannen, mit historischen Daten zu arbeiten, erkannten wir, dass es grundlegende Herausforderungen mit der O-Notation gibt, die Abfragen immer langsamer macht, wenn wir mit Daten \u00fcber Wochen, Monate und Jahre arbeiten.<\/p>\n<p>Eine standardm\u00e4\u00dfige L\u00f6sung f\u00fcr dieses Problem w\u00e4re <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Decimation_(signal_processing)\">Herunterstufen<\/a><\/noindex> (Downsampling) \u2014 die Reduzierung der Abtastrate eines Signals. Durch die Verringerung der Abtastrate k\u00f6nnen wir \"skalieren\", um einen gr\u00f6\u00dferen Zeitraum abzudecken und die gleiche Anzahl von Abtastungen beizubehalten, was die Reaktionsf\u00e4higkeit der Abfragen verbessert.<\/p>\n<p>Das Herunterstufen alter Daten ist eine unerl\u00e4ssliche Anforderung jeder L\u00f6sung f\u00fcr die langfristige Speicherung und geht \u00fcber das herk\u00f6mmliche Prometheus hinaus.<\/p>\n<h4>Zus\u00e4tzliche Ziele<\/h4>\n<p>\nEines der urspr\u00fcnglichen Ziele des Thanos-Projekts war die nahtlose Integration mit bestehenden Prometheus-Installationen. Das zweite Ziel war die einfache Bedienung mit einer minimalen Einstiegsh\u00fcrde. Alle Abh\u00e4ngigkeiten sollten sowohl f\u00fcr kleine als auch gro\u00dfe Nutzer leicht erf\u00fcllbar sein, was auch eine geringe Grundgeb\u00fchr impliziert.<\/p>\n<h2>Architektur von Thanos<\/h2>\n<p>\nNachdem wir in dem vorherigen Abschnitt unsere Ziele aufgelistet haben, lassen Sie uns daran arbeiten und sehen, wie Thanos diese Herausforderungen angeht.<\/p>\n<h4>Globale Ansicht<\/h4>\n<p>\nUm eine globale Ansicht \u00fcber bestehende Instanzen von Prometheus zu erhalten, m\u00fcssen wir einen einheitlichen Einstiegspunkt f\u00fcr Anfragen mit allen Servern verbinden. Genau das macht die Komponente Thanos. <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2015\/06\/the-distributed-system-toolkit-patterns#example-1-sidecar-containers\">Sidecar<\/a><\/noindex>. Es wird neben jedem Prometheus-Server bereitgestellt und fungiert als Proxy, der lokale Daten von Prometheus \u00fcber die gRPC-Schnittstelle des Store API bereitstellt, was die Auswahl von Zeitreihendaten nach Labels und Zeitbereich erm\u00f6glicht.<\/p>\n<p>Auf der anderen Seite befindet sich die horizontal skalierbare, zustandslose Komponente Querier, die etwas mehr tut, als nur auf PromQL-Anfragen \u00fcber die standardm\u00e4\u00dfige Prometheus HTTP API zu antworten. Die Komponenten Querier, Sidecar und andere Thanos interagieren \u00fcber <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Gossip_protocol\">das Gossip-Protokoll.<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2013 skalierbares Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/fbcf1e756f5da4e8529f17abd4cedd00.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>Der Querier verbindet sich bei Erhalt einer Anfrage mit dem entsprechenden Server des Store API, also mit unseren Sidecars, und erh\u00e4lt die Zeitreihendaten von den entsprechenden Prometheus-Servern.<\/li>\n<li>Anschlie\u00dfend kombiniert er die Antworten und f\u00fchrt die PromQL-Anfrage aus. Der Querier kann sowohl nicht \u00fcberlappende Daten als auch duplizierte Daten von HA-Servern von Prometheus zusammenf\u00fchren.<\/li>\n<\/ol>\n<p>\nDas l\u00f6st den gr\u00f6\u00dften Teil unseres R\u00e4tsels \u2014 die Zusammenf\u00fchrung von Daten von isolierten Prometheus-Servern in eine einheitliche Ansicht. Tats\u00e4chlich kann Thanos nur f\u00fcr diese Funktionalit\u00e4t genutzt werden. Es sind keine \u00c4nderungen an den bestehenden Prometheus-Servern erforderlich!<\/p>\n<h4>Unbegrenzte Speicherfrist!<\/h4>\n<p>\nAllerdings werden wir fr\u00fcher oder sp\u00e4ter die Daten speichern wollen, die \u00fcber die \u00fcbliche Speicherfrist von Prometheus hinausgehen. F\u00fcr die Speicherung von historischen Daten haben wir ein Objektspeicher gew\u00e4hlt. Dieser ist in jeder Cloud sowie in lokalen Rechenzentren weit verbreitet und \u00e4u\u00dferst kosteng\u00fcnstig. Zudem ist praktisch jeder Objektspeicher \u00fcber die gut bekannte S3 API zug\u00e4nglich.<\/p>\n<p>Prometheus schreibt Daten aus dem Arbeitsspeicher ungef\u00e4hr alle zwei Stunden auf die Festplatte. Ein Block der gespeicherten Daten enth\u00e4lt alle Daten f\u00fcr einen festen Zeitraum und ist unver\u00e4nderlich. Das ist sehr praktisch, da Thanos Sidecar einfach das Verzeichnis der Prometheus-Daten durchsuchen kann und, w\u00e4hrend neue Bl\u00f6cke erscheinen, diese in die Buckets des Objektspeichers l\u00e4dt.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2013 skalierbares Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/2be803d8d7e0ce9a5ffa441b7778a40b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Laden in den Objektspeicher direkt nach dem Schreiben auf die Festplatte erm\u00f6glicht es auch, die Einfachheit des \u201eScrapers\u201c (Prometheus und Thanos Sidecar) zu bewahren. Dies vereinfacht die Wartung, die Kosten und das Design des Systems.<\/p>\n<p>Wie Sie sehen, erfolgt die Datensicherung sehr einfach. Aber wie sieht es mit dem Abruf von Daten aus dem Objektspeicher aus?<\/p>\n<p>Die Thanos Store-Komponente fungiert als Proxy zum Abrufen von Daten aus dem Objektspeicher. Wie Thanos Sidecar ist sie Teil eines Gossip-Clusters und implementiert die Store-API. So k\u00f6nnen bestehende Querier sie als Sidecar betrachten, als eine weitere Quelle f\u00fcr Zeitreihendaten \u2013 es sind keine speziellen Konfigurationen erforderlich.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2013 skalierbares Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/5a437ae1bf8a6f79b8d24aeb9dde2d17.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Bl\u00f6cke der Zeitreihendaten bestehen aus mehreren gro\u00dfen Dateien. Das Herunterladen auf Anfrage w\u00e4re ziemlich ineffizient, und die lokale Zwischenspeicherung w\u00fcrde enorme Speicher- und Festplattenspeicher erfordern.<\/p>\n<p>Stattdessen wei\u00df das Store Gateway, wie man mit dem Speicherformat von Prometheus umgeht. Dank eines intelligenten Abfrageplaners und der Zwischenspeicherung nur der ben\u00f6tigten Indexteile der Bl\u00f6cke ist es m\u00f6glich, komplexe Abfragen auf ein Minimum an HTTP-Anfragen an die Dateien des Objektspeichers zu reduzieren. Damit k\u00f6nnen die Anfragen um vier bis sechs Gr\u00f6\u00dfenordnungen reduziert und eine Antwortzeit erreicht werden, die insgesamt schwer von der Abfrage von Daten auf einem lokalen SSD zu unterscheiden ist.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2013 skalierbares Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/ebcbe1ee16dbac18daa474e7cb4b12b2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWie in der obigen Grafik gezeigt, senkt Thanos Querier die Kosten f\u00fcr eine einzelne Anfrage an Daten im Objektspeicher erheblich, indem es das Speicherformat von Prometheus verwendet und verwandte Daten nahe beieinander anordnet. Mit diesem Ansatz k\u00f6nnen wir viele einzelne Anfragen in eine minimale Anzahl von Bulk-Operationen zusammenfassen.<\/p>\n<h4>Kompaktierung und Heruntersampling<\/h4>\n<p>\nNachdem ein neuer Block von Zeitreihendaten erfolgreich in den Objektspeicher geladen wurde, betrachten wir ihn als \u201ehistorische\u201c Daten, die sofort \u00fcber das Store Gateway verf\u00fcgbar sind.<\/p>\n<p>Nach einiger Zeit sammeln sich jedoch Bl\u00f6cke aus einer Quelle (Prometheus mit Sidecar) an und nutzen nicht mehr das volle Potenzial der Indizierung. Um dieses Problem zu l\u00f6sen, haben wir eine weitere Komponente namens Compactor eingef\u00fchrt. Diese wendet einfach den lokalen Kompaktierungsmechanismus von Prometheus auf die historischen Daten im Objektspeicher an und kann als einfaches, regelm\u00e4\u00dfiges Batch-Job ausgef\u00fchrt werden.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2013 skalierbares Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/c7dd83dab074a4c5f93069a4bc152342.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDank einer effektiven Komprimierung stellt eine Abfrage an das Repository \u00fcber einen l\u00e4ngeren Zeitraum kein Problem in Bezug auf die Datengr\u00f6\u00dfe dar. Allerdings wird die potenzielle Kosten f\u00fcr das Entpacken von einer Milliarde Werten und deren Verarbeitung durch den Query-Handler unweigerlich zu einer signifikanten Erh\u00f6hung der Ausf\u00fchrungszeit der Abfrage f\u00fchren. Auf der anderen Seite, da auf jeden Bildschirmpixel Hunderte von Datenpunkten entfallen, wird es unm\u00f6glich, die Daten in voller Aufl\u00f6sung zu visualisieren. Daher ist Downsamping nicht nur m\u00f6glich, sondern f\u00fchrt auch nicht zu einem sp\u00fcrbaren Verlust an Genauigkeit. <\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2013 skalierbares Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/5f36a05aba3fbffa905b6a8da482ab3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00fcr das Downsamping von Daten aggregiert der Compactor kontinuierlich Daten mit einer Aufl\u00f6sung von f\u00fcnf Minuten und einer Stunde. F\u00fcr jedes unverarbeitete Fragment, das mit der TSDB-XOR-Komprimierung codiert wurde, werden verschiedene Arten von aggregierten Daten gespeichert, wie z.B. min, max oder sum f\u00fcr einen Block. Dies erm\u00f6glicht es dem Querier, automatisch das Aggregat auszuw\u00e4hlen, das f\u00fcr die jeweilige PromQL-Abfrage geeignet ist. <\/p>\n<p>Um Daten mit reduzierter Genauigkeit zu verwenden, ben\u00f6tigt der Benutzer keine spezielle Konfiguration. Der Querier wechselt automatisch zwischen verschiedenen Aufl\u00f6sungen und unverarbeiteten Daten, wenn der Benutzer herein- oder herauszoomt. Wenn gew\u00fcnscht, kann der Benutzer dies direkt \u00fcber den Parameter \"step\" in der Abfrage steuern. <\/p>\n<p>Da die Speicherkosten f\u00fcr ein GB gering sind, speichert Thanos standardm\u00e4\u00dfig die Rohdaten, die Daten mit einer Aufl\u00f6sung von f\u00fcnf Minuten und einer Stunde. Es besteht keine Notwendigkeit, die Rohdaten zu l\u00f6schen.<\/p>\n<h2>Recording-Regeln<\/h2>\n<p>\nSelbst mit Thanos sind Recording-Regeln ein wesentlicher Bestandteil des Monitoring-Stacks. Sie reduzieren die Komplexit\u00e4t, die Latenz und die Kosten von Abfragen. Au\u00dferdem sind sie f\u00fcr Benutzer n\u00fctzlich, um aggregierte Daten zu Metriken zu erhalten. Thanos basiert auf einem Vanilla-Prometheus-Setup, daher ist es durchaus zul\u00e4ssig, Recording-Regeln und Alerting-Regeln auf einem bestehenden Prometheus-Server zu speichern. In einigen F\u00e4llen k\u00f6nnte dies jedoch unzureichend sein:<\/p>\n<ul>\n<li>Globale Alerts und Regeln (z.B. Benachrichtigung, wenn der Dienst auf mehr als zwei von drei Clustern nicht funktioniert).<\/li>\n<li>Regel f\u00fcr Daten au\u00dferhalb des lokalen Speichers.<\/li>\n<li>Das Bestreben, alle Regeln und Alerts an einem Ort zu speichern.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Thanos \u2013 skalierbares Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/ab48e044b952bd891932b99e248120fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00fcr all diese F\u00e4lle enth\u00e4lt Thanos eine separate Komponente, die Ruler genannt wird, die Regel und Alarm \u00fcber Thanos-Abfragen berechnet. Durch Bereitstellung der gut bekannten StoreAPI kann der Query-Knoten auf frische, berechnete Metriken zugreifen. Sp\u00e4ter werden diese auch im Objektspeicher gespeichert und sind \u00fcber das Store Gateway verf\u00fcgbar.<\/p>\n<h2>Die Macht von Thanos<\/h2>\n<p>\nThanos ist flexibel genug, um an Ihre Anforderungen angepasst zu werden. Dies ist besonders n\u00fctzlich beim Migrieren von einem einfachen Prometheus. Lassen Sie uns schnell an einem kleinen Beispiel erinnern, was wir \u00fcber die Komponenten von Thanos gelernt haben. So \u00fcbertragen Sie Ihr Vanilla-Prometheus in die Welt der \"unbegrenzten Metrikspeicherung\":<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2013 skalierbares Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/f6ee4185af57d2a1869890014e6a0062.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>F\u00fcgen Sie Thanos Sidecar zu Ihren Prometheus-Servern hinzu \u2013 zum Beispiel als benachbarter Container in einem Kubernetes-Pod.<\/li>\n<li>Stellen Sie mehrere Thanos Querier-Replikate bereit, um Daten anzuzeigen. Zu diesem Zeitpunkt ist es einfach, Gossip zwischen Scraper und Querier einzurichten. Zur \u00dcberpr\u00fcfung der Interaktion zwischen den Komponenten verwenden Sie die Metrik 'thanos_cluster_members'.<\/li>\n<\/ol>\n<p>\nDiese beiden Schritte reichen aus, um eine globale Ansicht und nahtlose Deduplication der Daten von potenziellen HA-Replikaten von Prometheus zu gew\u00e4hrleisten! Schlie\u00dfen Sie einfach Ihre Dashboards an den HTTP-Endpunkt des Queriers an oder verwenden Sie die Thanos UI direkt.<\/p>\n<p>Wenn Sie jedoch eine Sicherung der Metriken und langfristige Speicherung ben\u00f6tigen, m\u00fcssen noch drei weitere Schritte durchgef\u00fchrt werden:<\/p>\n<ol>\n<li>Erstellen Sie einen AWS S3- oder GCS-Bucket. Richten Sie Sidecar so ein, dass es Daten in diese Buckets kopiert. Jetzt k\u00f6nnen die lokalen Datenspeicherungen minimiert werden.<\/li>\n<li>Implementieren Sie das Store Gateway und verbinden Sie es mit einem bestehenden Gossip-Cluster. Jetzt k\u00f6nnen Sie Anfragen an die in den Backups gespeicherten Daten senden!<\/li>\n<li>Setzen Sie den Compactor ein, um die Effizienz der Abfragen f\u00fcr l\u00e4ngere Zeitr\u00e4ume zu steigern, indem Sie Verdichtung und Downsampling verwenden.<\/li>\n<\/ol>\n<p>\nWenn Sie mehr erfahren m\u00f6chten, schauen Sie sich gerne unsere an <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\/tree\/master\/kube\">Beispiele f\u00fcr Kubernetes-Manifest<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\/blob\/master\/docs\/getting-started.md\">Erste Schritte<\/a><\/noindex>!<\/p>\n<p>In nur f\u00fcnf Schritten haben wir Prometheus in ein zuverl\u00e4ssiges \u00dcberwachungssystem mit globaler Ansicht, unbegrenzter Speicherung und potenzieller hoher Verf\u00fcgbarkeit von Metriken verwandelt.<\/p>\n<h3>Pull-Request: Wir brauchen Sie!<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\">Thanos<\/a><\/noindex> Von Anfang an war es ein Open-Source-Projekt. Die nahtlose Integration mit Prometheus und die F\u00e4higkeit, nur einen Teil von Thanos zu verwenden, machen es zu einer ausgezeichneten Wahl f\u00fcr die Skalierung des \u00dcberwachungssystems ohne gro\u00dfen Aufwand.<\/p>\n<p>Wir freuen uns immer \u00fcber GitHub Pull Requests und Issues. Z\u00f6gern Sie nicht, uns \u00fcber GitHub Issues oder Slack zu kontaktieren.<noindex><a rel=\"nofollow\" href=\"https:\/\/join.slack.com\/t\/improbable-eng\/shared_invite\/enQtMzQ1ODcyMzQ5MjM4LWY5ZWZmNGM2ODc5MmViNmQ3ZTA3ZTY3NzQwOTBlMTkzZmIxZTIxODk0OWU3YjZhNWVlNDU3MDlkZGViZjhkMjc\"> Improbable-eng #thanos<\/a><\/noindex>, wenn Sie Fragen oder Anmerkungen haben oder Ihre Erfahrungen mit uns teilen m\u00f6chten! Wenn Ihnen gef\u00e4llt, was wir bei Improbable tun, z\u00f6gern Sie nicht, uns zu kontaktieren \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/improbable.io\/careers\/\">wir haben immer offene Stellen.<\/a><\/noindex>!<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">Weitere Informationen zum Kurs.<br \/>\n<\/a><\/noindex><\/p>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/502122\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb. \u0424\u0430\u0431\u0438\u0430\u043d \u0420\u0435\u0439\u043d\u0430\u0440\u0446 (Fabian Reinartz) \u2014 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0444\u0430\u043d\u0430\u0442 Go \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u043c\u044d\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Prometheus \u0438 \u0441\u043e\u0443\u0447\u0440\u0435\u0434\u0438\u0442\u0435\u043b\u044c Kubernetes SIG instrumentation. \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043e\u043d \u0431\u044b\u043b production-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0432 SoundCloud \u0438 \u0432\u043e\u0437\u0433\u043b\u0430\u0432\u043b\u044f\u043b \u0433\u0440\u0443\u043f\u043f\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0432 CoreOS. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Google. \u0411\u0430\u0440\u0442\u0435\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":81889,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-81888","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Thanos \u2014 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439 Prometheus | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-17T11:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-17T11:42:23+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Thanos \u2014 skalierbarer Prometheus | ProHoster","description":"Die \u00dcbersetzung des Artikels wurde speziell f\u00fcr die Studierenden des Kurses \u201eDevOps Praktiken und Werkzeuge\u201c erstellt.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Thanos \u2014 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439 Prometheus | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-17T11:42:23+00:00","article:modified_time":"2020-05-17T11:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"81888","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:48:24","updated":"2022-09-30 01:06:17","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/81888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=81888"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/81888\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/81889"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=81888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=81888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=81888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}