复杂的 nagios 命令

复杂的 nagios 命令

我为我的一项服务检查定义了以下命令:

define command{
        command_name    mycommand
        command_line    $USER1$/check_by_ssh -p $ARG1$ -l nagios -i /etc/nagios2/keys/key1 -H $HOSTADDRESS$ -v -C 'source $USER10$ ; command.py -a get --alert-name $ARG2$ -q'
        }

问题是,nagios 似乎正在解析带有分号的命令,并产生无法执行的垃圾。我也尝试过添加反斜杠\;,但无济于事。

如果我直接在 shell 上运行该命令,它会起作用。这意味着这不是 的问题check_by_ssh,而是 nagios 配置文件解析的问题。

我该如何调试?有没有办法获取 nagios 在读取配置文件时解析的所有命令的列表?

答案1

来自评论讨论:

Nagios 显然会占用“命令”定义中分号后面的所有内容。处理此问题的最简单方法是将复杂命令包装到 Nagios 将调用的 shell 脚本中。

作为调试的一部分,可以使用 Web 界面中的 CGI 查看正在运行的 Nagios 配置,特别是 config.cgi(例如,https://nagios.example.com/cgi-bin/nagios3/config.cgi)。这将显示当前的命令集、主机等。

答案2

根据您的评论,您可能不喜欢我的回答

我有 100 多个服务,为每个服务创建一个脚本并不现实

但我认为你应该考虑使用国家可再生能源计划,Nagios 远程插件执行器。

来自他们的网站:

NRPE 允许您在其他 Linux/Unix 机器上远程执行 Nagios 插件。这允许您监视远程机器指标(磁盘使用情况、CPU 负载等)。NRPE 还可以与某些 Windows 代理插件通信,因此您也可以在远程 Windows 机器上执行脚本并检查指标

不久前,我从与您的类似设置切换到 NRPE,是的,在我想要监控的多个服务器上安装和设置新软件有点麻烦。但是好处是值得的;这是一个更可靠的设置,一旦设置好,就很容易管理每个服务器上的 Nagios 检查。

相关内容