【问题标题】:Nagios - NRPE: Command '...' not definedNagios - NRPE:命令“...”未定义
【发布时间】:2015-10-14 13:01:01
【问题描述】:

/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

【问题讨论】:

  • 您是否尝试在远程服务器上重新启动 nrpe 服务?您是否在 Nagios 服务器上重新启动了 nagios 服务?
  • 是的,我做到了。我注意到/usr/local/nagios/etc/nrpe.cfg 中有一个 nrpe.cfg,/etc/nagios/nrpe.cfg 也有一个 nrpe.cfg。两者都在 Nagios 服务器上,这也是我迄今为止编辑的一个。我使用 apt-get remove 从我的 Nagios 服务器中删除了 nrpe 插件,现在在受监控的服务器上编辑了 nrpe.cfg。仍然是同样的问题,并且不太确定要编辑的 nrpe.cfg 应该在哪里。
  • 您能否从您的 Nagios 服务器发布配置,其中定义了命令 check_nrpe?您还可以在您可以找到的受监控服务器上发布任何nrpe.cfg 文件(及其路径)吗?
  • pastebin.com/D7UNbV7d 这是我在/etc/nagios/nrpe.cfg 上的受监控服务器上的一个。在我的 nagios 上 /usr/local/nagios/etc/nrpe.cfg: pastebin.com/8FCrQ9xi 。在/etc/nagios/nrpe.cfgpastebin.com/SwkaeTPW
  • 在您的 Nagios 服务器上,在您的 nagios.cfg 文件中,您是否还定义了类似 cfg_file=/usr/local/nagios/etc/nrpe.cfg 的内容?我问这个是因为在 Nagios 服务器上的服务定义中,您定义了一个 check_command 值为 check_nrpe!check_this_process 的服务,但我看不到您在 Nagios 服务器上的任何位置实际定义了 check_nrpe。我将查看您的受监控服务器的nrpe.cfg 配置并回写,但是您能否在您的 Nagios 服务器上跟踪您的check_nrpe 命令定义?

标签: apache nagios nrpe


【解决方案1】:

提供的文档中使用的术语有点混乱,但我会这样说:

https://assets.nagios.com/downloads/nagioscore/docs/nrpe/NRPE.pdf的第10页所述,您需要在您的Nagios服务器上修改/usr/local/nagios/etc/commands.cfg并添加以下内容以定义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 替换为您的真实进程名称:即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

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

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

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

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

【讨论】:

  • 非常感谢这个详细的解决方案 :) 虽然我最终完全重做安装,从 Nagios4 切换到 Nagios3 并且不得不更改一些路径,但这确实有助于再次设置它,现在工作正常到目前为止:)
【解决方案2】:

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

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

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

【讨论】:

  • 你的第一点对我有用。除了我没有重新启动nrpe外,一切都准备就绪,重新启动nrpe问题得到解决。谢谢!
  • 这是一个很好的,通过我循环 2 天。事实证明,我在 host.cfg 文件中为另一台机器配置了 IP 地址。直到我注意到所报告的统计数据是相同,我才终于明白了。希望这对其他人有帮助。
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多