如何验证 NRPE 配置文件?

如何验证 NRPE 配置文件?

Nagios 本身有方法检查其配置文件的有效性,以确保它至少会加载配置而不会出现错误:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

是否可以对 NRPE 守护进程做同样的事情? NRPE 的手册页表明它不支持这一点。

我打算使用 Ansible 的 lineinfile 模块更新 NRPE 配置,因此我想检查有效性以确保至少不会完全破坏监控。

答案1

我同意你的发现;这在线 NRPE PDF没有提到任何验证或检查配置文件的方法。此外,nrpe.c 代码本身中的 process_arguments() 函数并不表示任何隐藏选项可以执行相同的操作。

鉴于以下通知NRPE 主页

注意:从 NRPE 4.0.1 版本开始,该项目已被弃用。除了解决安全问题之外,它不会再收到任何错误修复或功能。

……我也不希望出现这样的选项。

我看到他们打包了一个travis-test-1脚本其目标似乎是查看 NRPE 是否有效。该脚本使用示例命令创建一个配置文件,安装该命令的支持脚本,添加 nagios 用户,以守护程序模式启动 NRPE,然后针对 localhost 执行 check_nrpe 以运行该示例命令。这可能会给您的环境带来比您希望的更多的变化。

受到这个想法的启发,您可以通过多种方式解决这个问题。高层次上:

  1. 更改配置文件后执行检查以查看 NRPE 是否仍在运行;您可以假设是您的更改导致守护程序停止运行并恢复配置更改(如果是)。如果守护进程保持运行,那么您应该就清楚了!
  2. 停止 NRPE;更改配置文件;然后暂时地启动 NRPE 并查看它是否保持运行。如果是,则正常重启NRPE;如果没有,则恢复更改并重新启动 NRPE。

对于选项 #1,您可以使用简单的外部端口检查或已知良好的 check_nrpe 位置;您甚至可以从远程主机调用 check_nrpe,以check_nrpe -H 127.0.0.1 -c known-good-command查看 NRPE 守护进程是否仍在运行。您还可以查询 nrpe 进程的进程表(如果它在您的环境中作为长时间运行的进程启动)。

对于选项 #2,您可以使用GNU 超时临时启动 NRPE 的实用程序。例如:

timeout 3s /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -f
if [ $? -eq 124 ]
  echo all good
  exit 0
else
  echo not good, NRPE did not start successfully
  exit 1
fi 

上面的代码片段尝试以前台模式启动 NRPE(假设所有内容都位于默认位置)。如果 NRPE 在给定的时间段内保持运行(此处为 3 秒),timeout则将导致 NRPE 退出并返回代码 124;在这种情况下,我们可以假设我们的更改是成功的。如果超时实用程序以 124 以外的其他值退出,则启动 NRPE 可能出现问题,我们可以假设我们的配置更改破坏了它。

相关内容