每次服务器启动时,我都会使用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 reload,一切都会重新加载,并且 api 将在重新加载命令完成后约 50 秒内正常运行。
我应该更改 conf 文件的命令选项来检查
答案1
好的,我终于搞明白了。根据您监控的服务器数量,status.dat 可能需要一些时间才能在重新启动时可用。我所要做的就是等到文件可用。我通过添加启动安全我的主管配置文件中针对 API 的选项。就我而言,60 秒似乎就可以完成。
如果你有兴趣了解详细信息,我记录了这个问题我的博客。