我刚刚安装并配置了monitmonit 文档除 Apache 之外的所有服务都列为正在运行,但 Apache 说未受监控。
monit 配置中的相关行是:
check process apache with pidfile /var/run/httpd.pid
group www
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if failed host localhost port 80
protocol http then restart
if 5 restarts within 5 cycles then timeout
我可以访问http://localhost/服务器状态和http://本地主机服务器正常运行。Monit 列出了 Apache 的监控模式积极的。
服务器正在运行CentOS 5.4。
父 httpd 服务器的 PID 文件是正确的:
[server ~]$ cat /var/run/httpd.pid
2905
[server ~]$ ps auxc | grep httpd
root 2905 0.0 0.9 26952 4808 ? Ss 11:36 0:00 httpd
答案1
确保 pid 文件的内容与 Apache 主进程的 pid(即httpd
以 root 身份运行的进程)匹配。pid 文件可能已过时。
如果它已经过时,请获取 Apache 主进程的 pid,然后执行类似的事情echo 1234 > /var/run/httpd.pid
,1234
所讨论的 pid 在哪里。
之后运行monit monitor apache
重新启动该服务的监控。
答案2
您没有提供操作系统版本/发行版,但在 CentOS 6 上,您应该监控的 PID 文件位于:/var/run/httpd/httpd.pid
所以改为:
check process apache with pidfile /var/run/httpd/httpd.pid
顺便说一下,CentOS 5 的 Apache PID 文件位于:/var/run/httpd.pid
编辑:还引用 PID 路径。
Monit 邮件列表中有一条关于您正在使用的协议测试的说明:
http://lists.gnu.org/archive/html/monit-general/2004-12/msg00057.html
如果您使用基于名称的虚拟主机,则可能需要传递主机名或站点名称。