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 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

相关内容