1

在我向已经预定义的命令中/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

4

2 回答 2

1

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

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

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 crond

重启xinetd:

service xinetd restart

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

但是,如果您使用 yum 之类的包管理器在 my_host 上安装 NRPE,您的 NRPE 配置文件可能位于/etc/nagios/nrpe.cfg. 所以,在my_host上,修改/etc/nagios/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

重启nrpe服务:

服务 nrpe 重启

回到您的 Nagios 服务器,运行您的 Nagios 配置设置的验证:

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

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

service nagios restart

check_nrpe在您的 Nagios 服务器上,由于在您的 Nagios 服务器上安装了“ check_nrpe 插件”,您应该已经安装了一个实用程序。 请参阅第 9 页和第 10 页: https ://assets.nagios.com/downloads/nagioscore/docs/nrpe/NRPE.pdf

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

/usr/local/nagios/libexec/check_nrpe -H <IP Address of my_host> -c check_this_process

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

于 2015-10-14T16:38:57.783 回答
1

我的“NRPE:命令……未找到”的故障排除指南。从最常见到最不常见的顺序 - 在我的环境中。

  1. 添加新命令后是否重新启动了 NRPE 守护程序?如果是新命令,则必须重新启动 NRPE。
  2. 错别字/拼写错误。Nagios 端配置的命令名称是否与 NRPE 配置中的命令名称匹配?
  3. 权限问题。NRPE 运行的用户是否对正在运行的实际命令具有 READABLE 和 EXECUTABLE 访问权限?您是否以 NRPE 用户的身份测试运行该命令?在同一个系统上?提示:在 Linux (su - ...) 上更改为 NRPE 用户时使用破折号 (-),以便您也导入所述用户环境。
  4. 路径问题。是否将实际命令的完整路径放入 NRPE 配置文件中?这样做通常会消除 PATH 的问题,所以不要以任何其他方式这样做。
  5. 错误的命令。实际的命令真的执行了吗?还是只是抛出错误并退出?您是否有正确版本的 (INSERT SOMETHING HERE) 来运行安装在远程系统上的命令?您应该能够从命令行运行 nrpe.cfg 中定义的任何命令,并且在将所有新命令添加到 nrpe.cfg 之前,应检查所有新命令。
  6. 如果以上都失败:在 NRPE 中启用调试并检查日志文件(在远程主机上)。这是一个冗长的过程 - 在文档中描述 - 阅读它。一旦你得到看起来有用的输出,禁用调试是很重要的。

此清单假定您已对各种 Nagios 和 NRPE 配置进行了必要的操作,以使其首先正常工作。希望其他人在发布另一个关于他们为什么会看到此错误的问题之前会阅读此内容。

于 2015-10-14T16:48:33.863 回答