Nagios MySQL Server überwachen

Natürlich lässt sich auch ein MySQL Server mit Nagios überwachen. Dazu sind neben den gewohnten Einstellungen in Nagios auch ein paar Aktionen MySQL-Seitig notwendig.

Zuerst muss sichergestellt sein, dass der MySQL Server extern erreichbar ist. Per Default kann ein MySQL Server nur vom localhost bzw. 127.0.0.1 angesprochen werden. Das lässt sich in der my.cnf schnell ändern:

nano /etc/mysql/my.cnf

Hier folgenden Wert mit # auskommentieren

# bind-address = 127.0.0.1

ACHTUNG: Der Server ist jetzt vom gesamten Netzwerk aus erreichbar. Wer sicherstellen will, dass nur ausgewählte Maschinen darauf zugreifen können sollte das über eine Firewall und entsprechende Portfreigaben für ausgewählte IPs einstellen.

Da Nagios nur einen Zustandscheck und keine speziellen Aktionen auf der MySQL Datenbank durchführen soll, währe es fahrlässig den root-User dafür zu verwenden. Wir müssen also einen neuen User anlegen und diesem ohne besondere Rechte Remote-Zugriff auf die Datenbank gewähren. Dazu zuerstmal mit einem berechtigen User (z.B. root) mit der MySQL-DB connecten:

mysql -u root -p

Noch ein Passwort eingeben und schon sollte man in der MySQL Konsole sein (erkennbar durch das voranstehende "mysql>"). Jetzt legen wir für Nagios einen eigenen User an:

CREATE USER 'nagios'@'10.11.12.13' IDENTIFIED BY 'meinPwd';
FLUSH PRIVILEGES;
exit;

Falls man bereits einen User hat, diesem aber externen Zugriff erlauben möchte, geht das so:

update mysql.user set Host='10.11.12.13' where user='nagios';
FLUSH PRIVILEGES;
exit;

Statt 10.11.12.13 sollte natürlich in beiden Fällen die IP des Nagios Monitors eingetragen werden.

Jetzt müssen wir Nagios konfigurieren und wechseln dazu auf den Monitor Server in die Services Konfigdatei.

nano /etc/nagios3/conf.d/services_nagios2.cfg

Hier muss jetzt ein neuer Dienst definiert werden wiefolgt:

# check that mysql services are running
define service {
        hostgroup_name                  mysql-servers
        service_description             MySQL
        check_command                   check_mysql_cmdlinecred!nagios!meinPwd
        use                             generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
}

Wie man sieht nutzen wir das Kommando check_mysql_cmdlinecred und hängen mit Ausrufezeichen separiert den Mysql Benutzernamen und das Passwort an. Anschließend noch die entsprechende Hostgroup erstellen

nano /etc/nagios3/conf.d/hostgroups_nagios2.cfg

und die zu überwachenden Server dort eintragen

# A list of your mysql servers
define hostgroup {
        hostgroup_name  mysql-servers
                alias           MySQL servers
                members         mail,mysql1
        }

Jetzt wird der Zustand des MySQL Service überwacht