Detaillierte Erläuterung des Prozesses zum Erstellen von Prometheus + Grafana basierend auf Docker

Detaillierte Erläuterung des Prozesses zum Erstellen von Prometheus + Grafana basierend auf Docker

1. Einführung in Prometheus

Prometheus ist eine Open-Source-Kombination aus Überwachungs-, Alarm- und Zeitreihendatenbank, die ursprünglich von SoundCloud entwickelt wurde. Im Laufe der Entwicklung sind immer mehr Unternehmen und Organisationen bereit, Prometheus zu übernehmen, und die Community ist sehr aktiv. Sie haben es in ein Open-Source-Projekt ausgegliedert und lassen es von einem Unternehmen betreiben. Im Buch von Google SRE wird auch erwähnt, dass Prometheus eine Implementierung ist, die ihrem BorgMon-Überwachungssystem ähnelt. Das gängigste Kubernetes-Containerverwaltungssystem wird normalerweise mit Prometheus überwacht.

Das Grundprinzip von Prometheus besteht darin, den Status überwachter Komponenten regelmäßig über das HTTP-Protokoll zu erfassen. Dies hat den Vorteil, dass jede Komponente, die eine HTTP-Schnittstelle bereitstellt, an das Überwachungssystem angeschlossen werden kann, ohne dass ein SDK oder ein anderer Integrationsprozess erforderlich ist. Dies eignet sich sehr gut für virtualisierte Umgebungen wie VM oder Docker.

Prometheus sollte eines der wenigen Überwachungssysteme sein, das für Docker-, Mesos- und Kubernetes-Umgebungen geeignet ist.

Die HTTP-Schnittstelle, die Informationen zu überwachten Komponenten exportiert, wird Exporter genannt. Derzeit verfügen die meisten von Internetunternehmen häufig verwendeten Komponenten über Exporter, die direkt verwendet werden können, z. B. Varnish, Haproxy, Nginx, MySQL, Linux-Systeminformationen (einschließlich Festplatte, Speicher, CPU, Netzwerk usw.). Bestimmte unterstützte Quellen finden Sie unter: https://github.com/prometheus.

Im Vergleich zu anderen Überwachungssystemen sind die Hauptfunktionen von Prometheus:

  • Ein mehrdimensionales Datenmodell (Zeitreihen werden durch Metriknamen und Schlüssel-/Wertdimensionen definiert).
  • Sehr effiziente Speicherung. Im Durchschnitt belegt eine abgetastete Datenmenge etwa 3,5 Byte. 3,2 Millionen Zeitreihen werden alle 30 Sekunden abgetastet und 60 Tage lang aufbewahrt, wobei etwa 228 GB Festplattenspeicher verbraucht werden.
  • Eine flexible Abfragesprache.
  • Benötigt keinen verteilten Speicher, sondern einen einzelnen Serverknoten.
  • Die Ereigniserfassung erfolgt mittels eines PULL-Modells über HTTP.
  • Unterstützt Push-Zeit durch Zwischen-Gateways.
  • Entdecken Sie Ziele über die Diensterkennung oder die statische Konfiguration.
  • Mehrere Grafikmodi und Dashboard-Unterstützung.

2. Überblick über die Prometheus-Architektur

Dieses Diagramm veranschaulicht die Gesamtarchitektur von Prometheus und einige seiner Ökosystemkomponenten:

Der Serviceprozess ist wie folgt: Der Prometheus-Daemon ist für das regelmäßige Abrufen von Messdaten vom Ziel verantwortlich. Jedes Abrufziel muss eine HTTP-Serviceschnittstelle für das regelmäßige Abrufen bereitstellen.

Prometheus: unterstützt das Festlegen von Crawling-Zielen über Konfigurationsdateien, Textdateien, Zookeeper, Consul, DNS-SRV-Suche usw. Es unterstützt viele Arten der Diagrammvisualisierung, wie etwa das sehr exquisite Grafana, das integrierte Promdash und seine eigene Vorlagen-Engine usw. Es bietet auch HTTP-API-Abfragemethoden zum Anpassen der erforderlichen Ausgabe.

Alertmanager: Dies ist eine von Prometheus unabhängige Komponente, die Prometheus-Abfrageanweisungen unterstützen und eine sehr flexible Alarmmethode bereitstellen kann.

PushGateway: Diese Komponente unterstützt den Client dabei, Metriken aktiv an PushGateway zu übertragen, während Prometheus nur regelmäßig Daten vom Gateway abruft.

Wenn Sie statsd verwendet haben, werden Sie feststellen, dass es sehr ähnlich ist, mit der Ausnahme, dass statsd Daten direkt an den Server sendet, während Prometheus hauptsächlich auf die aktive Erfassung durch den Prozess angewiesen ist.

Die meisten Prometheus-Komponenten sind in Go geschrieben und können einfach als statische Binärdateien erstellt und bereitgestellt werden. Besuchen Sie prometheus.io für vollständige Dokumentation, Beispiele und Anleitungen.

3. Prometheus-Datenmodell

Grundsätzlich wird die gesamte Speicherung in Prometheus in Zeitreihen implementiert. Dieselben Metriken (Metrikname) und Bezeichnungen (eine oder mehrere Bezeichnungen) bilden eine Zeitreihe, und unterschiedliche Bezeichnungen repräsentieren unterschiedliche Zeitreihen. Um einige Abfragen zu unterstützen, wird manchmal vorübergehend ein Zeitreihenspeicher generiert.

Metrikname und -bezeichnung, Indikatorname und -bezeichnung

Jede Zeitreihe besteht aus einem eindeutigen „Metriknamen“ und einer Reihe von „Beschriftungen (Schlüssel=Wert)“.

Indikatorname: Im Allgemeinen wird dem Überwachungsobjekt ein Name zugewiesen, z. B. http_requests_total. Es gelten einige Namensregeln und der Name kann Buchstaben, Zahlen usw. enthalten. Es beginnt normalerweise mit Anwendungsname_Überwachungsobjekt_Wert Typ_Einheit. Zum Beispiel: push_total, userlogin_mysql_duration_seconds, app_memory_usage_bytes.

Tags: werden verwendet, um verschiedene Dimensionen einer Zeitreihe zu identifizieren. Ob eine HTTP-Anfrage beispielsweise POST oder GET verwendet und was ihr Endpunkt ist, wird durch Tags gekennzeichnet. Die endgültige Kennung lautet: http_requests_total{method="POST",endpoint="/api/tracks"}.

Denken Sie daran, dass durch das Hinzufügen oder Entfernen eines Tags für den Metriknamen http_requests_total eine neue Zeitreihe erstellt wird.

Die Abfrageanweisung kann die Aggregationsergebnisse basierend auf der Kombination der oben genannten Tags abfragen.

Wenn wir diese Anweisung aus der Perspektive einer herkömmlichen Datenbank betrachten, können wir http_requests_total als Tabellennamen, das Tag als Feld, den Zeitstempel als Primärschlüssel und ein Float64-Feld als Wert betrachten. (Alle Werte in Prometheus werden als float64 gespeichert).

4. Vier Datentypen von Prometheus

Schalter

Der Zähler wird zum Sammeln von Werten wie der Anzahl der Anfragen, der Anzahl der abgeschlossenen Aufgaben und der Anzahl der Fehler verwendet. Es nimmt ständig zu und nie ab. Nach einem Neustart des Vorgangs wird es zurückgesetzt.

Beispiel: http_response_total{method=”GET”,endpoint=”/api/tracks”} 100, crawlen Sie http_response_total{method=”GET”,endpoint=”/api/tracks”} 100 nach 10 Sekunden.

Messgerät

Messen Sie allgemeine Werte, wie etwa Temperaturänderungen oder Änderungen bei der Speichernutzung. Es kann größer oder kleiner gemacht werden. Nach einem Neustart des Vorgangs wird es zurückgesetzt.

Beispiel: memory_usage_bytes{host="master-01"} 100 < der erfasste Wert, memory_usage_bytes{host="master-01"} 30, memory_usage_bytes{host="master-01"} 50, memory_usage_bytes{host="master-01"} 80 < der erfasste Wert.

Histogramm

Ein Histogramm kann als Balkendiagramm verstanden werden, das häufig verwendet wird, um das Ausmaß von Ereignissen zu verfolgen, beispielsweise die Dauer von Anfragen und die Größe von Antworten. Das Besondere daran ist, dass es den Inhalt der Datensätze gruppieren kann und die Funktionen zum Zählen und Summieren aller Werte bereitstellt.

Beispiel: {weniger als 10=5 Mal, weniger als 20=1 Mal, weniger als 30=2 Mal}, Anzahl=7 Mal, Summe=die Summe der 7 Mal.

Zusammenfassung

Die Zusammenfassung ähnelt stark dem Histogramm und wird häufig verwendet, um das Ausmaß von Ereignissen zu verfolgen, beispielsweise die Dauer von Anfragen und die Größe der Antworten. Es bietet außerdem Funktionen zum Zählen und Summieren aller Werte.

Beispiel: Anzahl = 7-mal, Summe = 7-mal die Wertauswertung.

Es bietet eine Quantilfunktion, mit der die Tracking-Ergebnisse im Prozentverhältnis geteilt werden können. Ein Quantilwert von 0,95 bedeutet beispielsweise, dass 95 % der Daten im Stichprobenwert berücksichtigt werden.

5. Installieren und Ausführen von Prometheus (Docker-Version)

Im Folgenden wird beschrieben, wie Sie Prometheus und Grafana verwenden, um die Leistung des lokalen Servers zu überwachen.

Zur Überwachung der lokalen Maschine wird nur ein Exporter benötigt

node_exporter – zur Erfassung von Maschinensystemdaten

Grafana ist eine Open-Source-Datenvisualisierungsplattform mit zahlreichen Funktionen, die häufig zur Visualisierung von Zeitreihendaten verwendet wird. Es bietet integrierte Unterstützung für die folgenden Datenquellen:

Nachfolgend sehen Sie das Architekturdiagramm, das wir während der Installation verwendet haben:

Hinweis: Dieser Artikel verwendet Ubuntu-16.04.5-Server-AMD64, es wird nur ein Server benötigt!

Docker installieren

apt-get install -y docker.io

Hinweis: In Online-Artikeln heißt es, dass Sie Docker-Engine und Docker-CE installieren müssen, was Unsinn ist. Die Tasche ist überhaupt nicht auffindbar!

Installieren Sie einfach docker.io und fertig!

Wenn es sich um ein CentOS-System handelt, verwenden Sie yum install -y docker-io zur Installation

Herunterladen des Imagepakets

Docker Pull Prom/Knoten-Exporteur
Docker zieht Prom/Prometheus
Docker zieht Grafana/Grafana

Starten Sie den Node-Exporter

docker run -d -p 9100:9100 \
 -v "/proc:/host/proc:ro" \
 -v "/sys:/host/sys:ro" \
 -v "/:/rootfs:ro" \
 --net="Gastgeber" \
 prom/Knoten-Exporteur

Warten Sie einige Sekunden, um zu sehen, ob der Port aktiv ist.

root@ubuntu:~# netstat -anpt
Aktive Internetverbindungen (Server und hergestellt)
Proto Recv-Q Send-Q Lokale Adresse Fremde Adresse Status PID/Programmname
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1147/sshd    
tcp 0 36 192.168.91.132:22 192.168.91.1:63648 HERGESTELLT 2969/0     
tcp 0 0 192.168.91.132:22 192.168.91.1:63340 HERGESTELLT 1321/1     
tcp6 0 0 :::9100 :::* LISTEN 3070/node_exporter

Besuchen Sie die URL:

http://192.168.91.132:9100/Metriken

Die Wirkung ist wie folgt:

Dies sind alles gesammelte Daten, mit denen Sie Daten anzeigen können

Starten Sie Prometheus

Erstellen Sie ein neues Verzeichnis prometheus und bearbeiten Sie die Konfigurationsdatei prometheus.yml

mkdir /opt/prometheus
cd /opt/prometheus/
vim prometheus.yml

Der Inhalt ist wie folgt:

weltweit:
 Scrape-Intervall: 60 s
 Auswertungsintervall: 60s
 
scrape_configs:
 - Jobname: Prometheus
  statische_Konfigurationen:
   - Ziele: ['localhost:9090']
    Beschriftungen:
     Beispiel: Prometheus
 
 - Jobname: Linux
  statische_Konfigurationen:
   - Ziele: ['192.168.91.132:9100']
    Beschriftungen:
     Instanz: localhost

Hinweis: Ändern Sie die IP-Adresse. Hier ist 192.168.91.132 die lokale Adresse.

Starten Sie Prometheus

docker run -d \
 -p 9090:9090 \
 -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
 Abschlussball/Prometheus

Warten Sie einige Sekunden und überprüfen Sie den Portstatus

root@ubuntu:/opt/prometheus# netstat -anpt
Aktive Internetverbindungen (Server und hergestellt)
Proto Recv-Q Send-Q Lokale Adresse Fremde Adresse Status PID/Programmname
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1147/sshd    
tcp 0 36 192.168.91.132:22 192.168.91.1:63648 HERGESTELLT 2969/0     
tcp 0 0 192.168.91.132:22 192.168.91.1:63340 HERGESTELLT 1321/1     
tcp6 0 0 :::9100 :::* LISTEN 3070/node_exporter
tcp6 0 0 :::22 :::* LISTEN 1147/sshd    
tcp6 0 0 :::9090 :::* LISTEN 3336/Docker-Proxy

Besuchen Sie die URL:

http://192.168.91.132:9090/graph

Die Wirkung ist wie folgt:

Zugriffsziele, die URL lautet wie folgt:

http://192.168.91.132:9090/Ziele

Die Wirkung ist wie folgt:

Wenn der Status nicht „UP“ ist, warten Sie einen Moment und er wird „UP“ sein.

Starten Sie Grafana

Erstellen Sie einen neuen leeren Ordner grafana-storage zum Speichern von Daten

mkdir /opt/grafana-storage

Festlegen von Berechtigungen

chmod 777 -R /opt/grafana-storage

Da der Grafana-Benutzer Dateien in dieses Verzeichnis schreibt, ist es relativ einfach und grob, 777 direkt festzulegen!

Starten Sie Grafana

docker run -d \
 -p 3000:3000 \
 --name=grafana \
 -v /opt/grafana-storage:/var/lib/grafana \
 grafana/grafana

Warten Sie einige Sekunden und überprüfen Sie den Portstatus

root@ubuntu:/opt/prometheus# netstat -anpt
Aktive Internetverbindungen (Server und hergestellt)
Proto Recv-Q Send-Q Lokale Adresse Fremde Adresse Status PID/Programmname
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1147/sshd    
tcp 0 36 192.168.91.132:22 192.168.91.1:63648 HERGESTELLT 2969/0     
tcp 0 0 192.168.91.132:22 192.168.91.1:63340 HERGESTELLT 1321/1     
tcp6 0 0 :::9100 :::* LISTEN 3070/node_exporter
tcp6 0 0 :::22 :::* LISTEN 1147/sshd    
tcp6 0 0 :::3000 :::* LISTEN 3494/Docker-Proxy
tcp6 0 0 :::9090 :::* LISTEN 3336/Docker-Proxy
tcp6 0 0 192.168.91.132:9100 172.17.0.2:55108 HERGESTELLT 3070/node_exporter

Besuchen Sie die URL:

http://192.168.91.132:3000/

Standardmäßig werden Sie zur Anmeldeseite weitergeleitet. Der Standardbenutzername und das Standardkennwort lauten beide admin.

Nach der Anmeldung werden Sie aufgefordert, Ihr Passwort zurückzusetzen. Sie können das Admin-Passwort erneut eingeben!

Nachdem das Passwort festgelegt wurde, werden Sie auf die Startseite weitergeleitet.

Klicken Sie auf Datenquelle hinzufügen. Da die Spiegelungsmethode verwendet wird, ist die Version relativ neu. Es weicht von den in den Artikeln im Internet gezeigten Bildern ab!

Name: Prometheus

Typ wählt Prometheus, weil die Daten von dort bezogen werden

URL Geben Sie die IP+Port von Prometheus ein

Klicken Sie unten auf „Speichern und testen“. Wenn ein grünes Symbol angezeigt wird, bedeutet dies, dass alles in Ordnung ist.

Gehen Sie zurück zur Startseite und klicken Sie auf Neues Dashboard

Klicken Sie auf Diagramm

Die Wirkung ist wie folgt:

Klicken Sie unter dem Titel auf „Bearbeiten“.

Die Wirkung ist wie folgt:

Geben Sie CPU ein. Unten wird eine Eingabeaufforderung angezeigt.

Hier überwachen wir node_load15, was die Systemlast für 15 Minuten anzeigt. Klicken Sie unten auf Abfrage hinzufügen

Die Wirkung ist wie folgt:

Gesamtspeicher hinzufügen

Hier wird noch eine Zeile stehen

Klicken Sie rechts, um den gesamten Speicher zu löschen

Klicken Sie auf „Allgemein“ und ändern Sie den Titel in „Chinesisch“

Der Charteffekt ist wie folgt:

Klicken Sie oben auf die Schaltfläche Speichern

Geben Sie Ihren Namen ein

Die Wirkung ist wie folgt:

Klicken Sie auf die Homepage und Sie sehen

Referenzlinks für diesen Artikel:

http://www.ywnds.com/?p=9656

Dies ist das Ende dieses Artikels über den detaillierten Prozess zum Erstellen von Prometheus+Grafana auf Basis von Docker. Weitere relevante Inhalte zum Erstellen von Prometheus+Grafana mit Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Docker erstellt ein Überwachungssystem basierend auf Prometheus

<<:  Beispiel für einen reinen CSS3-Mindmap-Stil

>>:  Vue implementiert die vollständige Auswahlfunktion

Artikel empfehlen

Ein verbessertes Screenshot- und Freigabetool für Linux: ScreenCloud

ScreenCloud ist eine tolle kleine App, von der Si...

Zusammenfassung der MySQL-Indexkenntnisse

Die Einrichtung eines MySQL-Index ist für den eff...

Detailliertes Tutorial zum Erstellen eines privaten Git-Servers unter Linux

1. Server-Setup Das Remote-Repository unterscheid...

Verwendung des Linux-Befehls tr

1. Einleitung tr wird verwendet, um einen Textabs...

JS Cross-Domain-Lösung React-Konfiguration Reverse-Proxy

Domänenübergreifende Lösungen jsonp (get simulier...

Die neuesten 36 hochwertigen kostenlosen englischen Schriftarten freigegeben

01. Unendlichkeit Schriftart herunterladen 02. Ban...

So löschen Sie verstümmelte oder mit Sonderzeichen versehene Dateien in Linux

Aus Kodierungsgründen werden beim Hochladen oder ...

So implementieren Sie Call, Apply und Binding in nativem JS

1. Implementieren Sie den Anruf Schritt: Legen Si...

Implementierung des Wasserfall-Layouts im Uni-App-Projekt

GitHub-Adresse, Sie können es mit einem Stern mar...

Webdesign-Dimensionen und Regeln für die Werbegestaltung auf Webseiten

1. Unter 800 x 600 gibt es keine horizontale Bild...

Vue-Implementierungsbeispiel mit Google Recaptcha-Verifizierung

In unserem aktuellen Projekt müssen wir die Googl...