监控服务名称错误

时间:2011-12-08 19:31:45

标签: mysql apache monit

所以我在monitrc文件中有以下内容:

check process apache with pidfile /usr/local/apache/logs/httpd.pid
group apache
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if failed host XXX port 80 protocol http
and request "/monit/token" then restart
if cpu is greater than 60% for 2 cycles then alert
if cpu 80% for 5 cycles then restart
if totalmem 500 MB for 5 cycles then restart
if children 250 then restart
if loadavg(5min) greater than 10 for 8 cycles then stop
if 3 restarts within 5 cycles then timeout

但我一直收到错误:

Error: service name conflict, apache already defined '/usr/local/apache/logs/httpd.pid'

6 个答案:

答案 0 :(得分:7)

如果服务器的主机名是“apache”,则冲突是使用默认规则监视系统负载。

Monit似乎有'check system hostname'的隐含规则,其中hostname是hostname命令的输出。

您可以通过添加如下行来覆盖它:

check system newhostname

例如:

check system localhost

答案 1 :(得分:2)

您是否有可能在此条目下或在单独的monit配置文件中有一个带有主机名apache的条目?

答案 2 :(得分:0)

非常重要的事情:你需要monit 5.5 例如在ubuntu 12.04中仅在repo中可用5.3

因此您需要从其他repo下载并安装。 我的解决方案,例如:

wget http://mirrors.kernel.org/ubuntu/pool/universe/m/monit/monit_5.5.1-1_amd64.deb&& sudo dpkg -i monit_5.5.1-1_amd64.deb

答案 3 :(得分:0)

检查monit conf目录下的/etc/monit.d/个文件中是否存在Apache定义的任何冲突,我不小心为nginx添加了puma.conf并遇到了之前的错误相同。

答案 4 :(得分:0)

就我而言,我只需重新启动monit即可摆脱服务名称错误:

sudo service monit restart

答案 5 :(得分:0)

您多次定义了相同的服务。检查所有monit配置文件以获取该服务。这包括monitrc以及“包含”部分下列出的所有文件(例如include /etc/monit/conf.d/*)。

如果在其中一个“包含”目录中的文件中重新定义“包含”,则会遇到递归引用问题。