MySQL Server mit Munin überwachen
Einen MySQL Server kann man sehr einfach mit Munin überwachen. Die Plugins rufen dazu in regelmäßigen Abständen mysqladmin auf und werten das Ergebnis aus. Das Standard Munin Paket bringt auch schon ein paar Plugins mit die man nur aktivieren muss, aber es gibt noch weitere die auch interessant sind. Hier eine kurze Erklärung wie man sie installiert und was sie anzeigen:
Vorbereitung
Debian Squeeze: Ab Debian Squeeze braucht man das nicht mehr machen. Hier steht in der munin-node das folgende. Hier wird der debian-sys-maint User benutzt um mysqladmin zu betreiben. Das gleiche funktioniert auch schon bei Debian Lenny. Man muss es nur eintragen.
$ nano /etc/munin/plugin-conf.d/munin-node
[mysql*] user root env.mysqlopts --defaults-file=/etc/mysql/debian.cnf env.mysqluser debian-sys-maint env.mysqlconnection DBI:mysql:mysql;mysql_read_default_file=/etc/mysql/debian.cnf
Und den Munin-node neu starten nicht vergessen.
$ /etc/init.d/munin-node restart
MySQL Munin Standard Plugins aktivieren
Die folgenden Plugins sind bereits im Standard Munin Paket enthalten und machen meiner Ansicht nach Sinn.

$ ln -s /usr/share/munin/plugins/mysql_bytes /etc/munin/plugins/mysql_bytes

$ ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries

$ ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries

$ ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads
weitere MySQL-Munin Plugins
Wie erwähnt, gibt es noch weitere MySQL Plugins die interessant sein können. Einige findet man auf Munin Exchange, aber nicht alle. Deshalb hier ein kleines Downloadpaket der folgenden Plugins.
Die Plugins legt man bei Debian unter /usr/share/munin/plugins/ ab (auf die Rechte achten, chmod 755). Dann erstellt man einen Symlink nach /etc/munin/plugins und startet den munin-node neu.
Beispiel:
$ nano /usr/share/munin/plugins/testplugin $ chmod 755 /usr/share/munin/plugins/testplugin $ ln -s /usr/share/munin/plugins/testplugin /etc/munin/plugins/testplugin $ /etc/init.d/munin-node
Es lohnt sich die Plugins zu testen bevor man sie linkt. Dazu kann man sie einfach aufrufen. Viele bringen Parameter mit die einem bei der Konfiguration helfen.
$ /usr/share/munin/plugins/testplugin $ /usr/share/munin/plugins/testplugin config $ /usr/share/munin/plugins/testplugin autoconf
Bei Wildcardplugins gibt es meist noch den Parameter suggest.

Anmerkung: Die auf dem Server vorhandenen Datenbanken werden in einer Funktion am Ende des Plugins ermittelt. Hier ist fest der Standard mysql data Pfad von Debian eingetragen (/var/lib/mysql/). Sollten die Datenbanken an einem anderen Ort liegen muss der Pfad hier angepasst werden. Es gibt außerdem noch ein mysql_size_ Plugin, das man zum monitoren einzelner Datenbanken benutzen kann.
$ ln -s /usr/share/munin/plugins/mysql_size_all /etc/munin/plugins/mysql_size_all

$ ln -s /usr/share/munin/plugins/mysql_connections /etc/munin/plugins/mysql_connections

$ ln -s /usr/share/munin/plugins/mysql_keybuffer /etc/munin/plugins/mysql_keybuffer

$ ln -s /usr/share/munin/plugins/mysql_keys /etc/munin/plugins/mysql_keys

$ ln -s /usr/share/munin/plugins/mysql_qcache_mem /etc/munin/plugins/mysql_qcache_mem

$ ln -s /usr/share/munin/plugins/mysql_qcache_hits /etc/munin/plugins/mysql_qcache_hits
Alles zusammen
Hier noch einmal der Downloadlink zu den Plugins und die Befehle zum linken für die Faulen unter uns (also für mich).
chmod 755 /usr/share/munin/plugins/* && ln -s /usr/share/munin/plugins/mysql_bytes /etc/munin/plugins/mysql_bytes && ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries && ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries && ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads && ln -s /usr/share/munin/plugins/mysql_size_all /etc/munin/plugins/mysql_size_all && ln -s /usr/share/munin/plugins/mysql_connections /etc/munin/plugins/mysql_connections && ln -s /usr/share/munin/plugins/mysql_keybuffer /etc/munin/plugins/mysql_keybuffer && ln -s /usr/share/munin/plugins/mysql_keys /etc/munin/plugins/mysql_keys && ln -s /usr/share/munin/plugins/mysql_qcache_mem /etc/munin/plugins/mysql_qcache_mem && ln -s /usr/share/munin/plugins/mysql_qcache_hits /etc/munin/plugins/mysql_qcache_hits && /etc/init.d/munin-node restart
Nicht dabei was du suchst? Nimmt man sich die vorhandenen Plugins als Basis, kann man sehr einfach eigene Plugins erstellen die die gewünschten System Variablen überwachen.
7 Kommentare
ric
schrieb am 29.11.2010 um 17:50 Uhr
super anleitung, vielen dank!
kleine anmerkung noch: der hart codierte pfad zum verzeichnis mit den datenbanken in der datei mysql_size_all des downloadpaketes ist noch _nicht_ auf den debian-standard-pfad gesetzt, sondern zeigt noch auf /var/lib/mysql/
der korrekte pfad lautet /var/lib/mysql/ wie im blog-text beschrieben
ric
schrieb am 29.11.2010 um 18:07 Uhr
ups! “sondern zeigt noch (fälschlicherweise) auf /mysql/data/” wollte ich gesagt haben. sorry.
übrigens habe ich die plugins erfolgreich auf zwei lenny-systemen eingerichtet. das erste system mit mysql und das zweite mit mariadb.
kostaki
schrieb am 29.11.2010 um 19:25 Uhr
Ups sorry. Das war der Pfad auf meinem Testsystem. Ist jetzt angepasst.
ralph
schrieb am 08.06.2011 um 12:26 Uhr
Hey, bau dir mal einen Flattr Button ein.
Gruß
ralph
Tom
schrieb am 26.06.2012 um 11:47 Uhr
Wenn einem:
munin-node-configure –suggest
für mysql_ folgendes sagt:
[Missing dependency Cache::Cache]
dann sollten man die Perl Caching Libs installieren:
aptitude install libcache-cache-perl
some12
schrieb am 19.09.2012 um 10:03 Uhr
hi!
Wie kann man Datenbanken aus dem Chart (mysql_size_all) löschen, wenn diese auch aus mysql gelöscht wurden?
Die Datenbanken sind nciht mehr vorhanden – munin-run mysql_size_all gibt diese auch cniht mehr aus, aber im graph sind diese weiterhin mit deren größe damals angegeben…
Uwe Schräpler
schrieb am 16.02.2013 um 13:25 Uhr
Hallo und herzlichen Dank für Deine gute Anleitung, das hat definitiv meine Zeit gespart.
Gruß aus Berlin