5

我第一次使用自定义 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

这是 Nagios UI 中的样子

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

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

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

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

4

2 回答 2

5

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

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

一旦我完全删除了插件并重新创建了“找不到文件”,错误就消失了。

于 2016-07-20T19:19:47.813 回答
0

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

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

例如,如果你有一个 python 插件,custom-plugin.py那么确保这个脚本在 script 的开头有 shebang #!/usr/bin/env python3。此外,如果您有其他脚本(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$"
}

上述解决方法对我有用。

于 2021-12-08T02:49:24.873 回答