我有一个监控场景,我想监控 LAN 中的一些 HTTP URL,并将结果发送到 Internet 上的 Zabbix 服务器。Zabbix 可用于监控 HTTP URL,而无需使用代理,然后主服务器将在 Web 监控场景中直接监控 HTTP URL,并且 URL 应该对 Zabbix 服务器可见。但在我的场景中,HTTP 服务位于 NAT 后面,因此我应该使用“Zabbix 活动代理”来监控它们。我在 Zabbix 代理中找不到任何用于此目的的项目。有人知道我应该如何完成这项任务吗?
编辑:我知道 zabbix 可用于本地主机的聚合监控,但代理可用于主机的监控项目。我找不到任何用于监控主机(主动或被动主机)上 HTTP URL 的项目。
问候 Sajad
答案1
这就是 Zabbix代理人是为了。
您在网络内部安装一个 Zabbix 代理,它可以到达要监控的设备,然后在 Zabbix 服务器中添加代理并选择将通过代理监控的主机。
查看文档有关设置 Zabbix 代理的完整详细信息。
答案2
您可以创建自定义用户参数,在其中运行 curl 以监控您想要监控的 URL。如下所示:
UserParameter=host.url[*],curl -iLs $1 | grep -c "HTTP/1.1 200"
更多详细信息请参阅文档。
答案3
1)在服务器上的 zabbix-agent conf 中启用 EnableRemoteCommands:
sed -i 's/# EnableRemoteCommands=0/EnableRemoteCommands=1/' /path/to/zabbix_agentd.conf
2)在zabbix-agent conf中创建一个UserParameter来检查URL:
UserParameter=check.url[*],curl -s -o /dev/null -w '%{http_code}' $1
3)重新启动Zabbix代理:
systemctl restart zabbix-agent.service
现在你可以检查任何 URL:
zabbix_get -s server-IP-or-DNS -k 'check.url[https://www.google.com]'
200
如果返回 200,则表示 URL 正常。您可以检查所有 HTTP 状态代码这里
如果需要,您可以为 curl 命令添加超时时间--connect-timeout 30
(以秒为单位)
答案4
- 在您的网络内安装 Zabbix 代理。(PROXY-A)
- 在您的网络内部,在计算机上安装 Zabbix 代理。(计算机 B)
- 在 Zabbix 控制台上添加新主机 COMPUTER-B,但请确保选择由代理 PROXY-A 监控
- 在COMPUTER-B的属性上,创建一个指向要监控的内部网站的Web场景。
Zabbix 代理 PROXY-A 应该处于活动状态。
COMPUTER-B 应该处于活动状态。