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 Agentenplugin 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 Agentenbäckerei ein.
2. Einrichten der Überwachung
2.1. Benutzer einrichten
Die einzige Voraussetzung für die Einrichtung der Überwachung innerhalb von MySQL ist, dass ein Datenbanknutzer und dessen Passwort vorhanden sein müssen. 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 Benutzer zur Überwachung der Replica Server noch mindestens die Berechtigung REPLICATION CLIENT erteilt werden:
mysql> GRANT REPLICATION CLIENT ON *.* TO 'checkmk'@'localhost';2.2. Plugin installieren
- Linux
Das benötigte Plugin
mk_mysqlfinden Sie in Ihrer Checkmk-Instanz über Setup > Linux, Solaris, AIX files > Plugins oder alternativ 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:Selbstverständlich kann auch dieses Plugin auf Wunsch asynchron 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.
2.3. Konfigurationsdatei erstellen
Die Konfigurationsdatei, die Sie im Folgenden — oder über die Agentenbäckerei — erstellen, wird als einzige Quelle für die Einstellungen rund um das MySQL-Monitoring genutzt. Eventuell lokal existierende andere Konfigurationseinstellungen werden von Checkmk nicht berücksichtigt.
- Linux
Erzeugen Sie anschließend eine Datei mit dem Namen
mysql.cfgim Konfigurationsverzeichnis (regulär:/etc/check_mk/) des Checkmk-Agenten auf dem Ziel-Host.Unter Verwendung der darin eingetragenen Benutzerdaten kann der Agent die gewünschten Informationen aus Ihrer MySQL-Instanz abrufen. Zwar ist die Angabe eines Datenbankbenutzers optional, wir empfehlen diese allerdings, da der Agent das Plugin in der Regel als Systembenutzer
rootausführt. Wird kein Name eines Datenbankbenutzers angegeben, versucht der MySQL-Client den Zugriff auf die Datenbank mit dem Benutzernamen des ausführenden Systembenutzers ohne Verwendung eines Passworts oder dem in.mylogin.cnfhinterlegten Passwort. Weitere Informationen finden Sie z.B. in der MySQL-Dokumentation.Diese Angabe wird im üblichen Format für MySQL-Konfigurationsdateien vorgenommen:
Die so gespeicherten Zugangsdaten werden durch den folgenden Befehl noch vor unbefugtem Zugriff geschützt:
- Windows
Auf einem Windows-Host legen Sie im unten angegebenen Verzeichnis eine Datei names
mysql.inian.Sollten Sie auf dem Host mehrere MySQL-Instanzen mit verschiedenen Benutzernamen und Passwörtern betreiben, erstellen Sie einfach 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 Service-Erkennung 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_mysqleinfach in ein Unterverzeichnis mit dem Namen300. Eine detaillierte Anleitung zur asynchronen 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
executionunterpluginsum den folgenden Eintrag:Eine detaillierte Anleitung zur asynchronen 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 Datei mysql.cfg lediglich die Variable socket.
Hier an dem Beispiel der Windows-Konfigurationsdatei:
Host manuell definieren
Des Weiteren 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:
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.
In den Service monitoring rules 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 Regelsatz MySQL connections im Handumdrehen bewerkstelligen. Gleiches gilt dann auch für die Anzahl der offenen Verbindungen.

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 MySQL database sizes festlegen.

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:
/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 ended4. Konfiguration über die Agentenbäckerei
Die Einrichtung wird mittels der Agentenbäckerei 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 Befehlszeile 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 Agentenbäckerei anlegen.
Sie finden den Regelsatz unter Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules.
In dem Suchfeld können Sie dann nach mysql suchen:

Tragen Sie User ID und Password des neuen Datenbankbenutzers 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 Befehlszeile vorher nur das jeweilige Konfigurationsverzeichnis bekannt gemacht werden.
- Linux
Prüfen Sie zuerst die für Ihren jeweiligen Host gültigen Verzeichnisse.
Erzeugen Sie nun mit dem Befehl export die Umgebungsvariablen
MK_CONFDIRundMK_LIBDIR. Passen Sie die Befehle entsprechend Ihrer tatsächlichen Verzeichnisse an.
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_mysqldirekt im Plugin-Verzeichnis des Checkmk-Agenten ausführen.Wenn alle Berechtigungen für den Datenbanknutzer korrekt erteilt sind, sollten Sie jetzt selbst in einer kleinen und frischen MySQL-Umgebung mehrere Hundert Zeilen Ausgabe sehen.
- Windows
Um das Check-Plugin auf einem Windows-Host manuell anführen zu können, öffnen Sie zuerst eine Befehlszeile mit Admin-Rechten. Setzen Sie in dieser Befehlszeile nun die Umgebungsvariable
MK_CONFDIR. Diese wird benötigt, damit das Plugin Ihre Konfigurationsdateien finden kann.
Auch hier ist die gesetzte Umgebungsvariable nicht permanent, sondern besteht nur, solange diese Befehlszeile offen ist.
Bei der eigentlichen Ausführung des Plugins empfiehlt es sich die Ausgabe auf die Befehlszeile umzulenken. Zu diesen Zwecks liefert Windows das Bordwerkzeug
cscriptmit.
5.1. Mögliche Fehler und Fehlermeldungen
Die Fehlermeldung connect to server at xyz failed deutet darauf hin, dass der in der Konfigurationsdatei angegebene Benutzer 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 Benutzername oder das Passwort falsch sein, erhalten Sie in etwa die folgende Fehlermeldung:
Access denied for user checkmkSollten 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 die Berechtigung 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_agentDer 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.cfgDie Konfigurationsdatei für das MySQL-Plugin.
/etc/check_mk/mysql.local.cfgWeitere Konfigurationsdatei um Host-spezifische Sockets anzugeben.
- Windows
Pfad Verwendung C:\ProgramData\checkmk\agent\plugins\Das übliche Verzeichnis, in dem Plugins abgelegt werden.
C:\ProgramData\checkmk\agent\config\Das übliche Konfigurationsverzeichnis.
6.2. Auf dem Checkmk-Server
| Pfad | Verwendung |
|---|---|
|
Das Plugin, welches auf dem MySQL-Host die Daten holt. |
