使用Centos 6.4,使用yum安装了Monit 5.5。
我有 2 台安装了 monit 的服务器 - 相同的版本,相同的配置 - 但一个绑定在所有地址上,另一个仅绑定在本地主机上。
问题服务器:
# service monit restart
Stopping monit: [ OK ]
Starting monit: Starting monit daemon with http interface at [localhost:8080]
[ OK ]
好的服务器:
# service monit restart
Stopping monit: [ OK ]
Starting monit: Starting monit daemon with http interface at [*:8080]
[ OK ]
配置如下:
set httpd port 8080
allow fofo:sdad
allow fdgdfg:dsfsdf
SSL ENABLE
PEMFILE /var/certs/monit.pem
signature disable
我猜测问题在于问题服务器的一些网络配置错误 - 因此它无法绑定到外部端口 - 但其他东西都运行正常 - http,ssh 等...
更新更多信息 - 感谢您的评论:问题框:
# rpm -qi monit
Name : monit Relocations: (not relocatable)
Version : 5.5 Vendor: Dag Apt Repository, http://dag.wieers.com/apt/
Release : 1.el6.rf Build Date: Wed 20 Mar 2013 02:09:54 PM WET
Install Date: Sat 04 May 2013 09:30:54 PM WEST Build Host: lisse.hasselt.wieers.com
Group : Applications/Internet Source RPM: monit-5.5-1.el6.rf.src.rpm
Size : 716992 License: GPLv3
Signature : DSA/SHA1, Wed 20 Mar 2013 03:59:25 PM WET, Key ID a20e52146b8d79e6
Packager : Steve Huff <[email protected]>
URL : http://mmonit.com/monit/
Summary : Process monitor and restart utility
Description :
Monit is an utility for monitoring daemons or similar programs running on
a Unix system. It will start specified programs if they are not running
and restart programs not responding.
工作箱:
# rpm -qi monit
Name : monit Relocations: (not relocatable)
Version : 5.5 Vendor: Dag Apt Repository, http://dag.wieers.com/apt/
Release : 1.el6.rf Build Date: Wed 20 Mar 2013 02:09:54 PM WET
Install Date: Fri 22 Mar 2013 04:02:32 AM WET Build Host: lisse.hasselt.wieers.com
Group : Applications/Internet Source RPM: monit-5.5-1.el6.rf.src.rpm
Size : 716992 License: GPLv3
Signature : DSA/SHA1, Wed 20 Mar 2013 03:59:25 PM WET, Key ID a20e52146b8d79e6
Packager : Steve Huff <[email protected]>
URL : http://mmonit.com/monit/
Summary : Process monitor and restart utility
Description :
Monit is an utility for monitoring daemons or similar programs running on
a Unix system. It will start specified programs if they are not running
and restart programs not responding.
/etc/hosts 看起来非常相似,如下所示:
cat /etc/hosts
# Automatically generated by ptisp cloud
127.0.0.1 localhost
x.x.x.x [hostname]
问题框:
# netstat -tln | grep ":8080"
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN
工作箱:
# netstat -tln | grep ":8080"
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
还运行了“ip addr”,其输出在工作和非工作盒子之间看起来非常相似。
更新2
今晚刚刚将 M/monit 添加到组合中,这个框奇怪地出现了两次,一次处于非活动状态。我认为这是因为 m/monit 服务器无法 ping 回客户端...
提前感谢任何想法。克里斯
答案1
如果 Monit 行为与配置文件中所写的内容不匹配,一个可能的原因是 Monit 实际上使用了不同的配置文件。
/etc/rc.d/init.d/monit
包中的脚本在启动monit-5.5-1.el6.rf
时monit
没有指定配置文件名,因此 Monit 会尝试在多个位置查找配置文件并使用找到的第一个配置文件。另一个重要的事情是,此包中的默认配置文件名与未修改的上游 Monit 版本使用的名称不同 — 上游使用monitrc
,但 RepoForge 中的包使用monit.conf
。
配置文件使用的搜索顺序如下:
~/.monitrc
在 Monit 的上游版本中,或~/.monit.conf
在 RepoForge 包中(使用启动用户的主目录monit
;如果 Monit 是从 init 脚本启动的,则用户是)。使用(即从或任何其他 NSS 数据库)root
读取主目录,而不是从环境变量读取。getpwuid(geteuid())
/etc/passwd
HOME
/etc/monitrc
在 Monit 的上游版本中,或者/etc/monit.conf
在 RepoForge 包中。如果使用 RepoForge 包,则/etc/monit.conf
最初包含一个未注释的include
行,这会导致 Monit 从目录中读取其他配置文件/etc/monit.d
:include /etc/monit.d/*
在上游源中,示例
monitrc
文件已注释掉此行,因此默认不使用任何其他配置文件。另请注意,RepoForge 包有一个 postinstall 脚本:
# Moving old style configuration file to conf standard location if [ -f /etc/monitrc ]; then mv -f /etc/monitrc /etc/monit.conf fi
因此,如果
/etc/monitrc
文件在软件包安装之前存在或升级,此文件将被重命名为/etc/monit.conf
,并静默地覆盖它。$SYSCONFDIR/monitrc
在 Monit 的上游版本中,编译源代码时传递给脚本的选项$SYSCONFDIR
的值是(此选项的默认值是,与 Autoconf 生成的脚本一样,默认前缀是,因此配置文件名变为)。在 RepoForge 包中,此文件名变为,使其变得多余。--sysconfdir=...
configure
$prefix/etc
configure
/usr/local
/usr/local/etc/monitrc
/etc/monit.conf
/usr/local/etc/monitrc
在 Monit 的上游版本中,或者/usr/local/etc/monit.conf
在 RepoForge 包中。这里的/usr/local/etc
目录是硬编码的,不依赖于任何configure
选项。./monitrc
在 Monit 的上游版本中,或者./monit.conf
在 RepoForge 包中(从 init 脚本启动时,当前目录很可能是/
)。
答案2
检查~/.monit.conf
不存在 —/etc/monit.conf
甚至在搜索根目录之前也会搜索此位置。(Monit 的上游版本使用~/.monitrc
和/etc/monitrc
,但此特定包使用不同的配置文件名。)