Monit 5.5 仅绑定到本地主机,但应该在所有

Monit 5.5 仅绑定到本地主机,但应该在所有

使用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.rfmonit没有指定配置文件名,因此 Monit 会尝试在多个位置查找配置文件并使用找到的第一个配置文件。另一个重要的事情是,此包中的默认配置文件名与未修改的上游 Monit 版本使用的名称不同 — 上游使用monitrc,但 RepoForge 中的包使用monit.conf

配置文件使用的搜索顺序如下:

  1. ~/.monitrc在 Monit 的上游版本中,或~/.monit.conf在 RepoForge 包中(使用启动用户的主目录monit;如果 Monit 是从 init 脚本启动的,则用户是)。使用(即从或任何其他 NSS 数据库)root读取主目录,而不是从环境变量读取。getpwuid(geteuid())/etc/passwdHOME

  2. /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,并静默地覆盖它。

  3. $SYSCONFDIR/monitrc在 Monit 的上游版本中,编译源代码时传递给脚本的选项$SYSCONFDIR的值是(此选项的默认值是,与 Autoconf 生成的脚本一样,默认前缀是,因此配置文件名变为)。在 RepoForge 包中,此文件名变为,使其变得多余。--sysconfdir=...configure$prefix/etcconfigure/usr/local/usr/local/etc/monitrc/etc/monit.conf

  4. /usr/local/etc/monitrc在 Monit 的上游版本中,或者/usr/local/etc/monit.conf在 RepoForge 包中。这里的/usr/local/etc目录是硬编码的,不依赖于任何configure选项。

  5. ./monitrc在 Monit 的上游版本中,或者./monit.conf在 RepoForge 包中(从 init 脚本启动时,当前目录很可能是/)。

答案2

检查~/.monit.conf不存在 —/etc/monit.conf甚至在搜索根目录之前也会搜索此位置。(Monit 的上游版本使用~/.monitrc/etc/monitrc,但此特定包使用不同的配置文件名。)

相关内容