监控 5.25.2
这些是我们的凭据设置:
set httpd port 2812
allow localhost
allow guest:guest read-only
allow @wheel
allow cleartext /opt/monit/htpasswd
理由:
- 本地主机启用监控状态
- 客人:客人为每个人启用网络访问(只读)客人
- @车轮为本地用户组启用完整的 Web 访问车轮
- 明文为不在主机上的一对用户启用完整的 Web 访问
我阅读了文档,并尝试“洗牌”设置(叹气),但我无法理解如何解决常见问题:这两种用法中只有一种有效:
- 从命令行,监视状态
- 从客户端电脑进行网络访问(IP 地址不是主机本身)
更新
我偶然发现了两个问题:
- 允许本地主机
没有它,所有客户端电脑都可以访问,但是监控状态不起作用。
使用“允许本地主机”,它会阻止客户端,因此我们还必须指定:
允许 10.0.0.0/8
恕我直言,文档中并不清楚这一点。
- 来自客户端电脑的测试...注意凭据
尝试从电脑访问监控,浏览器会缓存凭据......因此这些测试可能会产生误导。
更新
我发现了问题:
strace -s 512 -e connect,write /opt/monit/bin/monit status 2>&1 |more
connect(4, {sa_family=AF_INET, sin_port=htons(2812), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)
write(4, "POST /_status HTTP/1.0\r\nContent-Type: application/x-www-form-urlencoded\r\nCookie: securitytoken=88521284dfbc7acea0521e16e11356d1\r\nContent-Length: 58\r\n\
r\nformat=text&securitytoken=88521284dfbc7acea0521e16e11356d1", 209) = 209
write(2, "You are not authorized to access monit..."
为什么它发送 Cookie: securitytoken= ?
在配置中我们定义了
允许访客:访客只读
如果我使用以下命令发出 HTTP 请求客人凭证,它的工作原理:
"GET /_status?format=text HTTP/1.0\r\nAuthorization:Basic Z3Vlc3Q6Z3Vlc3Q=\r\n\r\n"
答案1
我开了一张票,开发人员发现这是一个错误。
他们正在努力。
https://bitbucket.org/tildeslash/monit/issues/769/monit-status-doesnt-work