Detaillierte Erläuterung der Leistungsüberwachung des MySQL-Servers mit Prometheus und Grafana

Detaillierte Erläuterung der Leistungsüberwachung des MySQL-Servers mit Prometheus und Grafana

Überblick

Prometheus ist ein Open-Source-Dienstüberwachungssystem, das über das HTTP-Protokoll Daten von Remotecomputern sammelt und in einer lokalen Zeitreihendatenbank speichert. Es bietet eine einfache Weboberfläche, eine leistungsstarke Abfragesprache, eine HTTP-Schnittstelle und mehr. Prometheus sammelt Überwachungsdaten über Exporter, die auf Remote-Rechnern installiert sind. Dabei kommen folgende zwei Exporter zum Einsatz:

  1. node_exporter – für Maschinensystemdaten
  2. mysqld_exporter – für MySQL-Serverdaten

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:

Die unterstützten Datenquellen können durch Plug-Ins erweitert werden.

Architekturdiagramm

Nachfolgend sehen Sie das Architekturdiagramm dieser Bereitstellung

Installieren und Ausführen von Prometheus

1. Installieren Sie Prometheus auf dem Monitor

Installieren Sie unter /opt/prometheus

$ wget https://github.com/prometheus/prometheus/releases/download/v1.5.2/prometheus-1.5.2.linux-amd64.tar.gz
$ tar zxvf prometheus-1.5.2.linux-amd64.tar.gz
$ mv prometheus-1.5.2.linux-amd64 /opt/prometheus

2. Bearbeiten Sie die Konfigurationsdatei prometheus.yml im Installationsverzeichnis

vim /opt/prometheus/prometheus.yml
# meine globale Konfiguration
weltweit:
 scrape_interval: 15s # Setzt das Scrape-Intervall auf 15 Sekunden. Der Standardwert ist 1 Minute.
 evaluation_interval: 15s # Regeln alle 15 Sekunden auswerten. Der Standardwert ist alle 1 Minute.
 # scrape_timeout ist auf den globalen Standardwert (10 s) eingestellt.
 # Fügen Sie diese Labels allen Zeitreihen oder Warnungen bei der Kommunikation mit
 # externe Systeme (Föderation, Remote-Speicher, Alertmanager).
 externe_Beschriftungen:
 Monitor: „Codelab-Monitor“
# Laden Sie Regeln einmal und bewerten Sie sie regelmäßig gemäß dem globalen „Evaluation_Intervall“.
Regeldateien:
 # - "erste.regeln"
 # - "zweite.Regeln"
# Eine Scrape-Konfiguration, die genau einen zu scrapenden Endpunkt enthält:
# Hier ist es Prometheus selbst.
scrape_configs:
 # Der Jobname wird als Label „job=<job_name>“ zu jeder aus dieser Konfiguration extrahierten Zeitreihe hinzugefügt.
 - Jobname: „Prometheus“
 # metrics_path ist standardmäßig „/metrics“
 # Schema ist standardmäßig auf „http“ eingestellt.
 statische_Konfigurationen:
 - Ziele: ['localhost:9090']
 # Folgendes ist der hinzugefügte Teil - job_name: linux
 statische_Konfigurationen:
 - Ziele: ['172.30.251.214:9100']
 Beschriftungen:
 Instanz: db1
 - Jobname: mysql
 statische_Konfigurationen:
 - Ziele: ['172.30.251.214:9104']
 Beschriftungen:
 Instanz: db1

Darunter: 172.30.251.214 ist die IP-Adresse von MySQL und der Port ist der entsprechende Abhörport des Exporteurs.

3. Starten Sie Prometheus

[loya@centos6 prometheus]$ ./prometheus
INFO[0000] Prometheus wird gestartet (Version=1.5.2, Zweig=Master, Revision=bd1182d29f462c39544f94cc822830e1c64cf55b) Quelle=main.go:75
INFO[0000] Build-Kontext (go=go1.7.5, Benutzer=root@a8af9200f95d, Datum=20170210-14:41:22) Quelle=main.go:76
INFO[0000] Konfigurationsdatei prometheus.yml wird geladen source=main.go:248
INFO[0000] Serienkarte und Kopfblöcke werden geladen... Quelle=storage.go:373
INFO[0000] 0 Serien geladen. Quelle=storage.go:378
INFO[0000] Zielmanager wird gestartet... Quelle=targetmanager.go:61
INFO[0000] Abhören auf:9090 Quelle=web.go:259

Prometheus verfügt über eine integrierte Weboberfläche, auf die über http://monitor_host:9090 zugegriffen werden kann:

Auf der Seite „Status -> Ziele“ können Sie die beiden von uns konfigurierten Ziele sehen. Ihr Status lautet „DOWN“.

4. Als nächstes müssen Sie den Exporter auf dem überwachten Computer installieren und ausführen

Exportprogramme herunterladen und entpacken:

$ mkdir /opt/prometheus/prometheus_exporters
$ cd /opt/prometheus/prometheus_exporters
$ wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0-rc.1/node_exporter-0.14.0-rc.1.linux-amd64.tar.gz
$ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.9.0/mysqld_exporter-0.9.0.linux-amd64.tar.gz
$ tar zxvf node_exporter-0.14.0-rc.1.linux-amd64.tar.gz
$ tar zxvf mysqld_exporter-0.9.0.linux-amd64.tar.gz
# Verschieben Sie die entsprechenden ausführbaren Dateien nach /opt/prometheus/prometheus_exporters
$ ll /opt/prometheus/prometheus_exporters
insgesamt 24464
-rwxr-xr-x 1 root root 12182376 23. Febr. 19:01 mysqld_exporter
-rwxr-xr-x 1 root root 12862209 23. Februar 19:01 node_exporter

Führen Sie node_exporter aus.

$ cd /opt/prometheus/prometheus_exporters
$ ./node_exporter 
INFO[0000] node_exporter wird gestartet (Version=0.14.0-rc.1, Zweig=Master, Revision=5a07f4173d97fa0dd307db5bd3c2e6da26a4b16e) Quelle="node_exporter.go:136"
INFO[0000] Build-Kontext (go=go1.7.4, Benutzer=root@ed143c8f2fcd, Datum=20170116-16:00:03) Quelle="node_exporter.go:137"
INFO[0000] Kein Verzeichnis angegeben, siehe --collector.textfile.directory source="textfile.go:57"
INFO[0000] Aktivierte Collector: source="node_exporter.go:156"
INFO[0000] - Entropiequelle="node_exporter.go:158"
INFO[0000] - loadavg Quelle="node_exporter.go:158"
INFO[0000] - stat Quelle="node_exporter.go:158"
INFO[0000] - diskstats Quelle="node_exporter.go:158"
INFO[0000] - Textdateiquelle="node_exporter.go:158"
INFO[0000] - vmstat Quelle="node_exporter.go:158"
INFO[0000] - meminfo Quelle="node_exporter.go:158"
INFO[0000] - filefd Quelle="node_exporter.go:158"
INFO[0000] - Dateisystemquelle="node_exporter.go:158"
INFO[0000] - mdadm Quelle="node_exporter.go:158"
INFO[0000] - netdev-Quelle="node_exporter.go:158"
INFO[0000] - sockstat Quelle="node_exporter.go:158"
INFO[0000] - Zeitquelle="node_exporter.go:158"
INFO[0000] - zfs-Quelle="node_exporter.go:158"
INFO[0000] - edac Quelle="node_exporter.go:158"
INFO[0000] - hwmon Quelle="node_exporter.go:158"
INFO[0000] - netstat Quelle="node_exporter.go:158"
INFO[0000] - uname Quelle="node_exporter.go:158"
INFO[0000] - conntrack-Quelle="node_exporter.go:158"
INFO[0000] Abhören auf:9100 Quelle="node_exporter.go:176"

mysqld_exporter muss eine Verbindung zu MySQL herstellen und benötigt daher MySQL-Berechtigungen. Wir legen einen Benutzer dafür an und erteilen ihm die erforderlichen Berechtigungen:

mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'prom'@'localhost' identifiziert durch 'abc123';
mysql> GRANT SELECT ON performance_schema.* TO 'prom'@'localhost';

Erstellen Sie die Datei .my.cnf und führen Sie mysqld_exporter aus:

$ cd /opt/prometheus/prometheus_exporters
$
$ cat << EOF > .meine.cnf
[Kunde]
Benutzer=Abschlussball
Passwort=abc123
Ende der Laufzeit
$
$ ./mysqld_exporter -config.my-cnf=".my.cnf"
INFO[0000] mysqld_exporter wird gestartet (Version=0.9.0, Zweig=Master, Revision=8400af20ccdbf6b5e0faa2c925c56c48cd78d70b) Quelle=mysqld_exporter.go:432
INFO[0000] Build-Kontext (go=go1.6.3, Benutzer=root@2c131c66ca20, Datum=20160926-18:28:09) Quelle=mysqld_exporter.go:433
INFO[0000] Lausche auf:9104 Quelle=mysqld_exporter.go:451

Gehen Sie zurück zur Prometheus-Weboberfläche „Status->Ziele“. Dort sehen Sie, dass der Status der beiden Ziele nun „UP“ lautet:

Installieren und Ausführen von Grafana

Installieren:

Die offizielle Dokumentation zur Grafana-Installation ist ziemlich klar, deshalb werde ich hier nicht ins Detail gehen.

Konfiguration:

Bearbeiten Sie die Konfigurationsdatei /etc/grafana/grafana.ini und ändern Sie die Werte der beiden Parameter im Abschnitt dashboards.json:

[dashboards.json]
aktiviert = wahr
Pfad = /var/lib/grafana/dashboards

Prometheus-Dashboard importieren:

$ git clone https://github.com/percona/grafana-dashboards.git
$ cp -r grafana-dashboards/dashboards /var/lib/grafana

Start-up:

$ /etc/init.d/grafana-server start

Greifen Sie über http://monitor_host:3000 auf die Grafana-Weboberfläche zu (der Standardbenutzername/das Standardkennwort lautet admin/admin).

Fügen Sie nach der Anmeldung über die Seite „Datenquellen“ eine Datenquelle hinzu:

Sie können das Diagramm dann rendern, indem Sie verschiedene Dashboards (oben links) und Zeiträume (oben rechts) auswählen:

Systemübersicht:

MySQL-Übersicht:

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • 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
  • Prometheus überwacht MySQL mithilfe der Grafana-Anzeige
  • 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

<<:  Einführung und Verwendung des Javascript-Generators

>>:  So lösen Sie das Problem, dass der Ping erfolgreich ist, der Port jedoch unter Linux nicht verfügbar ist

Artikel empfehlen

MySQL-Triggerprinzip und Analyse von Anwendungsbeispielen

Dieser Artikel erläutert anhand von Beispielen di...

VUE + SpringBoot implementiert die Paging-Funktion

Dieser Artikel stellt hauptsächlich vor, wie pagi...

Analyse gängiger Anwendungsbeispiele von MySQL-Prozessfunktionen

Dieser Artikel veranschaulicht anhand von Beispie...

Mysql aktualisiert die Datenbank dynamisch - Skriptbeispiel - Erklärung

Das spezifische upgrade -Skript lautet wie folgt:...

So stellen Sie MySQL-Master und -Slave in Docker bereit

Bild herunterladen Auswählen eines MySQL-Images D...

JavaScript, um den Effekt des Klickens auf das Untermenü zu erzielen

In diesem Artikel wird der spezifische JavaScript...

Lernen, React-Gerüste zu bauen

1. Komplexität des Front-End-Engineerings Wenn wi...

MySQL-Lernnotizen zum Umgang mit doppelten Daten

MySQL verarbeitet doppelte Daten Einige MySQL-Tab...

Dieser Artikel hilft Ihnen, den Lebenszyklus in Vue zu verstehen

Inhaltsverzeichnis 1. vorErstellen & erstellt...

Zusammenfassung der Zeilenumbruchprobleme bei Textbereichen in HTML

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

Docker-Netzwerkmodus und Konfigurationsmethode

1. Docker-Netzwerkmodus Wenn Docker Run einen Doc...

Führen Sie die Schritte aus, um den Fehler 403 Forbidden in Nginx zu beheben.

Die Webseite zeigt 403 Forbidden an Nginx (Yum-In...