NRPE 检查参数丢失

NRPE 检查参数丢失

我正在运行 Shinken,并且有一个包含多个命令的包,这些命令通过 NRPE 在受监控的主机上运行 bash 脚本。我对运行带有 4 个参数的 bash 脚本的主机进行了检查。当它运行时,我传入的 4 个参数中只有 1 个会将 command.cfg 发送到主机以供脚本使用。

我已经搜索了很多次这个问题,但还没有找到解决办法。据我所知,人们报告的大多数将参数传递给 NRPE 的问题都源于没有正确设置“dont_blame_nrpe”或没有使用参数支持编译 nrpe。我的情况并非如此。dont_blame_nrpe 设置为 1,并且模块使用参数支持编译。此外,我在同一台主机(在同一个包内设置)上进行了检查,该检查只接受一个参数,并且运行正常。

这是包中的commands.cfg:

define command {
    command_name   check_nrpe
    command_line   $PLUGINSDIR$/check_nrpe -u -H $HOSTADDRESS$ -c $ARG1$ -a '$ARG2$ $ARG3$ $ARG4$ $ARG5$'
}

我还尝试了上述方法,即用双引号将整个参数集括起来,并用双引号将每个单独的参数括起来。无论如何,我都会得到相同的结果。

服务定义:

define service{
    service_description check-worker-count
    use            generic-service
    register       0
    host_name      nrpe-pack
    check_command  check_nrpe!check-worker-count!worker-name!12!90!80
}

以及主机上的/etc/nrpe.d/check-worker-count.cfg:

command[check-worker-count]=/usr/lib64/nagios/plugins/check_worker_count.sh -n $ARG1$ -p $ARG2$ -w $ARG3$ -c $ARG4$

我在主机上有一个脚本,一开始就输出 $*,下面是它得到的结果:

-n 工作者名称 -p -w -c

与在命令行传递参数的情况下在本地运行脚本进行比较:

-n 工人名称 -p 12 -w 90 -c 80

答案1

不要费心在 Nagios conf 中将所有 -a ARG 分成单独的 ARG。引号会让你抓狂。为简单起见,请像command_line这样:

$PLUGINSDIR$/check_nrpe -u -t 30 -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$

然后像这样使用它:

check_command  check_nrpe!check-worker-count!worker-name 12 90 80

至少,这是您在 Nagios/Icinga 中执行的操作。对于 Shinken 应该也一样。

相关内容