我已經安裝Nagios® Core™ 3.5.1
並NRPE 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