所以我在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'
答案 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/*)。
如果在其中一个“包含”目录中的文件中重新定义“包含”,则会遇到递归引用问题。