check_mysql_slavestatus RPE:无法读取输出

我从nagios交换check_mysql_slavestatus在Ubuntu上使用Nrpe插件。

手工从:

root@Bastion-01:/usr/local/nagios/libexec# ./check_mysql_slavestatus -H Slave-ip -P 3306 -u root -p xxxxx -w 10 -c 20 OK: Slave SQL running: Yes Slave IO running: Yes / master: 172.31.20.9 / slave is 0 seconds behind master | delay=0s 

同样,它从主数据库工作

 root@DB-01:/usr/lib/nagios/plugins# ./check_mysql_slavestatus -H Slave-ip -P 3306 -u root -p xxxxx -w 10 -c 20 OK: Slave SQL running: Yes Slave IO running: Yes / master: 172.31.20.9 / slave is 0 seconds behind master | delay=0s 

获取错误

 root@Bastion-01:/usr/local/nagios/libexec# ./check_nrpe -H Master-ip -c check_mysql_slavestatus NRPE: Unable to read output 

在Nagios服务器上

在Command.cfg中

 define command{ command_name check_mysql_slavestatus command_line $USER1$/check_mysql_slavestatus -H $HOSTADDRESS$ -P $ARG1$ -u $ARG2$ -p $ARG3$ -w $ARG4$ -c $ARG5$ } 

vim /usr/local/nagios/etc/objects/nagios_DB1.cfg

 define service{ use generic-service host_name DB-01 service_description check_mysql_slavestatus check_command check_nrpe!check_mysql_slavestatus!hostname!portnumber!username!passwd!15!50 } 

在Nagios上输出

 check_mysql_slavestatus CRITICAL 06-09-2015 13:51:51 0d 2h 45m 12s 3/3 (No output on stdout) stderr: execvp(/check_nrpe, ...) failed. errno is 2: No such file or directory 

请让我知道我错了

按照故障排除文档https://assets.nagios.com/downloads/nagiosxi/docs/NRPE-Troubleshooting-and-Common-Solutions.pdf

vim / etc / sudoers

 nagios ALL= NOPASSWD: sudo /usr/lib/nagios/plugins/check_mysql_slavestatus 

看起来你并不完全理解NRPE是如何工作的。 您的Nagios服务器上没有安装check_nrpe插件,或者其path错误。 很难说,没有看到你的check_nrpe命令定义。

此外,你似乎有点困惑如何将macros传递给check_nrpe …

check_nrpe!check_mysql_slavestatus!hostname!portnumber!username!passwd!15!50表示:

 ARG1 = check_mysql_slavestatus ARG2 = hostname ARG3 = port ARG4 = user ARG5 = pass ARG6 = 15 ARG7 = 50. 

这几乎肯定不是你打算/想要的,除非你的check_nrpe命令需要7个参数(不太可能)。

把它check_nrpe!check_mysql_slavestatus hostname portnumber username passwd 15 50会更正确,但是这只有在你configuration了NRPE来匹配的时候才会起作用。 它必须接受命令参数,并且您的check_nrpe命令定义必须在末尾使用-a $ARG1 。

此外,您需要定义check_mysql_slavestatus命令,该命令在远程端的NRPEconfiguration中使用所有这些参数,而不是在Nagios服务器上。

这可能有助于再次阅读NRPE文档 。