报警回调

概念

报警回调功能可以让您将云监控发送的报警通知集成到已有运维体系或消息通知体系中。云监控通过 HTTP 协议的 POST 请求推送报警通知到您指定的公网 URL ,您在接收到报警通知后,可以根据通知内容做进一步处理。

Note

报警回调的重试策略为重试 3 次,超时时间为 5 秒。

创建报警回调

1.登录 报警管理控制台 ,若无创建好的报警规则,点击 [创建报警] 新增报警规则。若已有规则,则直接进行下一步;

2.选择已有的报警规则项,点击 [设置] 按钮;

报警规则-报警回调01

3.在报警回调地址的输入框中填写需要回调的URL地址,发送方式统一为 HTTP POST 请求;

报警管理-报警回调02

回调参数

参数数据类型说明
projectIdstring租户id
namespacestring服务名
dimensionstring实例名
alertStatestring报警状态,会根据实际情况返回
alarmNamestring报警名称
timestampstring发生报警的时间戳
alarmContentstring报警内容

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();
}