快速入门
网站监控
网站监控概述
HTTP/HTTPs监控
Ping监控
FTP监控
TCP监控
UDP监控
DNS监控
SMTP监控
TraceRoute监控
管理网站监控项目
服务器性能监控
服务器性能监控概述
安装配置SNMP代理
创建服务器监控项目
管理服务器监控项目
查看服务器监控项目
服务性能监控
服务性能监控概述
Apache监控
Lighttpd监控
Nginx监控
MySQL监控
MongoDB监控
Redis监控
Memcache监控
Tomcat监控
IIS监控
SQLServer监控
Oracle监控
管理服务监控项目
API监控
API监控概述
创建API监控项目
管理API监控项目
查看API监控项目
Docker监控
Docker监控概述
创建Docker监控项目
查看Docker监控项目
设置Docker告警
管理Docker监控项目
安全监控
安全监控概述
新建并管理资产
新建并管理VPN通道
创建并管理检测任务
执行任务
查看检测结果
管理白名单
自定义监控
自定义监控概述
创建自定义规则
创建自定义监控项目
查看自定义监控项目
网页性能管理
网页性能管理概述
创建网页性能项目
管理网页性能项目
查看网页性能项目
用户体验跟踪
用户体验跟踪概述
创建用户体验项目
查看用户访问速度
查看用户体验报告
管理服务器
内网采集器管理
插件式监控平台
内网采集器插件说明
采集器运行环境说明
内网采集器注意事项
配置采集器运行环境
创建内网采集器
下载并运行采集器
创建关联项目
管理内网采集器
云主机监控管理
云主机监控端概述
配置云主机运行环境
创建云主机监控端
下载并运行云主机
管理云主机监控端
项目概况
应用架构图
应用架构图概述
创建应用架构图
分享应用架构图
查看应用架构图
报表中心
管理仪表盘
管理监控视图
管理告警和故障
管理SLA报告
管理对比分析报告
用户中心
账户设置
个人设置
通知设置
URL回调说明

一、什么是URL回调

URL回调,是告警消息的一种通知方式。通过监控宝URL回调,您可以让告警通知发送到您指定的URL,使您能更加灵活处理告警消息。

目前我们对网站监控、服务器性能监控和服务性能监控提供URL回调功能,以后将开放更多监控类型的URL回调功能。

URL回调通知方式最大的特点是用户可以发挥自己的想象,灵活地处理各种告警消息。与普通告警方式相,URL回调通知方式具有如下表所示的特点。

对比项

普通告警方式

URL回调方式

选择类型

可以

可以

选择项目

可以

可以

选择告警消息类型

不可以

可以

选择告警指标

不可以

可以

告警接收途径

短信、邮件、电话语音

短信、邮件、电话语音、app、网页插件等无限种可能

告警处理方法

人工

人工、程序智能


二、设置URL回调

设置回调URL、回调token、回调方式后,监控宝就会通过设定的回调方式向指定的URL发送告警消息。

回调URL

输入您指定的回调URL,即通过公网能访问到的URL。点击<获取模拟回调地址>按钮,您可以实时查看模拟的回调URL。

回调token

回调token用来验证您收到的消息是否由监控宝发出。点击<更换一个>按钮可更换回调token,同时您需要更换回调程序中的校验Token。

回调方式

URL回调通过GET或POST方式将告警信息发送至您指定的URL,推荐使用post传递方式。

GET方式参数说明如下表所示:

参数

说明

msg_id

告警消息的ID。

task_id

监控项目事务ID。

task_type

监控项目的类型。

fault_time

故障的发生时间(unix时间戳)。

task_status

监控任务的状态:1为不可用,0为恢复可用。

task_summary

监控项目的摘要。

content

告警消息的内容,对内容进行了urlencode,需要urldecode得到内容。

POST方式参数说明如下表所示:

参数

说明

msg_id

告警消息的ID。

task_id

监控项目的ID。

task_type

监控项目的类型。

fault_time

故障发生的时间(unix时间戳)。

message_type

消息状态:1为故障,2为提醒。

message_status

消息类型:1为告警,2为恢复。

task_summary

监控项目的摘要。

content

告警消息内容,对内容进行了urlencode,需要urldecode得到内容。

token使用msg_id、task_id、fault_time和您的回调token 这4个参数连接并用MD5算法加密后的值来校验消息。

约定说明

监控宝发起的请求中消息内容都为UTF-8编码,监控宝会对URL回调结果进行记录,要求您返回的正文内容为UTF-8编码并且不超过100个字符。


三、 URL回调应用场景

场景描述

有很多人都在使用 DNSPod 的域名解析服务,如果您有多个服务器,发现某个服务器出现问题时可能需要登录到DNSPod的系统上,然后从DNS解析中摘除这台机器。如果是深夜出现这样的情况,恐怕你这晚的美梦就要被打扰了!往往这种不确定的情况都会让运维或者开发人员感到非常心烦。

使用URL回调

现在监控宝支持URL回调功能,开发人员可以使用URL回调结合DNSPod开放的API服务,自动进行故障转移。监控宝能在第一时间监测到哪个服务器出现问题,然后将告警消息URL回调到您的程序,您的程序完全可以通过DNSPod的API去摘除问题服务器。这样,您就不必半夜起来打开电脑修改DNS记录了。


四、URL回调实例

以PHP语言为例,以下是监控宝发起的GET方式URL回调请求:

http://domain/callback.php?msg_id=1&task_id=2&task_type=http&fault_time=1271767302&task_status=1&task_summary=http://domain.com&content= 
%E6%B6%88%E6%81%AF%E5%86%85%E5%AE%B9&token=3df5ed43ff3f57b3543d1d3e9c40e8d4

你在callback.php文件中接收GET参数并对消息进行校验:

$msg_id      = $_GET['msg_id'];
$task_id     = $_GET['task_id'];
$fault_time  = $_GET['fault_time'];
$token       = $_GET['token'];
$url_token   = '您自己的回调token';
//如果校验成功,则说明此消息为监控宝系统发出,否则为非法请求,不予处理
if (md5($msg_id . $task_id . $fault_time . $url_token) == $token) {
    ..........
}

以下是监控宝发起的POST方式URL回调请求:

POST http://domain/callback.php
POST: array(10) { ["msg_id"]=> string(9) "101407787" ["message_status"]=> string(1) "2" ["message_type"]=> string(1) "2" ["fault_time"]=> string(10) 
"1409803140" ["content"]=> string(144) 
"%E6%81%A2%E5%A4%8D%E5%91%8A%E8%AD%A6%E7%BA%BF%5B%E6%9C%80%E8%BF%915%E5%88%86%E9%92%9F%E5%B9%B3%E5
%9D%87%E8%B4%9F%E8%BD%BD%E5%A4%A7%E4%BA%8E+1%5D" 
["task_id"]=> string(6) "259197" ["task_type"]=> string(4) "load" ["task_summary"]=> string(16) "118.144.76.75(2)" ["token"]=> string(32) 
"e156828484b1c5c151a4db7dd4f3c666" ["message_detail"]=> string(64) "{"metric":"load_average_5","compare":"gt","value":"1","unit":""}" }

你在callback.php文件中接收POST参数并对消息进行校验:

$msg_id      = $_POST['msg_id'];
$task_id     = $_POST['task_id'];
$fault_time  = $_POST['fault_time'];
$token       = $_POST['token'];
$url_token   = '您自己的回调token';
//如果校验成功,则说明此消息为监控宝系统发出,否则为非法请求,不予处理
if (md5($msg_id . $task_id . $fault_time . $url_token) == $token) {
    ..........
}

为了防止消息被非法重复请求您的回调URL,您可以通过验证具有唯一性的 msg_id 参数是否已经在您的存储(您处理过的消息)中即可判断是否为非法重复请求。