报警回调
更新时间:2024-09-24
功能简介
通过报警回调,可实现将BCM云监控的报警通知发送到您指定的URL。您可以自由、灵活的处理各类报警消息,BCM支持通过 HTTP/HTTPS协议 的 POST 请求推送到可访问公网 URL ,您可基于回调接口推送的报警信息做进一步的处理。如需通过企业微信、钉钉、如流、知音楼、飞书、Knock等办公软件接收报警通知,请参见webhook使用说明。
报警回调使用说明
- 报警回调接口:您需要提供能接收 HTTP/HTTPS 协议的POST 请求,并且公网可访问的 URL 地址,作为回调地址。
- 报警回调触发:如果填写了报警回调地址,触发逻辑与报警短信、邮件、电话一致,当创建的报警策略被触发、报警策略恢复时,均会通过报警回调接口发送报警消息。
- 绑定报警回调接口:您可在创建报警策略详添加回调接口。一个报警策略只可绑定一个报警回调 URL。
- 返回内容:当向绑定的 URL 发出报警信息后,我们需要接收到标识成功的返回内容(httpCode = 200),以表明已成功接收信息;否则我们将重复发送报警信息,最多重试三次,超时时间为5s(重试机制)
操作步骤
下面以云产品监控举例说明,报警回调功能的入口有三处:
- 入口一:统一的创建报警策略入口
- 在左侧导航栏中点击<报警管理>-><报警策略>,在云产品监控的策略列表下,点击<添加策略>。
- 在“创建策略”页面,开启报警回调,输入公网可访问的 URL 地址。
- 入口二:为某个云服务下单个实例创建报警策略入口
- 在左侧导航栏中点击<云产品监控>,点击要查看的云产品,进入该云产品的实例列表页面。如查看云服务器BCC监控数据,点击<云服务器监控>,进入“云服务器列表”页面。然后选择对应的实例点击进入“报警策略”页面。
- 在实例“报警策略”页面,点击<添加策略>
- 在“创建策略”页面,开启报警回调,输入公网可访问的 URL 地址。
- 入口三:创建报警通知模版入口
- 在左侧导航栏中点击<报警管理>-><报警模版>,在报警动作列表页面,点击<添加模版>。
- 在添加通知模版页面,接口回调一栏,输入公网可访问的 URL 地址。
说明: 报警通知模版支持添加多个回调地址(上限5个)。
webhook使用说明
- 企业微信
- 登录企业微信,打开需要接收报警通知的企业微信群。
- 添加群机器人后,复制webhook地址,参考上面操作步骤填写到“报警回调”中即可。
- 配置成功后,当报警通知被触发时,您可以在企业微信群收到报警通知。
- 钉钉
- 登录钉钉,打开需要接收报警通知的钉钉群,添加群机器人。
- 填写表单,“安全设置”模块勾选“自定义关键词”选项,建议填写“报警”作为关键词。
说明:勾选自定义关键词复选框,输入添加关键词,最多可以设置10个关键词,消息中至少包含其中1个关键词才可以发送成功。例如添加了一个自定义关键词:报警,则这个机器人所发送的消息,必须包含报警这个词,才能发送成功。
- 群内添加钉钉机器人,复制webhook地址,参考上面操作步骤填写到“报警回调”中即可。
- 配置成功后,当报警通知被触发时,您可以在钉钉群收到报警通知。
- 如流
- 登录如流,打开需要接收报警通知的如流群。
- 群内添加如流机器人,复制webhook地址,参考上面操作步骤填写到“报警回调”中即可。
- 配置成功后,当报警通知被触发时,您可以在如流群收到报警通知。
- 知音楼
- 登录知音楼,打开需要接收报警通知的知音楼群。
- 填写表单,“安全设置”模块勾选“自定义关键词”选项,建议填写“报警”作为关键词。
说明:勾选自定义关键词复选框,输入添加关键词,最多可以设置10个关键词,消息中至少包含其中1个关键词才可以发送成功。例如添加了一个自定义关键词:报警,则这个机器人所发送的消息,必须包含报警这个词,才能发送成功。
- 群内添加如流机器人,复制webhook地址,参考上面操作步骤填写到“报警回调”中即可。
- 配置成功后,当报警通知被触发时,您可以在如流群收到报警通知。
- 飞书
- 登录飞书,打开需要接收报警通知的飞书群。
- 群内添加如流机器人,复制webhook地址,参考上面操作步骤填写到“报警回调”中即可。
- 配置成功后,当报警通知被触发时,您可以在如流群收到报警通知。
- Knock
- 登录Knock,打开需要接收报警通知的Knock群。
- 群内添加如流机器人,复制webhook地址,参考上面操作步骤填写到“报警回调”中即可。
- 配置成功后,当报警通知被触发时,您可以在如流群收到报警通知。
POST方式参数说明
指标报警POST方式参数说明
参数 | 说明 |
---|---|
alertId | 报警ID |
userId | 账号ID |
alarmName | 报警策略名称 |
scope | 云产品名称 |
policyType | 策略类型(指标报警和事件报警之一,Metric代表是指标报警,Event代表事件报警) |
alertStartTimestamp | 发生报警的时间戳 |
region | 报警对象所在的地域 |
monitoringObject | 发生报警的对象 |
alarmLevel | 报警等级状态。根据实际情况返回严重、通知、重要、警告四种状态中的一种 |
formula | 报警条件 |
currentValue | 报警发生或恢复时监控项的当前值 |
taskTimestamp | 报警回调发送时间 |
signature | 签名 |
alarmStatus | 报警状态:报警-异常、报警-重复提醒、报警-数据不足、报警-关闭(恢复正常)四种中的一种 |
事件报警POST方式参数说明
参数 | 说明 |
---|---|
alarmName | 报警策略名称 |
scope | 云产品名称 |
alertStartTimestamp | 发生报警的时间戳 |
alertContent | 事件详情 |
taskTimestamp | 报警回调发送时间 |
signature | 签名 |
signature值是与alertId和taskTimestamp这3个参数连接并用MD5算法加密后的值相等来校验。
URL回调示例
下面是URL回调的使用实例,BCM发起的POST方式URL回调请求:
POST http://127.0.0.1:8201/callback
请求Body("Content-Type": "application/json"):
{
"alarmStatus":"报警-异常",
"alertId":"19925050-3f77-4839-bae7-6a5f721aae0c",
"userId":"your_user_id",
"alarmName":"test_bcc_alarm",
"scope":"BCE_BCC",
"policyType":"Metric",
"alertStartTimestamp":1698982559,
"region":"北京",
"monitoringObject":"i-6nfua8xc/bcc-test-bj/-(公)/192.168.16.12(内)",
"alarmLevel":"重要",
"formula":"CPU使用率1分钟平均值 > -1 %",
"currentValue":"CPU使用率=0.50%",
"taskTimestamp":1698982642,
"signature":"88e647b853e480046632a5eb9fef70f5"
}
在callback.java文件中接收POST参数并对消息进行校验:
// 从发送来的POST请求中解析出alertId、taskTimestamp 、signature这3个参数。使用alertId和taskTimestamp 这3个参数字符串连接并用MD5算法加密后的值来校验消息。
如果校验成功,则说明此消息为百度云发出,否则为非法请求,不予处理。其中taskTimestamp可以用来做过期验证,如果时间戳与用户当前时间时间间隔大于某个周期(如10分钟),则用户可自行丢弃请求。
if (md5(alertId + taskTimestamp) == signature) {
..........
}