将参数传递给 nagios 插件

lar*_*ryq -1 nagios

我已经在 Nagios 服务器上安装了我的第一个插件,但是无法正确获取参数。我已经用 $ARG1$ 尝试了一些东西,但基本上只是一团糟。

一个复杂的问题,也许是:这个插件应该在 nagios 服务器本身上运行;没有对远程框的 npre 调用。

该插件是一个 shell 脚本,它对引擎盖下的远程框进行 curl 调用。带有标志的典型命令行使用如下:

my_shell_script.sh -H my.server.of.interest -P 9000 -I ./tmp/settings_file -timeout 80
Run Code Online (Sandbox Code Playgroud)

(是的,它有自己的“-H”标志,与 nagios 的主机名标志无关。)

这是我现在的骨架。Nagios 似乎认为我所有的旗帜都是一个巨大的旗帜。

define command {
   command_name    my_command
   command_line    $USER1$/my_shell_script.sh $ARG1$
}

define service {
   use                  generic-service;
   host_name            {{what do I put here?  This is supposed to run on the nagios box itself. My shell script is installed on it.}};
   service_description      some description
   check_command         my_command!{{what goes here?}}
}
Run Code Online (Sandbox Code Playgroud)

为了便于阅读,上面的内容略有删减,但这就是它的要点。给我带来麻烦的是主机名和参数以及“我在这里放什么”中的一些内容。我可以轻推一下,感谢您的建议。

[编辑] 通过我自己的语言,我的帖子的意图似乎被误解了。

当我说我“基本上是在四处游荡”时,这是在多次尝试使用 $ARG$ 宏并以多种方式重新排列事物并意识到我正在尝试的东西根本不起作用之后。我故意放了一个简化版本的插件代码,试图找到正确的方向。

wur*_*tel 6

在服务定义中,您放置要检查的服务运行所在主机的主机名。

check_command 定义my_command!whateverwhatever作为 $ARG1$传递给命令定义。!more为 $ARG2$ 等添加更多。

您需要my_shell_script.sh在命令定义中传递所需的参数。你可以访问 $HOSTNAME$ 和 $HOSTADDRESS$ 之类的东西;您在该define command部分中定义的命令将在 nagios 服务器上本地运行;对于像 nrpe 这样的东西,有一个连接到 nrpe 服务器的命令定义......因此该命令也是在本地运行的!

这里开始获取 nagios 文档,例如“基础知识”和“Nagios 中的标准宏”。