У меня Nagios 3 работает на Debian Wheezy. Я могу выполнить следующий запрос из командной строки. Учетные данные для mysql db хранятся в ~nagios/.my.cnf
nagios@intranet:~$ /usr/lib/nagios/plugins/check_mysql_query -H 'myhost.mydomain.com' -q "SELECT cast(AVG(availability)*100 AS DECIMAL(5,2) ) FROM crm.api_clients;" -w 70:100 -c 40:100
QUERY OK: 'SELECT cast(AVG(availability)*100 AS DECIMAL(5,2) ) FROM crm.api_clients;' returned 100.000000
Но когда та же команда вызывается из Nagios, он не может подключиться к базе данных.
Соответствующие разделы определения команды и службы:
define command{
command_name check_proxy
command_line /usr/lib/nagios/plugins/check_mysql_query -H 'myhost.mydomain.com' -q "SELECT cast(AVG(availability)*100 AS DECIMAL(5,2) ) FROM crm.api_clients;" -w '$ARG1$' -c '$ARG2$'
}
define service{
use generic-service ; Name of service template to use
host_name rds_read_replica
service_description Proxy availability
check_command check_proxy!70:100!40:100
}
В веб-консоли я вижу следующую ошибку службы:
QUERY CRITICAL: Access denied for user 'nagios'@'172.33.13.112' (using password: NO)
Консоль работает, когда я передаю команде имя пользователя и пароль. Но я бы хотел check_mysql_query
использовать учетные данные, хранящиеся в .my.cnf
. Как я могу этого добиться?
Nagios будет запускать плагины без ENV и, следовательно, без установки $ HOME. Вы можете смоделировать это с помощью env -i
для ручного тестирования.
Вы можете изменить свою команду проверки на что-то вроде HOME=/home/nagios && /usr/lib/nagios/plugins/check_mysql_query ...
(или какой там путь).
Если вы не можете заставить это работать, оберните всю эту check_command в сценарий оболочки, который устанавливает HOME, прежде чем вызывать настоящий плагин. Также не забудьте взять код возврата и передать его через сценарий оболочки.