我刚刚安装了一个小型 Nagios 4.1.1。它使用 Raspbian 在 Raspberry Pi 上运行。检查正常,当我手动使用它启动它时,/etc/init.d/nagios start
它运行良好。
我总是通过执行以下操作来告诉我的 debian 系统在系统启动时启动一些事情:ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
我可以看到符号链接已成功创建。
但是,它不会在启动时启动。我可以在系统启动后运行启动脚本,/etc/rcS.d/S99nagios start
这样我就知道(/认为)符号链接是好的。当服务器启动时,Apache 正在运行,Nagios 页面也已启动,但主页显示“无法获取进程状态”,这是 nagios 服务未运行时的预期结果。有没有办法查看启动日志以查看它是否正在尝试,或者有没有更好的方法让它在启动时启动?
更新:我运行update-rc.d
后得到了以下信息:
update-rc.d: using dependency based boot sequencing
update-rc.d: warning: default start runlevel arguments (2 3 4 5) do not match resize2fs_once Default-Start values (2 3 4 5 S)
update-rc.d: warning: default stop runlevel arguments (0 1 6) do not match resize2fs_once Default-Stop values (none)
insserv: Script nagios is broken: incomplete LSB comment.
insserv: missing `Default-Start:' entry: please add even if empty.
insserv: missing `Default-Stop:' entry: please add even if empty.
insserv: Script nagios is broken: incomplete LSB comment.
insserv: missing `Default-Start:' entry: please add even if empty.
insserv: missing `Default-Stop:' entry: please add even if empty.
insserv: Default-Start undefined, assuming empty start runlevel(s) for script `nagios'
insserv: Default-Stop undefined, assuming empty stop runlevel(s) for script `nagios'
我确实从未见过这种情况,也不知道该怎么办,但这肯定是有联系的。
更新 2:阅读了一些资料后,似乎这可能与 init.d 脚本的格式有关。如果是这样的话,其他人可能也遇到了这个问题,而且这不是 init.d 脚本第一次在基于 Debian 的系统上给 Nagios 造成问题。我将关闭此问题并在 Nagios 错误跟踪器上开具一张票。
答案1
这似乎是 init.d 脚本格式的问题。这为我解决了这个问题:
首先,编辑nagios init.d脚本:
nano /etc/init.d/nagios
替换开始和结束的块如下:
### BEGIN INIT INFO
#
# stuff in here
#
### END INIT INFO
有了这个:
### BEGIN INIT INFO
# Provides: nagios
# Required-Start: $local_fs $syslog $network
# Required-Stop: $local_fs $syslog $network
# Short-Description: Start and Stop Nagios monitoring server
# Description: Nagios is is a service monitoring system
# Default-Start: start
# Default-Stop: stop
### END INIT INFO
从这里
然后运行:
sudo update-rc.d nagios defaults
您将收到一些可以安全忽略的警告。例如:
update-rc.d: warning: default start runlevel arguments (2 3 4 5) do not match nagios Default-Start values (start)
重启并检查。我的现在会自动启动。
因此,看起来整体格式符合要求的标准,只是 INIT 块缺少一些东西。我确实更喜欢这种方法,而不是使用其他人的 Nagios init.d 文件,因为我相信开发人员可能比我更好地维护该脚本。需要注意的一点是,如果您从源代码更新 Nagios,并且运行make install-init
它将覆盖此文件,您将不得不再次执行此操作。另一种方法是安装您需要的内容,而忽略 init 脚本。
答案2
是的,你答对了。初始化脚本的格式不正确。
您可以尝试这里的初始化脚本吗:http://roger.steneteg.org/blog/installing-nagios-from-source/