Zabbix自定义监控项,监控网站HTTP响应码

Zabbix默认模板可以监控很多指标,但监控网站HTTP响应码通常需要自定义监控项。
这篇文章会从零开始,教你用脚本和UserParameter在Zabbix Agent上创建一个自定义监控项,用来获取指定URL的HTTP状态码,并配置触发器和图形,最终在Zabbix前端看到实时数据。
整个过程适合零基础用户,只要按步骤操作就能完成。

准备工作:明确监控目标和环境

在开始配置之前,先确认以下条件:

  • 已经部署好Zabbix Server和Zabbix Agent,并且Agent处于运行状态。
  • 被监控主机上安装了curl命令,用于发送HTTP请求。
  • 知道要监控的网站URL,例如https://www.example.com。
  • 拥有Zabbix Agent配置文件的修改权限,通常路径是/etc/zabbix/zabbix_agentd.conf。

关键点:自定义监控项需要Zabbix Agent主动执行脚本,因此脚本必须放在Agent能访问的路径下,并且Agent运行用户要有执行权限。

编写获取HTTP响应码的脚本

首先,在Zabbix Agent所在主机上创建一个脚本,例如/usr/local/bin/check_http_code.sh。

#!/bin/bash
# 检查网站HTTP响应码
# 用法: ./check_http_code.sh 

URL="$1"
if [ -z "$URL" ]; then
    echo "0"
    exit 1
fi

# 使用curl获取HTTP状态码,-s静默模式,-o /dev/null丢弃页面内容,-w输出状态码
code=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 10 --max-time 20 "$URL")

# 如果curl执行失败,返回000
if [ $? -ne 0 ]; then
    echo "000"
else
    echo "$code"
fi

保存后赋予执行权限:

chmod +x /usr/local/bin/check_http_code.sh

避坑提示:脚本中--connect-timeout和--max-time可以避免因网络问题导致长时间阻塞。
如果网站需要忽略证书错误,可以加上-k参数。
返回000表示请求失败,便于后续触发器判断。

配置Zabbix Agent的UserParameter

下一步,告诉Zabbix Agent如何调用这个脚本。
编辑Agent配置文件:

vim /etc/zabbix/zabbix_agentd.conf

在文件末尾添加一行UserParameter:

UserParameter=http.code[*],/usr/local/bin/check_http_code.sh "$1"

这里的http.code是自定义监控项键名,[*]表示可以传入参数,$1代表第一个参数,即URL。

保存后重启Zabbix Agent:

systemctl restart zabbix-agent

验证方法:在Zabbix Server上使用zabbix_get测试:

zabbix_get -s  -k http.code[https://www.example.com]

如果返回类似200、301、404的数字,说明配置成功。
如果报错ZBX_NOTSUPPORTED,请检查脚本路径、权限和配置文件语法。

在Zabbix前端创建监控项和触发器

登录Zabbix Web界面,进入“配置”->“主机”,找到目标主机,点击“监控项”,然后“创建监控项”。

  • 名称:网站HTTP响应码
  • 键值:http.code[https://www.example.com]
  • 信息类型:数字(无正负)
  • 更新间隔:30秒(根据需求调整)
  • 历史数据保留时长:按需设置

点击“添加”保存。

接着创建触发器,用于在响应码异常时告警。
点击“触发器”,然后“创建触发器”。

  • 名称:网站HTTP响应码异常
  • 严重性:警告
  • 表达式:{主机名:http.code[https://www.example.com].last()}<>200

这个表达式表示最近一次获取的响应码不等于200时触发告警。
你也可以根据实际情况只监控4xx或5xx,例如:

{主机名:http.code[https://www.example.com].last()}>=400

避坑提示:如果网站正常返回301或302跳转,需要将表达式调整为不等于301和302,或者根据业务需求设置。

常见问题与排查思路

  • zabbix_get返回ZBX_NOTSUPPORTED:检查Agent配置文件中的UserParameter是否写错,重启Agent后重试。确保脚本第一行是#!/bin/bash,并且有执行权限。
  • 获取的响应码总是000:可能是网络不通、DNS解析失败或超时。手动执行脚本测试,例如/usr/local/bin/check_http_code.sh https://www.example.com,查看curl错误信息。
  • 监控项显示“不支持”:在Zabbix前端查看监控项的最新错误信息,通常会有具体原因,比如权限拒绝或键值错误。
  • 触发器频繁告警:适当调整更新间隔和触发器表达式,避免网络抖动导致误报。

效果验证与后续优化

配置完成后,等待几分钟,在Zabbix前端的“监测”->“最新数据”中筛选该主机,应该能看到“网站HTTP响应码”的最新值。
如果显示200,说明监控正常。

你还可以创建图形,直观查看响应码变化。
进入“配置”->“主机”->“图形”,创建图形并添加该监控项。

总结:通过自定义脚本和UserParameter,Zabbix可以灵活监控网站HTTP响应码。
核心步骤是编写脚本、配置UserParameter、重启Agent、创建监控项和触发器。
遇到问题时,优先用zabbix_get测试,再检查脚本和配置文件。
这套方法同样适用于监控其他自定义指标,比如API返回内容或页面关键字。

分享到:
上一篇
KVM虚拟机桥接网络,虚拟机获取独立公网IP
下一篇
Grafana网站监控面板模板,导入直接使用
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意