我试图通过Monit监控本地Apache实例上的VHost。同一个域同时接受 http 和 https 流量,因此我想监控两者。
此外,域解析为的IP将转到服务器,该服务器负载平衡当前Apache实例与运行Apache的另一台服务器之间的流量。我需要Monit来监控本地实例,我希望避免在 / etc / hosts 文件中添加任何记录,所以我认为Monits配置设置{{ 1}}就足够了,我认为它是(仅监控 localhost ,但将标头with http headers []
设置为vhost域)。
无论如何,我似乎遇到的主要问题是,即使我将Monit配置为通过 http 和 https 协议监控主机,它也会监控两台主机只需 http ,但使用 https 协议将端口设置为443。
Apache的Monit配置文件是:
Host
这是该支票的Monit状态:
check process httpd with pidfile /var/run/httpd/httpd.pid
start program = "/bin/systemctl restart httpd.service" with timeout 60 seconds
stop program = "/bin/systemctl stop httpd.service"
check host localhost with address localhost
if failed
port 80
protocol http
with http headers [Host: www.domain.com, Cache-Control: no-cache]
and request / with content = "www.domain.com"
then restart
if failed
port 443
protocol https
with http headers [Host: www.domain.com, Cache-Control: no-cache]
and request / with content = "www.domain.com"
then restart
if 5 restarts within 5 cycles
then timeout
因此,我很清楚https是失败的,因为它仍在尝试使用端口HTTP,即使我在配置中有[root@server enabled-monitors]# monit status localhost
The Monit daemon 5.14 uptime: 14m
Remote Host 'localhost'
status Connection failed
monitoring status Monitored
port response time FAILED to [localhost]:443/ type TCPSSL/IP protocol HTTP
port response time 0.001s to [localhost]:80/ type TCP/IP protocol HTTP
data collected Tue, 26 Apr 2016 10:44:32
。
非常感谢任何输入。我有一种感觉,这可能是一个错误,并且在Monit Github回购中生病了,但是我不确定它是不是我忽略的傻事。
谢谢!
答案 0 :(得分:0)
这里的回复很晚,但我想我仍然会为那些偶然发现同样问题的读者发帖。
问题似乎不是Monit使用端口HTTP,尽管为HTTPS配置了检查。它始终报告状态中的HTTP协议(显示错误)。
真正的问题可能是Monit不支持SSL的SNI,因此忽略了https检查中的with http headers [Host: www.domain.com ...
。因此,检查失败,因为Monit实际上正在测试https://localhost
。
我已向Monit开发者here提交了错误。