GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Eine Einführung in Prometheus-Metriken und Leistungsüberwachung

Wir werden Knospen und Blumen und Strahlen verflechten

Die am Rand des Brunnens funkeln und machen

Seltsame Kombinationen aus gewöhnlichen Dingen

"Prometheus Unbound" von Percy Bysshe Shelley

Willkommen in der Welt der Metrikerfassung und Leistungsüberwachung. Wie bei den meisten Dingen in der IT wurden ganze Marktsektoren aufgebaut, um diese Tools zu verkaufen. Und natürlich dienen mehrere Open-Source-Dienstprogramme demselben Zweck. Es ist eines dieser Open-Source-Tools, das wir untersuchen werden.

Was ist Prometheus?

Prometheus ist ein von SoundCloud entwickeltes und als Open Source veröffentlichtes Tool zur Erfassung und Benachrichtigung von Metriken. Prometheus ähnelt im Design dem Borgmon-Überwachungssystem von Google, und ein relativ bescheidenes System kann das Sammeln von Hunderttausenden von Metriken pro Sekunde bewältigen. Richtig abgestimmt und bereitgestellt, kann ein Prometheus-Cluster jede Sekunde Millionen von Metriken erfassen.

Prometheus besteht ungefähr aus vier Teilen:

  • Die Haupt-Prometheus-App selbst, die für das Scraping von Metriken, deren Speicherung in der Datenbank und (optional) deren Abruf bei Abfrage verantwortlich ist.
    • Das Datenbank-Backend ist eine interne Time Series-Datenbank. Diese Datenbank wird immer verwendet, aber Daten können auch an entfernte Speicher-Backends gesendet werden.
  • Exporter sind optionale externe Programme, die Daten aus einer Vielzahl von Quellen aufnehmen und in Metriken konvertieren, die Prometheus auslesen kann.
    • Exporter wurden speziell für die Arbeit mit bestimmten Anwendungen und Hardware entwickelt.
  • AlertManager ist ein Alarmverwaltungssystem, das mit Prometheus geliefert wird.
  • Client-Bibliotheken können verwendet werden, um benutzerdefinierte Anwendungen zu instrumentieren.

Ich sage "ungefähr" vier Teile, weil viele zusätzliche Anwendungen oft mit einem Standard-Prometheus-Cluster verwendet werden. Wenn Sie bessere Grafikfunktionen benötigen oder wünschen, können Anwendungen wie Grafana bereitgestellt werden. Wenn Sie Metriken über einen längeren Zeitraum speichern müssen, sind Remote-Storage-Backends eine Überlegung wert. Und die Liste geht weiter. Für diesen Artikel konzentrieren wir uns jedoch auf Prometheus selbst mit einem kleinen Abstecher zu Exporteuren.

[Das könnte Ihnen auch gefallen: 6 Sysadmin-Fähigkeiten, die Webentwickler brauchen]

Was ist eine Metrik?

Bevor wir dorthin gelangen, müssen wir verstehen, warum so etwas wie Prometheus existiert. Beginnen wir also mit einer Frage:Was sind Metriken? Einfach ausgedrückt messen Metriken etwas. Die Zeit, die Sie zum Lesen dieses Artikels benötigen, ist beispielsweise eine Metrik. Die Anzahl der Wörter ist eine Metrik. Die durchschnittliche Anzahl von Buchstaben in den Wörtern dieses Artikels ist eine Metrik.

Diese Metriken sind jedoch ziemlich statisch und nicht etwas, wofür Sie unbedingt ein System wie Prometheus benötigen würden. Prometheus zeichnet sich durch Metriken aus, die sich im Laufe der Zeit ändern. Was wäre zum Beispiel, wenn Sie wissen wollten, wie viele "Aufrufe" dieser Artikel erhält? Oder was wäre, wenn Sie wissen wollten, wie viel Datenverkehr in Ihr Netzwerk ein- und ausgeht? Oder wie viele Build- und Deployment-Zyklen finden pro Stunde statt? All dies sind Metriken, die in Prometheus eingegeben werden können.

Nachdem wir nun verstanden haben, was eine Metrik ist, schauen wir uns an, wie Prometheus die zu speichernden Metriken erhält. Das erste, was Prometheus braucht, ist ein Ziel . Ziele sind die Endpunkte, die die Metriken liefern, die Prometheus speichert. Bei diesen Endpunkten kann es sich um den tatsächlich überwachten Endpunkt oder um eine Middleware handeln, die als Exporter bezeichnet wird. Endpunkte können über eine statische Konfiguration bereitgestellt oder durch einen Prozess namens „Service Discovery“ „gefunden“ werden. Service Discovery ist ein fortgeschritteneres Thema für einen zukünftigen Artikel.

Sobald Prometheus über eine Liste von Endpunkten verfügt, kann es damit beginnen, Metriken von ihnen abzurufen. Prometheus ruft Metriken auf sehr einfache Weise ab; eine einfache HTTP-Anfrage. Die Konfiguration zeigt auf eine bestimmte Stelle auf dem Endpunkt, die einen Textstrom bereitstellt, der die Metrik und ihren aktuellen Wert identifiziert. Prometheus liest diesen Textstrom, ignoriert Zeilen, die mit einem # beginnen als Kommentare und speichert die empfangenen Metriken in einer lokalen Datenbank.

Ein kurzer Abstecher zu Exporteuren

Prometheus kann nur HTTP verwenden, um mit Endpunkten für die Erfassung von Metriken zu kommunizieren. Was passiert, wenn Sie versuchen, einen Router oder Switch zu überwachen, der nur über SNMP kommuniziert? Oder möchten Sie vielleicht einen Cloud-Dienst überwachen, der keinen nativen Prometheus-Metriken-Endpunkt hat? Glücklicherweise gibt es eine Lösung:Exporteure.

Exporteure gibt es in vielen Formen und Größen. Dies sind kleine, speziell entwickelte Programme, die zwischen Prometheus und allem stehen, was Sie überwachen möchten, das Prometheus nicht von Haus aus unterstützt. Einige Exporteure sitzen untätig, bis Prometheus sie nach Daten abfragt. In diesem Fall wendet sich der Exporteur an das überwachte Gerät, ruft die relevanten Daten ab und konvertiert sie in ein Format, das Prometheus aufnehmen kann. Andere Exporter fragen Geräte automatisch ab und speichern die Ergebnisse lokal zwischen, damit Prometheus sie später abrufen kann.

Unabhängig vom Design fungieren Exporter als Übersetzer zwischen Prometheus und Endpunkten, die Sie überwachen möchten. Wenn Sie versuchen, ein gängiges Gerät oder eine Anwendung zu überwachen, gibt es wahrscheinlich einen Exporter dafür.

Datenspeicherung

Prometheus verwendet im Backend einen speziellen Datenbanktyp, der als Zeitreihendatenbank bekannt ist. Einfach ausgedrückt ist diese Datenbank optimiert, um Daten, die als Werte organisiert sind, über einen bestimmten Zeitraum zu speichern und abzurufen. Messwerte sind ein hervorragendes Beispiel für die Art von Daten, die Sie in einer solchen Datenbank speichern würden.

Ein externer Speicher ist ebenfalls eine Option. Es gibt viele Möglichkeiten, wie Thanos, Cortex und VictoriaMetrics, die eine Vielzahl von Vorteilen bieten. Einer der Hauptvorteile ist die Zentralisierung der gesammelten Metriken und die Langzeitspeicherung. Tools wie Grafana können diese Speicherlösungen von Drittanbietern direkt abfragen.

Du hast also eine Reihe von Messwerten...

Nun, da Sie ein Experte für Prometheus sind und Metriken speichern, wie verwenden Sie diese Daten? Ähnlich wie eine SQL-Datenbank verfügt Prometheus über eine benutzerdefinierte Abfragesprache namens PromQL. PromQL ist ziemlich einfach für einfache Metriken, aber bei Bedarf sehr komplex. Wenn Sie den Namen einer Metrik angeben, werden alle „Instanzen“ dieser Metrik angezeigt:

Sie können auch einige PromQL-Methoden verwenden, um ein Diagramm zu erstellen, das die gesuchten Daten darstellt.

Wenn Sie es mit der grafischen Darstellung ernst meinen, lohnt es sich natürlich, sich ein Paket wie Grafana anzusehen. Mit Grafana können Sie Metrik-Dashboards erstellen, Warnungen senden und vieles mehr.

Warnung

Während Diagramme hübsch anzusehen sind, können Metriken einem anderen wichtigen Zweck dienen. Sie können verwendet werden, um Warnungen zu senden. Prometheus enthält eine separate Anwendung namens AlertManager, die diesem Zweck dient. AlertManager empfängt Benachrichtigungen von Prometheus und verarbeitet die gesamte erforderliche Logik zum Deduplizieren und Zustellen der Warnungen.

Warnungen werden erstellt, indem Warnungsregeln geschrieben werden. Diese Regeln sind einfach PromQL-Abfragen, die ausgelöst werden, wenn die Abfrage wahr ist. Das heißt, wenn Sie eine Abfrage haben, die prüft, ob die Temperatur auf der CPU über 80 °C liegt, wird die Abfrage für jede Metrik ausgelöst, die diese Bedingung erfüllt.

Warnungsregeln können auch einen Zeitraum enthalten, in dem eine Regel als wahr ausgewertet werden muss. Um unser Temperaturbeispiel zu erweitern, ist das Überschreiten von 80 ° C in Ordnung, wenn es sich um einen kurzen Zeitraum handelt, aber wenn es länger als fünf Minuten dauert, senden Sie eine Warnung. Benachrichtigungen können per E-Mail, Slack, Twitter, SMS und so ziemlich alles andere gesendet werden, wofür Sie eine Schnittstelle schreiben können.

[ Suchen Sie nach mehr Informationen zur Systemautomatisierung? Beginnen Sie mit The Automated Enterprise, einem kostenlosen Buch von Red Hat. ] 

Abschluss

Überwachung ist wichtig. Es hilft zu erkennen, wenn etwas schief gelaufen ist, und es kann zeigen, wenn etwas richtig läuft. Die richtige Überwachung kann in verschiedenen Disziplinen verwendet werden, um alles, was Sie können, aus dem überwachten Objekt herauszuholen.

Prometheus ist ein leistungsstarkes Open-Source-Metrikpaket. Es ist hochgradig skalierbar, robust und extrem schnell. Ein einziger moderner Server kann verwendet werden, um eine Million Metriken oder mehr pro Sekunde zu überwachen. Durch die Verteilung von Prometheus-Servern können jede Sekunde viele zehn und sogar Hunderte Millionen von Metriken überwacht werden.

PromQL bietet eine robuste Abfragesprache, die sowohl für die grafische Darstellung als auch für die Alarmierung verwendet werden kann. Das integrierte Grafiksystem eignet sich hervorragend für schnelle Visualisierungen, aber längerfristige Dashboards sollten in externen Anwendungen wie Grafana gehandhabt werden.


Linux
  1. MySQL – Leistungsoptimierung und -optimierung

  2. Installieren und verwenden Sie das Collectl Performance Monitoring Tool unter Ubuntu 18.04 LTS

  3. Eine Einführung in die Überwachung von Linux-Benutzerkonten

  4. Speicherüberwachung und -verwaltung

  5. Top 25 der besten Linux-Leistungsüberwachungs- und Debugging-Tools

4 CLI-basierte Linux-Leistungsüberwachungstools:top, htop, ps und vmstat

Installieren Sie das NetData Performance Monitoring Tool unter Linux

Eine Einführung in Hashing und Prüfsummen in Linux

Eine Einführung in Firewalld-Regeln und -Szenarien

Verwendung von Grafana &Prometheus Kubernetes Cluster Monitoring

Einführung in die Linux-Leistungsüberwachung und -optimierung