mysql-Replikation mit Nagios überwachen 2


Ich habe schon hier darauf hingewiesen, dass man zwar eine Replikation leicht wieder aufsetzen kann, dazu muss man aber auch mitbekommen, dass diese nicht mehr läuft. Statt wie ein dressierter Affe des öfteren "CHECK SLAVE STATUS\G" in mysql einzugeben, lasse ich das lieber Nagios machen. Dadurch bekomme ich Fehlerfall eine Email und einen freundlichen Hinweise in Firefox.

Zur Überwachung setze ich check_mysql_health ein.

Man kann damit weit mehr als nur die Replikation überwachen, in diesem Post geht es aber lediglich darum. 😉

Am Ende werden slave-io (läuft der IO-Thread?), slave-sql (läuft der SQL-Thread?) und slave-lag (Verzögerung zwischen den beiden Servern) überwacht.

Ich habe für den localhost unter /usr/local/nagios/etc/objects/localhost verschiedene Configs zu liegen. Diese werden beim Start eingebunden, wenn in /usr/local/nagios/etc/nagios.cfg
cfg_dir=/usr/local/nagios/etc/objects/localhost
definiert ist.

Die mysql-Checks werden in /usr/local/nagios/etc/objects/localhost/mysql.cfg eingetragen.

define command{
command_name check_mysql_health
command_line $USER1$/check_mysql_health -mode $ARG1$ --username $USER3$ --password $USER4$ --warn $ARG2$ --crit $ARG3$ --hostname $HOSTNAME$
}

define service{
use important-service
service_description MYSQL slave-io
host_name obelix.schaal-24.de
check_command check_mysql_health!slave-io-running
}

define service{
use important-service
service_description MYSQL slave-sql
host_name obelix.schaal-24.de
check_command check_mysql_health!slave-sql-running
}

define service{
use important-service-graph
service_description MYSQL slave-lag
host_name obelix.schaal-24.de
check_command check_mysql_health!slave-lag!10!60
}

Die entsprechenden Werte für $USERX$ sind in /usr/local/nagios/etc/resource.cfg hinterlegt:

# Sets $USER1$ to be the path to the plugins
$USER1$=/usr/local/nagios/libexec
# mysql-passwords
$USER3$=nagios
$USER4$=SECRET_PASSWORD

Ich nehme extra einen eigenen User, da dieser nur wenig Rechte braucht und ich diesen auf allen sql-Servern eingetragen habe. Ich kann damit von einem Nagios-Server aus problemlos beliebig viele sql-Server überwachen.

important-service und important-service-graph sind Erweiterung zum generic-service und stehen in /usr/local/nagios/etc/objects/templates.cfg

define service{
name important-service
use generic-service
max_check_attempts 3
normal_check_interval 1
retry_check_interval 1
register 0
}

define service{
name important-service-graph
use important-service
notes Graph
notes_url /nagios/display_nagios_info.php?name1=$HOSTNAME$&name2=$SERVICEDESC$
}

Das ganze geht natürlich auch für remote-Server. Da der Check direkt über mysql läuft, muss das auch nicht über NRPE oder ähnliches erfolgen. Es muss nur der Hostname angepasst werden (und ggf. sql-user und Paßwort):

define service{
use important-service
service_description MYSQL slave-io
host_name idefix.schaal-24.de
check_command check_mysql_health!slave-io-running
}


Kommentar erstellen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

2 Gedanken zu “mysql-Replikation mit Nagios überwachen

  • Peter

    It’s a shame you don’t have a donate button! I’d without a doubt donate to this fantastic blog! I suppose for now i’ll settle for bookmarking and adding your RSS feed to my Google account. I look forward to new updates and will share this blog with my Facebook group. Talk soon!