Nagios - NRPE:Command' ...'没有定义的

时间:2015-10-14 13:01:02

标签: apache nagios nrpe

/usr/local/nagios/etc/nrpe.cfg中,我为已预先定义的命令添加了一个新命令check_this_process

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/$
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s$
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
command[check_this_process]=/usr/local/nagios/libexec/check_procs -w 15 -c 20 -C name

这有效:

define service{
        use                     generic-service
        host_name               my_host
        service_description     CPU Load
        check_command           check_nrpe!check_load
}

这不是:

define service{
        use                             local-service
        host_name                       my_host
        service_description             cron
        check_command                   check_nrpe!check_this_process
}

并返回:NRPE: Command 'check_this_process' not defined

2 个答案:

答案 0 :(得分:1)

提供的文档中使用的术语有点令人困惑,但我会这样说:

https://assets.nagios.com/downloads/nagioscore/docs/nrpe/NRPE.pdf第10页所述,您需要修改Nagios服务器上的/usr/local/nagios/etc/commands.cfg 并添加以下内容以定义check_nrpe命令:< / p>

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

在Nagios服务器上,按照您已经完成的方式定义服务定义:

define service{
        use                             local-service
        host_name                       my_host
        service_description             cron
        check_command                   check_nrpe!check_this_process
}

在您要监控的远程主机上,根据您是否安装了NRPE,以下内容会有所不同:

如果您使用了tarball / xinetd方法,则您的NRPE配置文件可能位于您要监控的远程主机上的/usr/local/nagios/etc/nrpe.cfg(为了避免一直打字,我只是称之为“my_host”)。 因此,在 my_host 上,修改/usr/local/nagios/etc/nrpe.cfg

添加

command[check_this_process]=/usr/local/nagios/libexec/check_procs -w 15 -c 20 -C name

看起来像:

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/$
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s$
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
command[check_this_process]=/usr/local/nagios/libexec/check_procs -w 15 -c 20 -C name

注意:上面假设您有一个名为name的流程。如果没有,请将name替换为您的实际流程名称:ie {{1 }})

重新启动xinetd:

crond

注意:重新启动xinted可能没有必要,但我不使用它,所以我对这个有点模糊。)

但是,如果您使用像yum 这样的包管理器在my_host上安装了NRPE,则您的NRPE配置文件可能位于service xinetd restart 。 因此,在 my_host 上,修改/etc/nagios/nrpe.cfg

添加

/etc/nagios/nrpe.cfg

看起来像:

command[check_this_process]=/usr/local/nagios/libexec/check_procs -w 15 -c 20 -C name

重新启动nrpe服务:

服务nrpe重启

返回Nagios服务器,运行Nagios配置设置验证:

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/$
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s$
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
command[check_this_process]=/usr/local/nagios/libexec/check_procs -w 15 -c 20 -C name

检查输出是否有错误。 如果没有错误,请重新启动Nagios:

nagios -v /usr/local/nagios/etc/nagios.cfg

在Nagios服务器上安装“ check_nrpe插件”后,您应该安装service nagios restart 实用程序。 请参阅第9页和第10页: https://assets.nagios.com/downloads/nagioscore/docs/nrpe/NRPE.pdf

check_nrpe实用程序很可能位于:check_nrpe 使用/usr/local/nagios/libexec/check_nrpe的主机信息从Nagios服务器手动测试您的NRPE连接 。 执行以下操作:

my_host

如果一切设置正确,您应该在命令行上获得一些输出。

答案 1 :(得分:1)

我的“NRPE:命令......未找到”的故障排除指南。从最常见到最不常见 - 从我的环境中订购。

  1. 添加新命令后NRPE守护程序是否重新启动?如果是新命令,则必须重新启动NRPE。
  2. 错别字/拼写错误。 Nagios端配置的命令名称是否与NRPE配置中的命令名称相匹配?
  3. 权限问题。 NRPE运行的USER是否具有READABLE和EXECUTABLE访问权限的实际命令?您是否测试过运行该命令,作为NRPE用户?在同一个系统上?提示:在Linux(su - ...)上更改为NRPE用户时使用短划线( - ),这样您也可以导入所述用户环境。
  4. 路径问题。是否将实际命令的完整路径放入NRPE配置文件中?这样做通常会消除PATH的问题,所以不要以任何其他方式进行。
  5. 错误的命令。实际的命令真的执行吗?或者只是抛出一个错误并退出?你有没有正确的版本(INSERT SOMETHING HERE)来运行安装在远程系统上的命令?您应该能够从命令行运行nrpe.cfg中定义的任何命令,并且应该在添加到nrpe.cfg之前检查所有新命令。
  6. 如果以上所有失败:在NRPE中启用调试并检查日志文件(在远程主机上)。这是一个抽象的过程 - 在文档中描述 - 阅读它。一旦获得看起来有用的输出,禁用DEBUGGING非常重要。
  7. 此清单假定您已经为各种Nagios和NRPE配置做了必要的事情,以使其首先工作。希望其他人会在发布另一个问题之前阅读此内容,了解他们为何会看到此错误。