Для мониторинга 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:
В случае ошибки вида:
[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
.