找不到用于 Monit apache2 监控的 httpd.pid

找不到用于 Monit apache2 监控的 httpd.pid

我是 Linux 新手,我在 Digital Ocean 上安装了 Ubuntu 12.04。

我安装了 Monit 并让它成功监控 MySQL 并发出电子邮件警报。

我也想监控 ​​Apache2,但找不到httpd.pid需要放入 monitrc 文件的任何文件。

我可以使用以下命令启动 Apache2:/etc/init.d/apache2 start

我可以使用以下命令停止 Apache2:/etc/init.d/apache2 stop

我可以使用以下命令重新启动 Spache2:/etc/init.d/apache2 restart

在没有 httpd.pid 文件的情况下,还有什么其他方法可以在 Monit 中监控 Apache2?

答案1

如果你查看 init 脚本,它使用 $APACHE_PID_FILE 的值,该值从定义为 $APACHE_ENVVARS 的文件中读取,我认为默认为 /etc/apache2/envvars

PIDFILE=$(. $APACHE_ENVVARS && echo $APACHE_PID_FILE) 

在 envvars 文件中,PIDFILE 定义为

APACHE_PID_FILE=/var/运行/apache2$SUFFIX.pid

除非你正在运行 apache2 的多个实例,否则 $SUFFIX 很可能是“”,因此 $APACHE_PID_FILE 的值将是

/var/run/apache2.pid

但你应该可以运行

echo $(. /etc/apache2/envvars && echo $APACHE_PID_FILE) 

并获取系统认为的值。

答案2

在 Centos 上,您很有可能使用“服务”实用程序来管理守护进程。服务在目录中配置:/etc/init.d/

在文件中/etc/init.d/httpd,您将找到 pid 文件位置。我看到了一些like pidfile=${PIDFILE-/var/run/httpd/${prog}.pid}

因此,我的 pidfile 位于/var/run/httpd/httpd.pid

答案3

我会尝试两件事:

  1. 看看你是否可以配置 Apache 来写出 PID 文件。参考: http://httpd.apache.org/docs/2.2/mod/mpm_common.html#pidfile
  2. 修改 apache2 启动/停止脚本,使用命令在启动/停止期间创建 PID 文件pgrep。参考: http://mmonit.com/wiki/Monit/ConfigurationExamples

答案4

如果你安装 Apache 2.4 或通过 chef cookbook(https://github.com/sous-chefs/apache2)那么位置将是 /var/run/apache2/apache2.pid

相关内容