每次服务器启动时,我都有 supervisord 启动 nagiosapi。API 创建了一个名为 status.dat 的状态转储文件,该文件将定期更新。下面是启动api的conf文件。
[program:nagapi]
directory = /home/nagapi
user = api
command = /bin/bash -c "source /home/nagapi/.virtualenvs/nagapi/bin/activate; /home/nagapi/nagios-api/nagios-api"
stdout_logfile = /home/nagapi/supervisor_nagios-api_stdout.log
stderr_logfile = /home/nagapi/supervisor_nagios-api_stderr.log
每次我重新启动服务器时,supervisord 都无法启动 api。stderr.log 声称它找不到位于 /var/cache/nagios3 中的 status.dat 文件。
当主管第一次尝试运行 api 时,似乎文件尚未创建。我这样说是因为如果我执行 supervisorctl 重新加载,一切都会重新加载,并且 api 会在重新加载命令完成后大约 50 秒运行正常。
我应该更改 conf 文件的命令选项以检查
好的,我终于想通了。根据您监控的服务器数量,重启后 status.dat 可能需要一些时间才能可用。我所要做的就是等待文件可用。我通过在 API 的主管配置文件中添加startsecs选项来做到这一点。就我而言,似乎需要 60 秒。
如果您有兴趣了解详细信息,我在我的博客中记录了这个问题。