Checkmk
to checkmk.com

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
Windows
Linux

Das benötigte Plugin mk_mysql finden 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:

root@linux# chmod 700 mk_mysql
Befehl(e) in die Zwischenablage kopieren
Befehl(e) erfolgreich in die Zwischenablage kopiert!
Schreibzugriff auf die Zwischenablage wurde verweigert!

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

Windows

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
Windows
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 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 root ausfü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.cnf hinterlegten Passwort. Weitere Informationen finden Sie z.B. in der MySQL-Dokumentation.

Diese Angabe wird im üblichen Format für MySQL-Konfigurationsdateien vorgenommen:

/etc/check_mk/mysql.cfg
[client]
user=checkmk
password=MyPassword
Dateiinhalt in die Zwischenablage kopieren
Dateiinhalt erfolgreich in die Zwischenablage kopiert!
Schreibzugriff auf die Zwischenablage wurde verweigert!

Die so gespeicherten Zugangsdaten werden durch den folgenden Befehl noch vor unbefugtem Zugriff geschützt:

root@linux# chmod 400 mysql.cfg
Befehl(e) in die Zwischenablage kopieren
Befehl(e) erfolgreich in die Zwischenablage kopiert!
Schreibzugriff auf die Zwischenablage wurde verweigert!
Windows

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:

mysql discovery

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
Windows
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 detaillierte Anleitung zur asynchronen Ausführung von Plugins finden Sie im Artikel über den Linux-Agenten.

Windows

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:

C:\ProgramData\checkmk\agent\config\mysql.ini
[client]
user=checkmk
password=MyPassword
*socket=/var/run/mysqld/mysqld.sock*
Dateiinhalt in die Zwischenablage kopieren
Dateiinhalt erfolgreich in die Zwischenablage kopiert!
Schreibzugriff auf die Zwischenablage wurde verweigert!

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:

C:\ProgramData\checkmk\agent\config\mysql.ini
[client]
user=checkmk
password=MyPassword
*host=127.0.0.1*
Dateiinhalt in die Zwischenablage kopieren
Dateiinhalt erfolgreich in die Zwischenablage kopiert!
Schreibzugriff auf die Zwischenablage wurde verweigert!

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.

mysql sessions connections

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.

mysql connections

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.

mysql size database

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 Agentenbäckerei

CEE 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:

mysql bakery ruleset search

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.

mysql bakery

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
Windows
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'
Befehl(e) in die Zwischenablage kopieren
Befehl(e) erfolgreich in die Zwischenablage kopiert!
Schreibzugriff auf die Zwischenablage wurde verweigert!

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"
Befehl(e) in die Zwischenablage kopieren
Befehl(e) erfolgreich in die Zwischenablage kopiert!
Schreibzugriff auf die Zwischenablage wurde verweigert!
Tip

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 Plugin-Verzeichnis des Checkmk-Agenten ausführen.

root@linux# $MK_LIBDIR/plugins/mk_mysql
Befehl(e) in die Zwischenablage kopieren
Befehl(e) erfolgreich in die Zwischenablage kopiert!
Schreibzugriff auf die Zwischenablage wurde verweigert!

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

5.1. 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 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 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 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
Windows
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

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.


Letzte Änderung: Tue, 16 Dec 2025 14:49:51 GMT via Commit d301a2c0
Auf dieser Seite