正如标题所述,我遇到了一个问题,monit 无法在启动时启动。我有一个 CentOS 7 盒子,它可以启动,还有另一个 CentOS 7 盒子,它无法启动,所以我知道这不是操作系统问题,一定是某个地方的配置问题。这两个盒子都是用 vagrant 构建的,几乎一模一样。我不知道从哪里开始。
我会关注这个问题一段时间,所以请随时让我澄清任何问题,我知道这没什么可说的。任何帮助我都会很感激。
编辑:值得注意的是,我已经尝试过systemctl enable monit
但它已经启用。
编辑2:(不相关)
编辑3:
[root@stage-web-1 vagrant]# systemctl status monit
monit.service - Pro-active monitoring utility for unix systems
Loaded: loaded (/usr/lib/systemd/system/monit.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Thu 2017-06-01 16:37:00 UTC; 6min ago
Process: 1131 ExecStop=/usr/bin/monit quit (code=exited, status=1/FAILURE)
Process: 1079 ExecStart=/usr/bin/monit -I (code=exited, status=1/FAILURE)
Main PID: 1079 (code=exited, status=1/FAILURE)
Jun 01 16:37:00 stage-web-1 systemd[1]: Started Pro-active monitoring utility for unix systems.
Jun 01 16:37:00 stage-web-1 systemd[1]: Starting Pro-active monitoring utility for unix systems...
Jun 01 16:37:00 stage-web-1 monit[1079]: Error opening the log file '/var/www/html/nfs/monit/stage-web-1.log' for writing -- No such file or directory
Jun 01 16:37:00 stage-web-1 systemd[1]: monit.service: main process exited, code=exited, status=1/FAILURE
Jun 01 16:37:00 stage-web-1 monit[1131]: Error opening the log file '/var/www/html/nfs/monit/stage-web-1.log' for writing -- No such file or directory
Jun 01 16:37:00 stage-web-1 systemd[1]: monit.service: control process exited, code=exited status=1
Jun 01 16:37:00 stage-web-1 systemd[1]: Unit monit.service entered failed state.
Jun 01 16:37:00 stage-web-1 systemd[1]: monit.service failed.
答案1
事实证明,/var/www/html/nfs
是一个通过 NFS 挂载到网络驱动器的文件夹。Monit 在 NFS 之前启动,因此该文件夹尚不存在,导致 monit 出现错误Error opening the log file '/var/www/html/nfs/monit/stage-web-1.log' for writing -- No such file or directory
。
解决方案是编辑/lib/systemd/system/monit.service
:
[Unit]
Description=Pro-active monitoring utility for unix systems
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/monit -I
ExecStop=/usr/bin/monit quit
ExecReload=/usr/bin/monit reload
[Install]
WantedBy=multi-user.target
并添加nfs.service
到After
部分。最终结果如下:
[Unit]
Description=Pro-active monitoring utility for unix systems
After=network.target nfs.service
[Service]
Type=simple
ExecStart=/usr/bin/monit -I
ExecStop=/usr/bin/monit quit
ExecReload=/usr/bin/monit reload
[Install]
WantedBy=multi-user.target
Monit 现在可以在启动时正确启动 :)
感谢所有帮助我走向正确方向的人。