我已经安装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 Server 上,我已经设置了文件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 -K connections -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