如何使用Zabbix监控REST API并在响应含"up":false时触发邮件告警?
一步步实现REST API含"up":false时的Zabbix邮件告警
别担心,我带你从零开始搞定这个需求,完全不懂Zabbix也能跟着操作!
1. 先搞定基础准备
- 确保你的Zabbix Server(或者用来监控的Zabbix Agent)是5.0及以上版本(新版本原生支持HTTP Agent功能,操作更简单)
- 先配置好Zabbix的邮件告警媒介:进入Zabbix前端的「管理」→「媒介类型」,创建一个SMTP类型的媒介,填好你的邮箱服务器信息(比如QQ邮箱的SMTP是
smtp.qq.com,端口465,开启SSL);然后给需要接收告警的用户绑定这个媒介(「管理」→「用户」→编辑用户→「媒介」标签添加刚才的SMTP媒介)
2. 创建监控项:获取API响应内容
这一步是让Zabbix定期调用你的REST API,把响应内容拉回来:
- 进入「配置」→「主机」,如果没有合适的主机,可以创建一个虚拟主机(比如命名为
API_Monitor),然后点击主机对应的「监控项」→「创建监控项」 - 填写监控项的关键信息:
- 名称:起个好认的名字,比如「检查API运行状态响应」
- 类型:选择「HTTP agent」
- 键值:填写
web.get["https://your-api-domain.com/your-api-path",,,"UTF-8"],把里面的URL换成你的实际API地址;后面的空参数分别对应端口(留空用默认80/443)、超时时间(默认即可)、编码(UTF-8一般没问题) - 类型信息:选择「文本」(因为我们要检查响应里的字符串内容)
- 更新间隔:根据你的需求设置,比如30秒(表示每30秒调用一次API)
- 保存后,去「监测」→「最新数据」,找到这个监控项,确认它能正常获取到API的响应内容(如果显示"不支持"或空值,检查URL是否正确、API是否能被Zabbix服务器访问到)
3. 创建触发器:判断响应是否含"up":false
触发器是告警的触发条件,当监控项的内容符合要求时,就会进入告警状态:
- 进入「配置」→「主机」→对应主机的「触发器」→「创建触发器」
- 填写信息:
- 名称:比如「API报告异常:响应含"up":false」
- 严重性:根据需求选,比如「警告」或者「严重」
- 表达式:这是核心,填写
{API_Monitor:web.get["https://your-api-domain.com/your-api-path",,,"UTF-8"].str("\"up\":false")}=1- 解释:
{主机名称:监控项键值.str("要匹配的字符串")}是Zabbix的文本匹配函数,当响应里包含"up":false时,这个函数返回1,等于1的时候触发器就会触发 - 注意:字符串里的双引号要加转义符
\,不然Zabbix会识别错误
- 解释:
- 保存触发器后,你可以手动让API返回包含
"up":false的响应,测试触发器是否会变成「问题」状态
4. 创建动作:触发时发送邮件告警
动作是触发器触发后要执行的操作,这里就是自动发送邮件:
- 进入「配置」→「动作」→「触发动作」→「创建动作」
- 填写基本信息:
- 名称:比如「API异常时发送邮件告警」
- 设置「条件」:
- 点击「添加」,选择「触发器」→「等于」,然后选择刚才创建的那个触发器,确保只有这个触发器触发时才会执行动作
- 设置「操作」:
- 点击「添加操作」,在「操作类型」里选「发送消息」
- 「发送到用户组」:选择你要接收告警的用户组(或者直接选单个用户)
- 「发送到媒介类型」:选择刚才配置的SMTP邮件媒介
- 「消息主题」:自定义即可,比如
API异常告警:{TRIGGER.NAME} - 「消息正文」:也可以自定义,比如:
告警时间:{DATE} {TIME} 告警内容:{TRIGGER.NAME} API地址:{ITEM.KEY} 当前响应内容:{ITEM.LASTVALUE}
- 保存动作后,当触发器触发时,Zabbix就会自动给你发送告警邮件了
一些额外注意事项
- 如果你的API需要认证(比如Token、用户名密码),在创建监控项的「HTTP agent」设置里,找到「HTTP头」,添加对应的认证头,比如
Authorization: Bearer your-token-here - 测试顺序建议:先确保监控项能拿到正确响应,再测试触发器是否触发,最后测试邮件是否正常发送
- 如果Zabbix服务器访问不到API,检查防火墙、网络策略,确保Zabbix服务器能连接到API的地址和端口
内容的提问来源于stack exchange,提问作者Mitul FG
相关产品推荐
相关产品推荐

