Nagios NRPE:命令「my_command」未定義

Nagios NRPE:命令「my_command」未定義

我已經安裝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

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

更新並解決

這麼多年過去了,我還記得這個問題是怎麼解決的。

commands-custom.cfg我需要在 上編輯自訂命令(在 Nagios 伺服器上)/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

答案1

從一端開始,然後往回走。

  • 您說“/usr/lib64/nagios/plugins/check_mysql_all -Kconnections -H myHOST -u myUSERNAME -p myPASSWORD”在命令列上工作。
  • 您說過 NRPE 透過其他命令在該伺服器上工作。
  • 您說該命令在 nagios 伺服器的命令列上失敗。

這對我來說顯示問題出在 NRPE 伺服器上的定義。 myHOST、myUSERNAME 或 myPASSWORD 的模糊變數是否可能包含由 NRPE 非字面解釋的字元? (我假設您已經檢查過拼字錯誤和重複定義!)

答案2

請依照以下步驟新增遠端客戶磁碟檢查。 mysql 的設定也可以遵循這些步驟。

客戶


vi /etc/nagios/nrpe.cfg

allowed_hosts=127.0.0.1,nagios_server_ip_here
dont_blame_nrpe=1
#checking root  partion
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 25% -c 20% -p /

伺服器


從文件中/usr/local/nagios/etc/resource.cfg其給出為$USER1$=/usr/local/nagios/libexec

因此,在終端機中運行命令:

locate check_nrpe                              //find the location of check_nrpe
cp /usr/lib/nagios/plugins/check_nrpe /usr/local/nagios/libexec/
cd /usr/local/nagios/libexec/
chown nagios:nagios check_nrpe

編輯文件 /usr/local/nagios/etc/objects/commands.cfg

define command{
    command_name    check_disk
    command_line    $USER1$/check_nrpe -H '$HOSTADDRESS$' -t 30 -c check_disk
     }

編輯 /usr/local/nagios/etc/servers/clients.cfg

define service {
    use                             generic-service
    host_name                       BI Server
    service_description             Disk
    check_command                   check_disk
    notifications_enabled           1
    }

重啟服務

/etc/init.d/nagios restart                          //server side
/etc/init.d/nagios-nrpe-server restart             //client side

您也可以以 nagios 使用者身分檢查終端機中的命令,

su - nagios
cd /usr/local/nagios/libexec/
./check_nrpe -H nagios_client_ip_here -t 30 -c check_mysql
./check_nrpe -H nagios_client_ip_here -t 30 -c check_disk

答案3

通常,我會懷疑該插件有權限問題。請務必以 nagios(或 nrpe)使用者身分執行手動測試。

但在這種情況下,它聲稱 NRPE 命令甚至沒有定義,所以它甚至沒有運行它...

將 NRPE 指令 def 直接放入 nrpe.cfg 中,而不是放在包含的檔案中。 (然後重新啟動 NRPE。)

我記得幾年前也遇到過類似的問題(但是來自 EPEL 的 NRPE),由於某種原因它不會在 nrpe.cfg 中包含另一個文件。不過,我從來沒有弄清楚為什麼包含文件不起作用。

答案4

我也有同樣的症狀。所以也許這會節省其他人一些時間。我的問題是我缺少包含目錄中檔案的 .cfg 副檔名。

我的包含目錄是include_dir=/etc/nagios/nrpe.d

機器運作的是Ubuntu 14.04供參考,使用NRPE v2.15

相關內容