报警回调
概念
报警回调功能可以让您将云监控发送的报警通知集成到已有运维体系或消息通知体系中。云监控通过 HTTP 协议的 POST 请求推送报警通知到您指定的公网 URL ,您在接收到报警通知后,可以根据通知内容做进一步处理。
Note
报警回调的重试策略为重试 3 次,超时时间为 5 秒。
创建报警回调
1.登录 报警管理控制台 ,若无创建好的报警规则,点击 [创建报警] 新增报警规则。若已有规则,则直接进行下一步;
2.选择已有的报警规则项,点击 [设置] 按钮;
3.在报警回调地址的输入框中填写需要回调的URL地址,发送方式统一为 HTTP POST 请求;
回调参数
参数 | 数据类型 | 说明 |
---|---|---|
projectId | string | 租户id |
namespace | string | 服务名 |
dimension | string | 实例名 |
alertState | string | 报警状态,会根据实际情况返回 |
alarmName | string | 报警名称 |
timestamp | string | 发生报警的时间戳 |
alarmContent | string | 报警内容 |
POST请求示例
{
"projectId":"e7e82e4786fdsdasd7sds8d7720a086785",
"namespace":"comb-windows",
"dimension":"uuid=95350667-dea4-4133-ba5",
"alertState":"REBOOT",
"alertName":"host-restart",
"timestamp":"1532478248735",
"alarmContent":"报警测试"
}
处理代码示例
@RequestMapping(value = "/public/postAlarmCallback", method = RequestMethod.POST)
@ResponseBody
public String receiveAlarmCallback() {
ExecutionContext context = threadLocal.get();
String projectId = context.getParameter("projectId");
String namespace = context.getParameter("namespace");
String dimension = context.getParameter("dimension");
String alertState = context.getParameter("alertState");
String alarmName = context.getParameter("alarmName");
String timestamp = context.getParameter("timestamp");
String alarmContent = context.getParameter("alarmContent");
Object[] args = new Object[]{projectId, namespace, dimension, alertState, alarmName, timestamp, alarmContent};
logger.info("projectId=[{}],namespace=[{}],dimension=[{}],alertState=[{}],alarmName=[{}],timestamp=[{}],alarmContent=[{}]", args);
JSONMap jsonMap = new JSONMap("receiveAlarmCallback", context.getMethod());
jsonMap.addData("code", 200);
jsonMap.addData("msg", "ok");
return jsonMap.toString();
}