Linux

Nagios NRPE:未定義命令“my_command”

  • November 14, 2019

我已經安裝Nagios® Core™ 3.5.1NRPE v2.14在我的客戶端上執行RHEL 6.3

我的 Nagios 上有此錯誤消息

NRPE: Command 'check_mysql_connections' not defined

在我的nrpe.cfg我已經設置了allowed_host, include_dir

allowed_hosts=xx.xx.xx.xx
dont_blame_nrpe=1
include_dir=/etc/nagios/services

我的命令開啟/etc/nagios/services/check_mysql_connections.cfg

command[check_mysql_connections]=/usr/lib64/nagios/plugins/check_mysql_all -K connections -H myHOST -u myUSERNAME -p myPASSWORD

在 Nagios 伺服器上,我已經設置了nagios.cfg文件,並添加了commands-custom.cfg包含/etc/nagios/objects如下內容的文件:

define command {
command_name    check_mysql_connections
command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_mysql_connections
}

/etc/nagios/servers我已經添加了mysql.cfg

## Define Host Group ##

define hostgroup {
hostgroup_name          mysql-databases
alias                   MySQL Databases
}

#######################
## Define Hosts ##

define host {
use             linux-server
host_name       bdgbnbpmydb02
alias           MySQL Database
address         xx.xx.xx.xx
hostgroups      mysql-databases
contact_groups  admins
check_command   check-host-alive
}

#######################
## Define Service ##

define service {
use                     generic-service
hostgroup_name          mysql-databases
service_description     MySQL Connections
check_command           check_mysql_connections
}

我已經終止了該NRPE程序,刪除/var/run/nrpe.pid了 NRPE 程序,然後再次啟動了該程序。而且我的 NRPE 也沒有在 xinet.d 下執行

當我嘗試在遠端主機上本地執行命令時,它會給出結果。當我嘗試使用以下命令從 nagios 伺服器執行時:

/usr/lib64/nagios/plugins/check_nrpe -H xx.xx.xx.xx -c check_mysql_connections

它也給出了結果。我不知道出了什麼問題,因為我的所有其他命令都正常執行。

更新和解決

這麼多年後,我想起瞭如何解決這個問題。

我需要在 上編輯自定義命令(在 Nagios 伺服器commands-custom.cfg上) /etc/nagios/objects,所以它會是這樣的:

define command {
command_name         check_nrpe
command_line         $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 
}

在“定義服務”下是這樣的:

## Define Service ##

define service {
use                     generic-service
hostgroup_name          mysql-databases
service_description     MySQL Connections
check_command           check_nrpe!check_mysql_connections
}

總之,我需要將命令分開來檢查服務check_nrpe並使用呼叫自定義命令check_nrpe!check_mysql_connections

參考: https ://support.nagios.com/forum/viewtopic.php?f=7&t=33448

從一端開始,然後返回。

  • 您說“/usr/lib64/nagios/plugins/check_mysql_all -K connections -H myHOST -u myUSERNAME -p myPASSWORD”在命令行上有效。
  • 您說 NRPE 使用其他命令在該伺服器上工作。
  • 您說命令在 nagios 伺服器的命令行上失敗。

這表明問題出在 NRPE 伺服器上的定義中。您的 myHOST、myUSERNAME 或 myPASSWORD 的混淆變數是否可能包含由 NRPE 非字面解釋的字元?(我假設您已經檢查了拼寫錯誤和重複定義!)

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