Prometheus überwacht MySQL mithilfe der Grafana-Anzeige

Prometheus überwacht MySQL mithilfe der Grafana-Anzeige

Prometheus überwacht MySQL über den Exporter und stellt es mit Grafana-Diagrammen dar

Überblick:

Prometheus ist ein von SoundCloud entwickeltes Open-Source-Überwachungs- und Alarmsystem und verfügt über eine auf der Sprache Go basierende Zeitreihendatenbank. Prometheus ruft die Metriken auf dem angegebenen Ziel (Target) in einem periodischen Pull-Verfahren entsprechend der konfigurierten Aufgabe (Job) ab.

Das Prometheus-Ökosystem umfasst mehrere Komponenten:

  • Prometheus-Server: Führt die Datenerfassung, Diensterkennung und Datenspeicherung gemäß der Konfiguration durch.
  • Push-Gateway: Ein Plug-In für einige Push-Szenarien. Die Überwachungsdaten werden zuerst an das Push-Gateway gesendet und dann vom Prometheus-Server gesammelt und abgerufen. Wird für Jobs verwendet, die nur von kurzer Dauer sind und möglicherweise verschwinden, bevor Prometheus sie abruft (wenn sich die Daten auf dem Push-Gateway während des Erfassungsintervalls des Prometheus-Servers nicht ändern, erfasst der Prometheus-Server dieselben Daten zweimal, nur mit unterschiedlichen Zeitstempeln).
  • Exporteure (Sonden): ist ein allgemeiner Begriff für eine Art von Datenerfassungskomponenten von Prometheus. Es ist dafür verantwortlich, Daten vom Ziel zu sammeln und in ein von Prometheus unterstütztes Format zu konvertieren. Anders als herkömmliche Datenerfassungskomponenten sendet es keine Daten an den zentralen Server, sondern wartet darauf, dass der zentrale Server sie aktiv erfasst.
  • Alertmanager: Der Prometheus-Server ist hauptsächlich für die Analyse von Daten gemäß PromQL-basierten Alarmregeln verantwortlich. Wenn die von PromQL definierten Regeln erfüllt sind, wird ein Alarm generiert und an Alertmanager gesendet. Alertmanager verarbeitet die Alarminformationen gemäß der Konfiguration und sendet sie. Zu den gängigen Empfangsmethoden gehören: E-Mail, Webhook usw. Alertmanager bietet drei Möglichkeiten zum Verarbeiten von Alarminformationen: Gruppieren, Unterdrücken und Stummschalten.

Als nächstes beginnen wir mit der Demonstration

1. Testmaschine

Prometheus-Server 192.168.56.140
MySQL Host01 192.168.56.103
MySQL Host02 192.168.56.104

2. Konfigurieren Sie MySQL Host01

Verwendete MySQL-Version:

8.0.25 MySQL Community Server

3. Erstellen Sie ein Exporteurkonto

mysqld_exporter erhält Daten durch Abfragen der Statustabelle und der Statusbefehle von MySQL. Daher müssen Sie zuerst das entsprechende Konto in MySQL erstellen

Erstellen Sie den Benutzer „Exporteur“@„%“, identifiziert durch „Xiaopang*803“;
GRANT REPLICATION CLIENT, PROCESS ON *.* AN 'Exporteur'@'%';
GRANT SELECT ON performance_schema.* TO 'Exporteur'@'%';
Berechtigungen leeren;

4. Laden Sie mysqld_exporter herunter und installieren Sie es

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz
tar xvzf mysqld_exporter-0.13.0.linux-amd64.tar.gz -C /usr/local/.
cd /usr/local && ln -s mysqld_exporter-0.13.0.linux-amd64/mysqld_exporter

4.1 Datei bearbeiten und Passwort eingeben

Bearbeiten Sie die folgende Datei und geben Sie den Benutzernamen und das Passwort des Exporteurs ein (dasselbe wie das oben in MySQL erstellte Konto und Passwort).

[root@host01 mysqld_exporter]# vi .my.cnf
[Kunde]
Benutzer=Exporteur
Passwort=Xiaopang*803

4.2 Startdienstdatei hinzufügen

[root@host01 ~]# vi /etc/systemd/system/mysqld_exporter.service

[Einheit]
Beschreibung=mysqld_exporter
Nach=Netzwerk.Ziel

[Service]
Typ=einfach
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf
Neustart=bei Fehler

[Installieren]
WantedBy=Mehrbenutzer.Ziel

4.3 mysqld_exporter starten

Dienst mysqld_exporter starten

4.4 Testüberprüfung

mysqld_exporter verwendet standardmäßig Port 9104. Wir können die folgende Adresse im Browser eingeben. Prüfen Sie, ob eine Datenausgabe erfolgt.

Geben Sie http://192.168.56.103:9104/metrics ein.

Die Ausgabeinformationen ähneln den folgenden:

# HILFE go_gc_duration_seconds Eine Zusammenfassung der Pausendauer von Garbage Collection-Zyklen.
# TYP go_gc_duration_seconds Zusammenfassung
go_gc_duration_seconds{quantile="0"} 2,5395e-05
go_gc_duration_seconds{quantile="0.25"} 3.5372e-05
go_gc_duration_seconds{quantile="0.5"} 3,9393e-05
go_gc_duration_seconds{quantile="0.75"} 5.5068e-05
go_gc_duration_seconds{quantile="1"} 0,062537624
go_gc_duration_seconds_sum 0,453204071
go_gc_Dauer_Sekunden_Anzahl 2131
# HILFE go_goroutines Anzahl der aktuell vorhandenen Goroutinen.
# TYP go_goroutines Messgerät

5. Laden Sie node_exporter herunter und installieren Sie es

Wenn Sie nur mysqld_exporter installieren, können Sie keine betriebssystembezogenen Daten überwachen. Daher müssen Sie zur Betriebssystemüberwachung node_exporter installieren.

wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz

tar xvzf node_exporter-1.2.2.linux-amd64.tar.gz -C /usr/local/.
cd /usr/local && ln -s node_exporter-1.2.2.linux-amd64/ node_exporter

5.1 Startdienstdatei hinzufügen

[root@host01 ~]# vi /etc/systemd/system/node_exporter.service
[Einheit]
Beschreibung=node_export
Dokumentation=https://github.com/prometheus/node_exporter
Nach=Netzwerk.Ziel

[Service]
Typ=einfach
Benutzer=root
Gruppe=Wurzel
ExecStart=/usr/local/node_exporter/node_exporter
Neustart=bei Fehler
[Installieren]
WantedBy=Mehrbenutzer.Ziel

5.2 Starten Sie node_exporter

Dienst node_exporter starten

5.3 Testüberprüfung

Standardmäßig verwendet node_exporter Port 9100. Wir können die folgende Adresse im Browser eingeben. Prüfen Sie, ob eine Datenausgabe erfolgt.

Geben Sie http://192.168.56.103:9100/metrics ein.

Die Ausgabe sieht ungefähr wie folgt aus:

# HILFE go_gc_duration_seconds Eine Zusammenfassung der Pausendauer von Garbage Collection-Zyklen.
# TYP go_gc_duration_seconds Zusammenfassung
go_gc_duration_seconds{quantile="0"} 2,5934e-05
go_gc_duration_seconds{quantile="0.25"} 4.0072e-05
go_gc_duration_seconds{quantile="0.5"} 4,7616e-05
go_gc_duration_seconds{quantile="0.75"} 6,726e-05
go_gc_duration_seconds{quantile="1"} 0,228887598
go_gc_duration_seconds_sum 0,550266258
go_gc_duration_seconds_count 793
# HILFE go_goroutines Anzahl der aktuell vorhandenen Goroutinen.
# TYP go_goroutines Messgerät

6. Installieren Sie Prometheus + Grafana

Version verwenden:

Prometheus 2.28

Grafana 6.7.6

6.1 Installation

Herunterladen des Pakets

wget https://github.com/prometheus/prometheus/releases/download/v2.28.1/prometheus-2.28.1.linux-amd64.tar.gz

6.2 Entpacken und Softlinks hinzufügen

tar xvzf prometheus-2.28.1.linux-amd64.tar.gz -C /usr/local/.
cd /usr/lokal/
ln -s prometheus-2.28.1.linux-amd64/prometheus

6.3 Startdienst hinzufügen

[root@prometheus-server prometheus]# vi /etc/systemd/system/prometheus.service
[Einheit]
Beschreibung=Prometheus-Überwachungssystem
Dokumentation=Prometheus-Überwachungssystem

[Service]
Typ=einfach
Benutzer=root
Gruppe=Wurzel
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path="data/" \
--storage.tsdb.retention.time=15d \
--web.max-connections=512 \
--web.listen-address=:9090

6.4 MySQL-Überwachung hinzufügen

vi /usr/local/prometheus/prometheus.yml

scrape_configs:
# Der Jobname wird als Label „job=<job_name>“ zu jeder aus dieser Konfiguration extrahierten Zeitreihe hinzugefügt.

  - Jobname: "mysql"
    statische_Konfigurationen:
      - Ziele: ['192.168.56.103:9104']
        Beschriftungen:
          Instanz: mysql_instance1
  - Jobname: „Linux“
    statische_Konfigurationen:
      - Ziele: ['192.168.56.103:9100']
        Beschriftungen:
          Instanz: mysql_instance1


6.5 Starten Sie Prometheus

Dienst Prometheus starten

6.7 Prometheus anzeigen

Prometheus-Standardüberwachungsport

http://192.168.56.140:9090/

Klicken Sie auf Status -> Ziel. Wenn alles normal ist, können Sie sehen, dass der Status von MySQL/Linux UP ist, wie folgt

7. Laden Sie Grafana herunter und installieren Sie es

wget https://dl.grafana.com/oss/release/grafana-6.7.6-1.x86_64.rpm

U/min -ivh grafana-6.7.6-1.x86_64.rpm

7.1 Zugriff auf Grafana

Die Anzeigefunktion von Prometheus ist sehr schwach. Um Grafiken besser anzeigen zu können, benötigen wir Grafana

Geben Sie http://192.168.56.140:3000/ ein.

Konfigurieren Sie die Datenquelle als HTTP-Link von proemtheus (beachten Sie, dass es sich um HTTP und nicht um HTTPS handelt).

7.2 MySQL-Überwachungsvorlage importieren

Die Anzeige der Grafana-Daten erfolgt über Vorlagen. Auf der Grafana-Website gibt es viele freigegebene Vorlagen, die Sie selbst erkunden können.

Ich habe diese Vorlage vom folgenden Link heruntergeladen.

https://grafana.com/api/dashboards/9623/revisions/4/download

Problem mit der Versionskonflikt

Aufgrund einer Versionsinkongruenz werden einige Elemente nach Abschluss nicht normal angezeigt. Die verwendete Version ist Grafana 5.0, und meine ist 6.x.

Aber dieses kleine Problem hat mich nicht gestört, ich habe es selbst geändert. Es kann normal angezeigt werden. Nachfolgend sehen Sie die geänderte JSON-Datei.

josn_jb51.rar

Änderungsprozess

Oft sind viele Dinge noch nicht komplett einsatzbereit. Wir müssen entsprechend unseren Anforderungen einige Änderungen vornehmen.

Ich habe ungefähr eine halbe Stunde gebraucht, um herauszufinden, wie ich es ändern kann. Anschließend dauerte es noch einmal ca. zwei Stunden, die entsprechenden Projekte zu modifizieren und fertigzustellen.

Während des Änderungsprozesses treten im Wesentlichen zwei Arten von Problemen auf:

1) Die Namen der Grafana 5.x- und 6.x-Komponenten haben sich geändert.

„Pufferpoolgröße des gesamten RAM“ kann nicht richtig angezeigt werden, da die Komponentennamen von 6.0 und 5.0 unterschiedlich sind.

Ersetzen Sie pmm-singlestat-panel -> singlestat, um es zu erledigen

2) Der Name des vom Exporter extrahierten Attributs hat sich geändert

Ich verwende node_exporter-1.2.2 und die zum Betriebssystem extrahierten Eigenschaften stimmen nicht mit den definierten Eigenschaftsnamen in der JSON-Datei überein.

Die Methode besteht darin, direkt in „http://192.168.56.103:9100/metrics“ nach dem neuen Attributnamen zu suchen und den alten Attributnamen in der JSON-Datei zu ersetzen.

Zum Beispiel:

Ersetzen Sie node_memory_MemTotal->node_memory_MemTotal_bytes
Ersetzen Sie node_memory_MemTotal->node_memory_MemTotal_bytes

Import

Da ich einige Änderungen vorgenommen habe, können Sie den JSON-Inhalt direkt beim Importieren eingeben.

Klicken Sie auf „Laden“ und wählen Sie dann „Prometheus“ als Datenquelle aus.

7.3 Starten Sie das Stresstest-Tool Sysbench

Der Zweck der Aktivierung des Sysbench-Tools besteht darin, Diagramme mit Datenänderungen durch Stresstests zu erstellen (andernfalls werden die Daten nicht verschoben, wenn kein Datenverkehr vorhanden ist).

Hier führe ich einen Remote-Test durch (indem ich Sysbench auf einem anderen Computer, Host02, ausführe). Der Zweck besteht darin, Netzwerkverkehrsdaten zu generieren.

[root@host02 ~]# sysbench /usr/share/sysbench/oltp_read_write.lua --time=9180 --mysql-host=host01 --mysql-port=3306 --mysql-user=dbusr --mysql-password=Xiaopang*803 --mysql-db=db1 --table-size=50000 --tables=15 --threads=15 --report-interval=10 ausführen
sysbench 1.0.20 (unter Verwendung des gebündelten LuaJIT 2.1.0-beta2)

Ausführen des Tests mit folgenden Optionen:
Anzahl der Threads: 15
Zwischenergebnisse alle 10 Sekunden melden
Initialisierung des Zufallszahlengenerators ab aktueller Zeit


Arbeitsthreads werden initialisiert …

Themen gestartet!

[ 10s ] thds: 15 tps: 112,68 qps: 2268,92 (r/w/o: 1589,76/452,30/226,85) lat (ms,95%): 277,21 err/s: 0,00 reconn/s: 0,00
[ 20s ] thds: 15 tps: 113,91 qps: 2282,81 (r/w/o: 1598,47/456,52/227,81) lat (ms,95%): 211,60 err/s: 0,00 reconn/s: 0,00
[ 30s ] thds: 15 tps: 109,80 qps: 2192,95 (r/w/o: 1536,66/436,69/219,59) lat (ms,95%): 240,02 err/s: 0,00 reconn/s: 0,00
[ 40s ] thds: 15 tps: 112,70 qps: 2265,36 (r/w/o: 1583,17/456,79/225,40) lat (ms,95%): 193,38 err/s: 0,00 reconn/s: 0,00
[ 50s ] thds: 15 tps: 101,00 qps: 2013,42 (r/w/o: 1413,32/398,10/202,00) lat (ms,95%): 325,98 err/s: 0,00 reconn/s: 0,00

7.4 Überprüfen Sie Grafana und sehen Sie sich das Ergebnis nach Abschluss an

Hier werden nur einige der Diagramme veröffentlicht.

Dies ist das Ende dieses Artikels über die Überwachung von Prometheus MySQL mit Grafana. Weitere relevante MySQL Grafana-Inhalte finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Leistungsüberwachung des MySQL-Servers mit Prometheus und Grafana
  • Detailliertes Tutorial zur Installation und Verwendung von Grafana
  • Verwenden Sie Grafana, um Überwachungsdiagramme von Docker-Containern anzuzeigen und E-Mail-Benachrichtigungsregeln festzulegen (Abbildung)
  • Detaillierte Erläuterung des Tutorials zur Überwachung von Springboot-Anwendungen mit Prometheus+Grafana
  • Verwenden Sie Grafana+Prometheus, um die Leistung des MySQL-Dienstes zu überwachen
  • Detaillierte Erläuterung des Prozesses zum Erstellen von Prometheus + Grafana basierend auf Docker
  • Zusammenfassung der benutzerdefinierten Python-Datenerfassung mit Influx+Graphiana und einige Fallstricke
  • Detaillierte Schritte für SpringBoot+Prometheus+Grafana zur Implementierung von Anwendungsüberwachung und Alarm
  • So installieren Sie Grafana und fügen Influxdb-Überwachung unter Linux hinzu
  • Analysieren Sie die Methode zur Überwachung von Nginx durch Prometheus + Grafana
  • So überwachen Sie Docker mit Grafana unter Ubuntu
  • Detailliertes Tutorial zum Erstellen einer JMeter+Grafana+Influxdb-Überwachungsplattform mit Docker
  • Tutorial zum Erstellen einer visuellen Leistungsüberwachungsplattform mit JMeter+Grafana+InfluxDB in einer Docker-Umgebung
  • Stellen Sie die Grafana+Prometheus-Konfiguration mit Docker bereit
  • ELK und Grafana erstellen gemeinsam eine visuelle Überwachung zur Analyse von Nginx-Protokollen
  • Es ist nicht schlimm, wenn Sie Ihr Grafana-Passwort vergessen. 2 Möglichkeiten, Ihr Grafana-Administratorpasswort zurückzusetzen

<<:  Ein praktischer Bericht über XSS-Angriffe in einem VUE-Projekt

>>:  Beheben einiger häufiger Probleme in CSS (Hack-Logo/fester Container/vertikale Zentrierung von Bildern)

Artikel empfehlen

So setzen Sie das MySQL-Root-Passwort zurück

Inhaltsverzeichnis 1. Ich habe das Root-Passwort ...

Zusammenfassung der Zeilenumbruchprobleme bei Textbereichen in HTML

Kürzlich stieß ich auf das Problem, ob die Daten b...

Tiefgreifendes Verständnis von UID und GID in Docker-Containern

Standardmäßig werden Prozesse im Container mit Ro...

Koexistenz von Python2 und Python3 unter einem CentOS7-System

Der erste Schritt besteht darin, die Versionsnumm...

CSS realisiert Div vollständig zentriert, ohne Höhe festzulegen

Erfordern Das Div unter dem Körper ist vertikal z...

Eine kurze Erläuterung zum Anpassen der Hostdatei in Docker

Inhaltsverzeichnis 1. Befehl 2. docker-compose.ym...

So verwenden Sie JavaScript und CSS richtig in XHTML-Dokumenten

Auf immer mehr Websites wird HTML4 durch XHTML ers...

Die beste Erklärung zu HTTPS

Guten Morgen allerseits, ich habe meinen Artikel ...

So richten Sie domänenübergreifenden Zugriff in IIS web.config ein

Anforderung: Die Seite muss ein Bild anzeigen, ab...

Docker Swarm von der Bereitstellung bis zum grundlegenden Betrieb

Über Docker Swarm Docker Swarm besteht aus zwei T...

Starten Sie alle gestoppten Docker-Container mit einem Befehl neu

Starten Sie alle gestoppten Docker-Container mit ...