Nagios Plugin Error: (No output on stdout) ... failed. errno is 2: No such file or directory

Nagios Plugin Error: (No output on stdout) ... failed. errno is 2: No such file or directory

我是第一次使用自定义 Nagios 插件,在为插件创建服务时 运行遇到了这个错误。

(No output on stdout) stderr: execvp(/usr/local/nagios/libexec/check_load.py, ...) failed. errno is 2: No such file or directory

当我在命令行上 运行 时插件可以工作,但是当它在 Nagios 中 运行 时不工作。

我按照这些步骤将插件安装到 Nagios https://assets.nagios.com/downloads/nagiosxi/docs/Managing-Plugins-in-Nagios-XI.pdf

Here is what it looks like in the Nagios UI

插件在正确的路径中:/usr/local/nagios/libexec 并且 resource.cfg 文件在其中具有相同的路径。

我尝试了两个单独的插件,它们都在命令行上工作,结果是同样的错误。

错误表明文件位置不正确,但是插件在指定的目录中并且运行在该目录中没有错误。

我完全被难住了,感谢任何帮助。

对于任何阅读本文的人,我解决了这个问题。

第一次添加插件,忘记添加python扩展名了。当我更新已经创建的插件时,Nagios 仍然抛出错误。

一旦我完全删除插件并重新创建它 'file not found',错误就消失了。

我在尝试添加自定义插件时遇到了类似的问题(我在 ruby 和 python 中有自定义插件)。

问题是脚本开头缺少 shebang line(这决定了脚本能够像独立可执行文件一样执行)。

例如,如果您有一个 python 插件 custom-plugin.py,那么请确保此脚本在脚本 #!/usr/bin/env python3 的开头有 shebang。此外,如果您有其他脚本(ruby、bash 等),请确保在脚本的开头添加适当的路径。

此外,检查插件 Nagios 版本的路径。因为我的设置路径是 /usr/local/nagios/libexec/ 并确保您的自定义插件是可执行的并且具有正确的所有权权限。

我使用的示例自定义模板:

define command {
  command_name  check_switch_health
  command_line /usr/local/nagios/libexec/check_snmp.rb --host $HOSTADDRESS$  --model "$ARG1$" --community "$ARG2$"
}

上述解决方法对我有用。