Prometheus ist ein Open-Source-Überwachungssystem auf Metrikbasis. Es sammelt Daten von Diensten und Hosts, indem HTTP-Anforderungen an Metrikendpunkte gesendet werden. Anschließend werden die Ergebnisse in einer Zeitreihendatenbank gespeichert und für Analysen und Warnungen zur Verfügung gestellt.
Why monitor?
- Aktiviert Warnungen, wenn etwas schief geht, vorzugsweise bevor es schief geht. Damit sich jemand das ansehen kann.
- Es bietet Einblicke in die Analyse, das Debuggen und die Lösung des Problems.
- Es ermöglicht Ihnen, Trends / Änderungen im Laufe der Zeit zu sehen. Zum Beispiel, wie viele aktive Sitzungen zu einem bestimmten Zeitpunkt. Dies hilft bei Entwurfsentscheidungen und Kapazitätsplanung.
Die Überwachung bezieht sich normalerweise auf Ereignisse. Ein Ereignis kann das Empfangen einer HTTP-Anforderung, das Senden einer Antwort, das Lesen von der Festplatte und eine Benutzeranmeldung umfassen. Die Überwachung eines Systems kann Profilerstellung, Protokollierung, Nachverfolgung, Metriken, Alarmierung und Visualisierung umfassen.
Blackbox vs. Whitebox monitoring
Die Überwachung fällt unter zwei Hauptkategorien:
Blackbox-Überwachung
Bei der Blackbox-Überwachung erfolgt die Überwachung auf Anwendungs- oder Hostebene, da sie von außen beobachtet wird. Dies kann sehr einschränkend sein.
Whitebox-Überwachung
Whitebox-Überwachung bedeutet die Überwachung der Interna eines Dienstes. Es würde Daten über den Status und die Leistung der internen Komponenten verfügbar machen.
The four golden signals
Laut GoogleWenn Sie nur vier Metriken Ihres Benutzersystems messen können, konzentrieren Sie sich auf die folgenden vier, die als vier goldene Signale bezeichnet werden:
# 1. Latency
Die Zeit, die benötigt wird, um eine Anfrage zu bearbeiten - erfolgreich oder fehlgeschlagen. Es ist wichtig, nicht nur erfolgreiche, sondern auch fehlgeschlagene Anfragen zu verfolgen.
# 2. Traffic
Ein Maß dafür, wie viel Bedarf an Ihr System gestellt wird. Bei einem Webdienst sind dies normalerweise HTTP-Anforderungen pro Sekunde.
# 3. Fehler
Die Rate der fehlgeschlagenen Anforderungen.
# 4. Sättigung
Wie voll Ihr Service ist. Die Erhöhung der Latenz ist häufig ein wichtiger Indikator für die Sättigung. Viele Systeme verschlechtern ihre Leistung erheblich, bevor sie eine 100% ige Auslastung erreichen.
Prometheus metrics types
Es gibt vier Haupttypen von Prometheus-Metriken:
# 1. Zähler
Der Wert eines Zählers erhöht sich immer. Es kann niemals abnehmen, aber es kann auf Null zurückgesetzt werden. Wenn ein Scrape fehlschlägt, bedeutet dies nur einen fehlenden Datenpunkt. Die kumulierte Erhöhung wäre beim nächsten Lesen verfügbar. Beispiele:
- Gesamtzahl der empfangenen HTTP-Anforderungen
- Die Anzahl der Ausnahmen.
# 2. Messen
Ein Messgerät ist zu jedem Zeitpunkt eine Momentaufnahme. Es kann sowohl zunehmen als auch abnehmen. Wenn ein Datenabruf fehlschlägt, verlieren Sie ein Beispiel. Der nächste Abruf zeigt möglicherweise einen anderen Wert: Beispiele für Speicherplatz, Speichernutzung.
# 3. Histogramm
Ein Histogramm nimmt Beobachtungen auf und zählt sie in konfigurierbaren Eimern. Sie werden beispielsweise für Anforderungsdauer oder Antwortgrößen verwendet. Sie können beispielsweise die Anforderungsdauer für eine bestimmte HTTP-Anforderung messen. Das Histogramm enthält eine Reihe von Buckets, z. B. 1 ms, 10 ms und 25 ms. Anstatt jede Dauer für jede Anfrage zu speichern, speichert Prometheus die Häufigkeit von Anfragen, die in einen bestimmten Bucket fallen.
# 4. Zusammenfassung
Ähnlich wie bei Beobachtungen mit Histogrammproben werden normalerweise Dauer oder Antwortgrößen angefordert. Es liefert eine Gesamtzahl der Beobachtungen und eine Summe aller beobachteten Werte, sodass Sie den Durchschnitt der beobachteten Werte berechnen können. In einer Minute hatten Sie beispielsweise drei Anfragen, die 2,3,4 Sekunden dauerten. Die Summe wäre 9 und die Anzahl wäre 3. Die Latenz wäre 3 Sekunden.
Components of Prometheus ecosystem
Der Prometheus-Server
Sammelt Metriken, speichert sie und stellt sie für Abfragen zur Verfügung, sendet Warnungen basierend auf den gesammelten Metriken.
Kratzen
Prometheus ist ein Pull-basiertes System. Um Metriken abzurufen, sendet Prometheus eine HTTP-Anfrage, die als Scrape bezeichnet wird. Es sendet Kratzer basierend auf seiner Konfiguration an Ziele.
Jedes Ziel (statisch definiert oder dynamisch erkannt) wird in regelmäßigen Abständen (Kratzintervall) abgekratzt. Jedes Scrape liest den HTTP-Endpunkt /metrics, um den aktuellen Status der Client-Metriken abzurufen, und behält die Werte in der Prometheus-Zeitreihendatenbank bei.
Da sind mehr Zeitreihendatenbanken Für Überwachungslösungen, die Sie möglicherweise untersuchen möchten.
Client-Bibliotheken
Um einen Dienst zu überwachen, müssen Sie Ihrem Code Instrumente hinzufügen. Für alle gängigen Sprachen und Laufzeiten stehen Client-Bibliotheken zur Verfügung. Wenn Sie diese Bibliotheken verwenden, kann Ihr Code nach dem Hinzufügen einiger Codezeilen Metriken ausgeben. Dies wird als direkte Instrumentierung bezeichnet. Mit diesen Bibliotheken können Sie interne Metriken definieren und diese auch über einen HTTP-Endpunkt verfügbar machen. Wenn Prometheus den HTTP-Endpunkt für Metriken abkratzt, sendet die Clientbibliothek die Metriken an den Server.
Offizielle Client-Bibliotheken werden von Prometheus für Go, Java, Python und Ruby angeboten. Prometheus hat ein offenes Ökosystem. Es gibt auch von der Community erstellte Client-Bibliotheken für C, PHP, Node.js, C # /. NET und viele andere.
Exporteure
Viele Anwendungen stellen Metriken im Nicht-Prometheus-Format zur Verfügung. Für diese und für Anwendungen, die Sie nicht besitzen oder für die Sie keinen Zugriff auf Code haben, können Sie keine Instrumente direkt hinzufügen. Zum Beispiel MySQL-, Kafka-, JMX-, HAProxy- und NGINX-Server. In diesen Szenarien verwenden Sie Exporteure.
Ein Exporter ist ein Tool, das Sie zusammen mit der Anwendung bereitstellen, von der Sie Metriken möchten. Ein Exporteur fungiert als Stellvertreter zwischen dem Antrag und Prometheus. Es empfängt Anforderungen vom Prometheus-Server, sammelt Daten aus den Zugriffsprotokollen und Fehlerprotokollen der Anwendung, wandelt sie in das richtige Format um und kehrt schließlich zum Prometheus-Server zurück.
Einige der beliebtesten Exporteure sind:
- Windows - für Windows Server-Metriken
- Knoten - für Linux-Servermetriken
- Blackbox - für DNS- und Website-Leistungsmetriken
- JMX - für Java-basierte Anwendungsmetriken
Sobald die Anträge instrumentiert wurden oder die Exporteure vorhanden sind, müssen Sie Prometheus mitteilen, wo sie sich befinden. Dies kann mithilfe der statischen Konfiguration erfolgen. In dynamischen Umgebungen ist dies nicht möglich. Daher wird die Serviceerkennung verwendet.
Alarmieren
Die Alarmierung mit Prometheus besteht aus zwei Teilen -
Warnungsregeln senden Warnungen an den Alertmanager.
Der Alertmanager verwaltet diese Alerts dann. Es sendet Benachrichtigungen über viele sofort einsatzbereite Integrationen wie E-Mail, Slack, Hipchat und PagerDuty. Der Alertmanager kann auch eine Stummschaltung oder Aggregation durchführen, um die Anzahl der Benachrichtigungen zu verringern.
Hier ist die Guide zur Überwachung des Linux-Servers mit Prometheus und Dashboard.
Visualizing with Dashboards
Prometheus verfügt über eine Reihe von APIs, mit denen PromQL-Abfragen Rohdaten für Visualisierungen erstellen können.
Obwohl Prometheus einen Ausdrucksbrowser enthält, der für Ad-hoc-Abfragen verwendet werden kann, ist das beste verfügbare Tool Grafana. Grafana lässt sich vollständig in Prometheus integrieren und kann eine Vielzahl von Dashboards erstellen.
Sie müssen Prometheus als Datenquelle für Grafana konfigurieren.
Sie können Dashboards hinzufügen, indem Sie:
- Von der Community erstellte Dashboards importieren
- Bauen Sie Ihre eigenen
- Verwenden eines vordefinierten Dashboards.
So sieht ein vordefiniertes Nodexporter-Dashboard aus:
Grafana hat eine WeltPing Modul, mit dem Sie Site- und DNS-Leistungsmetriken weltweit überwachen können.
Zusammenfassung
Prometheus hat nur sehr wenige Anforderungen. Die Ausführung kann recht einfach sein, da es sich um eine einzelne Binärdatei mit einer Konfigurationsdatei handelt. Es kann Tausende von Zielen verarbeiten und Millionen von Proben pro Sekunde aufnehmen. Prometheus wurde entwickelt, um das Gesamtsystem, den Zustand und das Verhalten des Systems zu verfolgen.
Grafana ist das beste verfügbare Tool zur Visualisierung von Metriken und lässt sich nahtlos integrieren Prometheus.