URL回调
通过监控宝URL回调功能,您可以让告警通知发送到您指定的URL,使您能更加灵活处理告警消息。
目前我们对部分套餐用户开放URL告警通知功能,详情请参考套餐计划。如果您还没有注册监控宝,请点此注册。
目前我们只对站点监控提供URL回调功能,以后将开放更多监控类型的URL回调功能。
如何使用
- 数字列表项目在URL全局设置中填写您指定的回调URL,即通过公网能访问到的URL。您可以实时查看模拟的回调URL。
- 在通知方式中开启URL回调的全局设置。回调token用来验证您收到的消息是否由监控宝发出。
约定说明
- 监控宝发起的请求中消息内容都为UTF-8编码
- 监控宝会对URL回调结果进行记录,要求您返回的正文内容为UTF-8编码并且不超过100个字符
传递参数
URL回调通过GET方式将告警信息发送至您指定的URL。
参数说明
- msg_id 告警消息ID
- task_id 监控项目ID
- task_type 监控项目类型,参考 监控项目
- fault_time 故障发生时间(unix时间戳)
- task_status 监控任务状态, 1 为不可用,0 为恢复可用
- task_summary 监控项目摘要
- content 告警消息内容,对内容进行了urlencode,需要urldecode得到内容
- token 使用msg_id、task_id、fault_time和您的回调token 这4个参数连接并MD5后的值,用来您对消息做校验
一个例子
以下以PHP语言为例
以下是监控宝发起的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) { .......... }
为了防止消息被非法重复请求您的回调URL,您可以通过验证具有唯一性的 msg_id 参数是否已经在您的存储(您处理过的消息)中即可判断是否为非法重复请求。