Wir nutzen Cookies, um Ihnen eine optimale Nutzung dieser Webseite zu ermöglichen. Mehr Informationen finden Sie im Datenschutzhinweis. Wir nehmen an, dass Sie damit einverstanden sind, falls Sie diese Webseite weiter besuchen.

Ihre Cookie-Einstellungen
Ihre Einstellungen wurden aktualisiert.
Damit die Änderungen wirksam werden, löschen Sie bitte Ihre Browser-Cookies und den Cache und laden dann die Seite neu.

MySQL überwachen

1. Einleitung

Checkmk erlaubt Ihnen die umfangreiche Überwachung von MySQL und Galera Cluster für MySQL. Eine vollständige Liste der Überwachungsmöglichkeiten können Sie in unserem Katalog der Check-Plugins nachlesen. Unter anderem kann Checkmk die folgenden Werte überwachen:

Um die Datenbanken überwachen zu können, benötigen Sie neben dem Checkmk-Agenten lediglich das Agenten-Plugin auf dem Datenbankserver. Zusätzliche Software wird weder auf dem Checkmk- noch auf dem Datenbankserver benötigt.

Im Folgenden wird die Einrichtung für Linux- und Windows-Hosts beschrieben. Weiter unten, gehen wir auf die Einrichtung über die Agent Bakery ein.

2. Einrichten der Überwachung

2.1. Benutzer einrichten

Linux und Windows

Die einzige Voraussetzung für die Einrichtung der Überwachung innerhalb von MySQL ist, dass ein Datenbanknutzer und dessen Passwort vorhanden sein muss. Dieser Benutzer benötigt lediglich lesende Rechte auf die MySQL-Instanzen. Sollte noch kein solcher Benutzer vorhanden sein, legen Sie diesen in den zu überwachenden Instanzen an. Melden Sie sich dazu mit einem Benutzer mit ausreichenden Zugriffsberechtigungen in MySQL an und erzeugen Sie anschließend einen neuen Datenbanknutzer:

mysql> CREATE USER 'checkmk'@'localhost' IDENTIFIED BY 'MyPassword';

Dieser neu angelegte Benutzer benötigt die Berechtigung, die Instanzen zu lesen. Prüfen Sie daher, ob der Benutzer die notwendigen Berechtigungen hat, oder fügen Sie sie mit dem folgenden Befehl hinzu. Im folgenden Beispiel wird das für den Benutzer checkmk erledigt:

mysql> GRANT SELECT, SHOW DATABASES ON *.* TO 'checkmk'@'localhost';

Sollten Sie die MySQL Replikation einsetzen so muss dem Nutzer zur Überwachung der Slave Server noch mindestens das Recht REPLICATION CLIENT erteilt werden:

mysql> GRANT REPLICATION CLIENT ON *.* TO 'checkmk'@'localhost';

2.2. Plugin installieren

Linux

Das benötigte Plugin mk_mysql finden Sie auf ihrem Checkmk-Server im Verzeichnis ~/share/check_mk/agents/plugins/. Kopieren Sie dieses nun in einem ersten Schritt in das Plugins-Verzeichnis des Agenten auf dem zu überwachenden Host. Das Plugins-Verzeichnis lautet im Regelfall /usr/lib/check_mk_agent/plugins. Sobald das Skript im angegebenen Verzeichnis liegt, machen Sie dieses noch ausführbar:

root@linux# chmod 700 mk_mysql

Selbstverständlich kann auch dieses Plugin auf Wunsch asychron ausgeführt werden.

Windows

Der Agent für Windows wird standardmäßig bereits mit einer ganzen Reihe von Plugins ausgeliefert. Deshalb finden Sie auch das Plugin für die Überwachung von MySQL nach der Installation des Agenten bereits auf Ihrem Host. Dieses kopieren Sie für die Verwendung nur noch in das richtige Verzeichnis.

copy "c:\Program Files (x86)\checkmk\service\plugins\mk_mysql.vbs" c:\ProgramData\checkmk\agent\plugins\

2.3. Konfigurationsdatei erstellen

Linux

Erzeugen Sie anschließend eine Datei mit dem Namen mysql.cfg im Konfigurationsverzeichnis (regulär: /etc/check_mk) des Checkmk-Agenten auf dem Ziel-Host. Unter Verwendung der darin eingetragenen Nutzerdaten, kann der Agent die gewünschten Informationen aus Ihrer MySQL-Instanz abrufen. Zwar ist die Angabe eines Datenbanknutzers optional, wir empfehlen diese allerdings, da der Agent das Plugin in der Regel als root ausführt. Diese Angabe wird im üblichen Format für MySQL Konfigurationsdateien vorgenommen:

/etc/check_mk/mysql.cfg
[client]
user=checkmk
password=MyPassword

Die so gespeicherten Zugangsdaten werden durch das folgende Kommando noch vor unbefugtem Zugriff geschützt:

root@linux# chmod 400 mysql.cfg

Windows

Auf einem Windows-Host legen Sie im unten angegebenen Verzeichnis eine Datei names mysql.ini an.

C:\ProgramData\checkmk\agent\config\mysql.ini
[client]
user=checkmk
password=MyPassword

Sollten Sie auf dem Host mehrere MySQL-Instanzen mit verschiedenen Nutzernamen und Passwörtern betreiben, erstellen einfach Sie pro Instanz eine .ini-Datei nach dem folgenden Namensschema: mysql_INSTANZ-ID.ini

2.4. Services einrichten

Nachdem Sie das Plugin nun installiert und konfiguriert haben, können Sie für diesen Host eine Serviceerkennung durchführen. Der folgende Screenshot zeigt dabei nur eine Auswahl der auffindbaren Services:

3. Erweiterte Konfiguration

3.1. Asynchrone Ausführung des Plugins

Das Plugin für die Überwachung von MySQL kann - wie so viele andere - asynchron ausgeführt werden, um beispielsweise längeren Laufzeiten bei großen MySQL-Instanzen Rechnung zu tragen.

Linux

Auf einem Linux-Host wird das Plugin dafür nur in ein Unterverzeichnis des Plugin-Verzeichnisses verschoben. Möchten Sie das Plugin beispielsweise nur alle 5 Minuten ausführen, so verschieben Sie das Skript mk_mysql einfach in ein Unterverzeichnis mit dem Namen 300. Eine detailierte Anleitung zur asychronen Ausführung von Plugins finden Sie im Artikel über den Linux-Agenten.

Windows

Um das Plugin unter Windows asynchron auszuführen, passen Sie die Konfiguration des Agenten an und erweitern die Sektion execution unter plugins um den folgenden Eintrag:

C:\ProgramData\checkmk\agent\check_mk.user.yml
plugins:
    execution:
        - pattern: mk_mysql.vbs
          cache_age: 300
          async: yes

Eine detailierte Anleitung zur asychronen Ausführung von Plugins auf einem Windows-Host finden Sie im Artikel über den Windows-Agenten.

3.2. Zusätzliche Optionen der Konfigurationsdateien

Kommunikation mit MySQL über Socket einrichten

Statt den Agenten über TCP mit MySQL kommunizieren zu lassen, können Sie Checkmk anweisen den Socket anzusprechen. Dazu definieren Sie in der mysql.cfg lediglich die Variable socket. Hier an dem Beispiel der Windows-Konfigurationsdatei:

C:\ProgramData\checkmk\agent\config\mysql.ini
[client]
user=checkmk
password=MyPassword
socket=/var/run/mysqld/mysqld.sock

Host manuell definieren

Desweiteren ist es über die Konfigurationsdateien auch möglich den MySQL-Host manuell zu setzen. Die entsprechende Variable dazu heißt schlicht host. Auch hier wieder an dem Beispiel von Windows:

C:\ProgramData\checkmk\agent\config\mysql.ini
[client]
user=checkmk
password=MyPassword
host=127.0.0.1

3.3. Schwellwerte konfigurieren

Sitzungen überwachen

Einige der so eingerichteten Checks haben keine voreingestellten Schwellwerte. Meistens ist das der Fall, weil es keine sinnvollen Standardwerte gibt, die in den meisten Anwendungsfällen ausreichend wären. Diese können aber mit wenigen Handgriffen eingerichtet werden. Über die bekannten Host & Service Parameters finden Sie beispielsweise die Regel MySQL Sessions & Connections. Hiermit lassen sich die für ihre MySQL-Instanz sinnvollen Schwellwerte für den Service MySQL sessions festlegen.

Verbindungen überwachen

Auch für die Auslastung der durch MySQL vorgegebenen maximalen Anzahl an gleichzeitigen Verbindungen haben wir keine Schwellwerte vorgegeben, da diese viel stärker als bei anderen Services vom Aufbau Ihrer MySQL-Instanz abhängig sind. Die Einrichtung entsprechender Schwellwerte lässt sich mit einer Regel aus dem Satz MySQL Connections im Handumdrehen bewerkstelligen.

Datenbankgröße überwachen

Die Größe einzelner Datenbanken in MySQL wird durch das Check-Plugin mysql_capacity überwacht. Schwellwerte hierfür lassen sich mit der Regel Size of MySQL databases festelegen.

3.4. Log-Dateien überwachen

Unter Zuhilfenahme des Check-Plugins Logwatch können Sie auch die von MySQL erzeugten Log-Dateien auf Fehler überwachen. Nach der Einrichtung des Plugins prüfen Sie zuerst, wo in Ihrer MySQL-Instanz die entsprechenden Log-Dateien liegen. Den genauen Speicherort finden Sie in der .ini- bzw. .cnf-Datei Ihrer Instanz.

In der Konfigurationsdatei von Logwatch können Sie die für Sie interessanten Logs eintragen und auf einem Linux-Host etwa die folgenden Einträge vornehmen:

/etc/check_mk/logwatch.cfg
/var/log/mysql/error.log
 W Can't create/write to file
 C [ERROR] Can't start server
 C mysqld_safe mysqld from pid file /var/run/mysql/mysqld.pid ended

4. Konfiguration über die Agent Bakery

Die Einrichtung wird mittels der Agent Bakery sehr vereinfacht, da Syntaxfehler in den Konfigurationsdateien vermieden werden und Anpassungen an sich verändernde Umgebungen einfach bewerkstelligt werden können. Der wesentliche Unterschied zu einer manuellen Installation ist, dass Sie nur noch dann auf dem MySQL-Host auf der Kommandozeile arbeiten müssen, wenn Sie spezielle MySQL-spezifische Konfigurationen vornehmen möchten.

Für die erste Einrichtung reicht es, wenn Sie den Datenbankbenutzer auf dem MySQL-Host einrichten und eine entsprechende Regel in der Bakery anlegen. Sie finden den Regelsatz unter WATO ➳ Monitoring Agents ➳ Rules. In dem Suchfeld können Sie dann nach MySQL suchen:

Tragen Sie User ID und Password dem neuen Datenbanknutzer entsprechend ein. Über das folgende Feld können Sie für Linux-Hosts den Checkmk-Agenten so einstellen, dass er die Verbindung zu MySQL nicht über TCP sondern eben über den Socket aufbaut. Dies kann je nach Größe und Auslastung zu einer besseren Performance beitragen.

Eine asynchrone Ausführung des MySQL-Plugins ist ebenfalls über diesen Regelsatz einstellbar. Dies kann sinnvoll sein, um längeren Laufzeiten bei großen MySQL-Instanzen Rechnung zu tragen oder wenn die Statusdaten schlicht nicht im Minutentakt benötigt werden.

5. Diagnosemöglichkeiten

Sollte es beispielsweise bei der Einrichtung der Überwachung zu unerwartetem Verhalten oder Problemen kommen, so empfiehlt sich eine Prüfung direkt auf einem betroffenen Host. Da es sich bei den Plugins für die Überwachung von MySQL sowohl für Linux als auch für Windows um Shell- bzw. Visual Basic-Skripte handelt, können diese leicht auch ohne den Agenten ausgeführt werden. Unabhängig vom verwendeten Betriebssystem muss der Shell bzw. der Kommandozeile vorher nur das jeweilige Konfigurationsverzeichnis bekannt gemacht werden.

5.1. Diagnosemöglichkeiten unter Linux

Prüfen Sie zuerst die für ihren jeweiligen Host gültigen Verzeichnisse.

user@host:~$  grep 'export MK' /usr/bin/check_mk_agent
export MK_LIBDIR='/usr/lib/check_mk_agent'
export MK_CONFDIR='/etc/check_mk'

Erzeugen Sie nun mit dem Befehl export die Umgebungsvariablen MK_CONFDIR und MK_LIBDIR. Passen Sie die Befehle entsprechend Ihrer tatsächlichen Verzeichnisse an.

root@linux# export MK_CONFDIR="/etc/check_mk/"
root@linux# export MK_LIBDIR="/usr/lib/check_mk_agent"

Wichtig: Diese Umgebungsvariablen existieren nur in der aktuell geöffneten Shell und verschwinden sobald Sie diese schließen.

Anschließend können Sie das Skript mk_mysql direkt im Pluginverzeichnis des Checkmk-Agenten ausführen.

root@linux# $MK_LIBDIR/plugins/mk_mysql

Wenn alle Rechte für den Datenbanknutzer korrekt erteilt sind, sollten Sie jetzt selbst in einer kleinen und frischen MySQL-Umgebung mehrere Hundert Zeilen Ausgabe sehen.

5.2. Diagnosemöglichkeiten unter Windows

Um das Check-Plugin auf einem Windows-Host manuell anführen zu können, öffnen Sie zuerst eine Kommandozeile mit Admin-Rechten. Setzen Sie in dieser Kommandozeile nun die Umgebungsvariable MK_CONFDIR. Diese wird benötigt, damit das Plugin Ihre Konfigurationsdateien finden kann.

set MK_CONFDIR=c:\ProgramData\checkmk\agent\config

Wichtig: Auch hier ist die gesetzte Umgebungsvariable nicht permanent, sondern besteht nur, solange diese Kommandozeile offen ist.

Bei der eigentlichen Ausführung des Plugings empfiehlt es sich die Ausgabe auf die Kommandozeile umzulenken. Zu diesen Zwecks liefert Windows das Bordwerkzeug cscript mit.

cscript c:\ProgramData\checkmk\agent\plugins\mk_mysql.vbs

5.3. Mögliche Fehler und Fehlermeldungen

mysqladmin: connect to server at xyz failed

Die Fehlermeldung "connect to server at xyz failed" deutet darauf hin, dass der in der Konfigurationsdatei angegebene Nutzer keinen Zugriff auf MySQL hat. Prüfen Sie zuerst, dass sich keine Übertragungsfehler beim Anlegen der Konfigurationsdatei (mysql.cfg bzw. mysql.ini) eingeschlichen haben.

Sollte der in der Konfigurationsdatei angegebene Nutzername oder das Passwort falsch sein, erhalten Sie in etwa die folgende Fehlermeldung:

Access denied for user checkmk

Größe der Datenbank wird nicht ausgegeben

Sollten Sie in Checkmk zwar eine ganze Reihe von Daten Ihrer MySQL-Instanz sehen, es jedoch keinen Service geben, welcher die Größe der enthaltenen Datenbanken überwacht, so ist dies ein Indiz dafür, dass der Datenbanknutzer nicht über das Recht SELECT verfügt.

Prüfen Sie Ihren Datenbanknutzer aus MySQL heraus mit dem folgenden Befehl:

mysql> show grants for 'checkmk'@'localhost';
+--------------------------------------------------------------------------+
| Grants for checkmk@localhost                                             |
+--------------------------------------------------------------------------+
| GRANT SELECT, SHOW DATABASES ON *.* TO `checkmk`@`localhost`             |
+--------------------------------------------------------------------------+

Sollte hier in Ihrer Ausgabe das Schlüsselwort SELECT fehlen, so erteilen Sie dem Datenbanknutzer die entsprechenden Rechte, wie im Abschnitt Benutzer einrichten angegeben.

6. Dateien und Verzeichnisse

6.1. Auf dem MySQL-Host

Linux

Pfad Verwendung
/usr/bin/check_mk_agent Der Agent, welcher alle Daten zu dem Host sammelt.
/usr/lib/check_mk/plugins/ Das übliche Verzeichnis, in dem Plugins abgelegt werden.
/etc/check_mk/mysql.cfg Die Konfigurationsdatei für das MySQL-Plugin.
/etc/check_mk/mysql.local.cfg Weitere Konfigurationsdatei um Host-spezifische Sockets anzugeben

Windows

Pfad Verwendung
C:\ProgramData\checkmk\agent\plugins\ übliches Plugins-Verzeichnis
C:\ProgramData\checkmk\agent\config\ Übliches Konfigurationsverzeichnis
C:\Program Files (x86)\checkmk\agent\config\ übliches Konfigurationsverzeichnis vor Checkmk-Version 1.6.0
C:\Program Files (x86)\check_mk\plugins\ übliches Plugins-Verzeichnis vor Checkmk-Version 1.6.0

6.2. Auf dem Checkmk-Server

Pfad Verwendung
share/check_mk/agents/plugins/mk_mysql Das Plugin, welches auf dem MySQL-Host die Daten holt.