一、内置监控方式(无需额外插件)
1. Web 监控(最常用,专门测网站)
Zabbix 自带Web 场景功能,模拟浏览器访问站点,完整检测:
- 连通性:TCP 80/443 端口是否通
- HTTP 状态码:200 正常、404/500/502/503 告警
- 页面响应时间(DNS、连接、下载耗时拆分)
- 页面内容校验:匹配关键词判断页面是否错乱(如检测 “系统维护”“503 Service Unavailable”)
- 登录流程模拟:多步骤场景(访问首页→登录→查询接口,校验会话、Cookie)
- 支持 HTTP/HTTPS、自定义请求头、POST 提交、代理、Basic Auth、SSL 证书过期检测
简单配置流程
- 配置 → Web 监控 → 创建 Web 场景
- 添加步骤:输入 URL、请求方式、页面检索字符串
- 设置触发器:响应超时 > 3s、状态码≠200、页面无指定关键词即告警
2. 内置监控项 net.tcp.service / net.tcp.service.perf
只检测端口连通、基础响应时间,适合简单端口存活监控:
- 监控项键值示例:
net.tcp.service[http,www.baidu.com,80] net.tcp.service[https,blog.example.com,443]
返回 1 正常,0 故障,搭配触发器直接报警。
3. web.page.get 获取完整页面源码
拉取网页完整内容,可搭配正则触发器检测页面异常、接口报错。
二、进阶深度监控(脚本自定义)
1. 自定义脚本监控(agent / 被动 / 主动)
用 curl/wget/python 脚本实现更复杂检测:
- 接口 JSON 返回校验(判断 code=0)
- 文件下载完整性校验
- SSL 证书剩余天数检测、证书过期预警
- 限流、接口并发、重定向异常判断
示例检测 SSL 过期脚本(zabbix-agent 调用):
expire_date=$(openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates | grep notAfter | cut -d'=' -f2) expire_ts=$(date -d "$expire_date" +%s) now_ts=$(date +%s) echo $(( (expire_ts - now_ts) / 86400 ))
返回剩余天数,触发器小于 30 天告警。
2. ICMP Ping 配套检测
搭配 icmpping 监控服务器存活,区分服务器宕机和网站服务挂了两种故障。
三、能监控的网站指标汇总
| 监控维度 | Zabbix 能力 |
|---|---|
| 端口存活(80/443) | net.tcp.service |
| HTTP 状态码 | Web 场景、web.page.get |
| 页面加载耗时(分段) | Web 场景原生拆分指标 |
| 页面关键字校验 | Web 场景内置检索 |
| 多步骤业务流程(登录、表单) | Web 场景多步骤 |
| SSL 证书有效期 | 自定义 shell 脚本 |
| API 接口返回 JSON 校验 | 自定义 curl 脚本 |
| 域名 DNS 解析 | 自定义 nslookup 脚本 |
| 网站跳转 / 重定向异常 | Web 场景校验跳转地址 |
四、优缺点对比
优点
- 统一平台:服务器、数据库、中间件、网站一套 Zabbix 管理,不用多套监控工具
- 告警渠道齐全:钉钉、企业微信、邮件、短信、电话、自定义 webhook
- 图表趋势:长期记录网站响应时间,分析访问波动
- 支持分布式:Proxy 跨机房监控外网网站,解决内网出口限制
局限
- Web 场景性能弱于专业拨测工具(如云拨测、Prometheus Blackbox),大量站点会消耗 server 性能
- 无法模拟真实浏览器 JS 渲染(只抓 HTTP 返回,不能检测前端 JS 报错、页面渲染白屏)
- 无多地分布式节点拨测(只能在部署 Zabbix Proxy/Server 的机器发起检测)
五、最佳实践方案
- 少量内部业务网站:直接使用 Zabbix Web 场景,简单高效;
- 大量外网站点 / 需要多地拨测:搭配 Blackbox Exporter + Prometheus + Grafana 补充,或第三方云拨测;
- 全栈监控:Zabbix 监控服务器资源 + Web 场景监控业务站点,双重告警区分主机故障和应用故障。

