Nagios

check_mysql_slavestatus RPE:無法讀取輸出

  • September 10, 2015

我在 Ubuntu 上使用來自 nagios 交換 check_mysql_slavestatus 的 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

同樣,它適用於 Master DB

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安裝外掛,或者它的路徑錯誤。如果沒有看到您的 check_nrpe 命令定義,很難確定。

此外,您似乎對如何將宏傳遞給 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內容會更正確,但這僅在您將 NRPE 配置為匹配時才有效。它必須接受命令參數,並且您的 check_nrpe 命令定義必須-a $ARG1在最後使用。

此外,您需要check_mysql_slavestatus在遠端端的 NRPE 配置中定義一個使用所有這些參數的命令,而不是在 Nagios 伺服器上。

再次閱讀NRPE 文件可能會有所幫助。

引用自:https://serverfault.com/questions/697648