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 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 Nutzer zur Überwachung der Replica 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 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.
PS> 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 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 Passwortes 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:
[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.
[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 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_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
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:
plugins:
execution:
- pattern: mk_mysql.vbs
cache_age: 300
async: yes
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:
[client]
user=checkmk
password=MyPassword
*socket=/var/run/mysqld/mysqld.sock*
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:
[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. 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 Size of MySQL databases 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 ended
4. Konfiguration über die Agentenbäckerei
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 Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules. In dem Suchfeld können Sie dann nach
mysql
suchen:
Tragen Sie User ID und Password den 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 Plugin-Verzeichnis
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.
PS> 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 Plugins empfiehlt es sich die Ausgabe auf die Kommandozeile umzulenken.
Zu diesen Zwecks liefert Windows das Bordwerkzeug cscript
mit.
PS> 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 |
---|---|
|
Der Agent, welcher alle Daten zu dem Host sammelt. |
|
Das übliche Verzeichnis, in dem Plugins abgelegt werden. |
|
Die Konfigurationsdatei für das MySQL-Plugin. |
|
Weitere Konfigurationsdatei um Host-spezifische Sockets anzugeben |
Windows
Pfad | Verwendung |
---|---|
|
übliches Plugins-Verzeichnis |
|
Übliches Konfigurationsverzeichnis |
|
übliches Konfigurationsverzeichnis vor Checkmk-Version 1.6.0 |
|
übliches Plugins-Verzeichnis vor Checkmk-Version 1.6.0 |
6.2. Auf dem Checkmk-Server
Pfad | Verwendung |
---|---|
|
Das Plugin, welches auf dem MySQL-Host die Daten holt. |