Nagios: мониторинг MariaDB/MySQL

Автор: | 03/12/2014
 

nagios_logoДля мониторинга MySQL имеется несколько плагинов, но мы обойдёмся штатными утилитами Nagios Core.

Проверяем наличие файла плагина:

# find / -name "check_mysql" -type f
/usr/lib64/nagios/plugins/check_mysql

На сервере с установленным MySQL, который будем мониторить, создаём пользователя, с доступом только с хоста мониторинга:

MariaDB [vexim]> create user 'nagios'@'77.***.***.40' identified by 'p@ssw0rd';
Query OK, 0 rows affected (0.33 sec)

И тоже проверяем наличие файла check_mysql.

Открываем доступ на фаерволе для сервера мониторинга к порту MySQL:

# iptables -I INPUT 21 -p tcp -s 77.***.***.40 --dport 3306 -j ACCEPT
# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

С сервера мониторинга запускаем проверку:

# /usr/lib64/nagios/plugins/check_mysql -H 77.***.***.20 -u nagios -p p@ssw0rd
Uptime: 875899 Threads: 3 Questions: 1518011 Slow queries: 23 Opens: 12205 Flush tables: 2 Open tables: 64 Queries per second avg: 1.733

Работает, всё в порядке.

В конец файла /etc/nagios/objects/commands.cfg добавляем:

# MySQL
define command{
        command_name    check_mysql
        command_line    /usr/lib64/nagios/plugins/check_mysql -H '$HOSTADDRESS$'
}

define command{
        command_name    check_mysql_cmdlinecred
        command_line    /usr/lib64/nagios/plugins/check_mysql -H '$HOSTADDRESS$' -u '$ARG1$' -p '$ARG2$'
}

define command{
        command_name    check_mysql_database
        command_line    /usr/lib64/nagios/plugins/check_mysql -d '$ARG3$' -H '$HOSTADDRESS$' -u '$ARG1$' -p '$ARG2$'
}

Примечание: на Debian/Ubuntu эти проверки уже вроде есть в наборе, в CentOS – надо добавить вручную.

Тут три типа проверки, но пока мы будем использовать только check_mysql_cmdlinecred.

Редактируем файл настроек хоста, на котором расположен сервер MySQL, в данном случае это будет /etc/nagios/servers/venti.cfg.

Добавляем в него описание новой проверки:

define service {
        use                             local-service
        host_name                       venti
        service_description             MYSQL
        check_command                   check_mysql_cmdlinecred!nagios!p@ssw0rd
        use                             generic-service
        notifications_enabled           1
        notification_interval           1
}

Проверяем настройки:

# nagios -v /etc/nagios/nagios.cfg
...
Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

Перезапускаем Nagios:

# service nagios restart
Running configuration check...done.
Stopping nagios: done.
Starting nagios: done.

И смотрим в Services:

nagios_10

nagios_11

В случае ошибки вида:

[1417453973] Warning: Return code of 127 for check of service ‘MYSQL’ on host ‘venti’ was out of bounds. Make sure the plugin you’re trying to run actually exists.

проверьте доступ к серверу MySQL для созданного пользователя, и наличие файла плагина, в данном случае – /usr/lib64/nagios/plugins/check_mysql.