告警接口API

告警接口API

哮天犬提供了不同语言的告警SDK,SDK实现了所有的告警接口,建议您优先使用SDK,告警SDK请移步:哮天犬告警SDK
使用告警接口或者告警SDK之前,请注意区分环境,测试环境后台创建的任务请使用测试环境的告警接口,生产环境后台创建的告警任务请使用生产环境的告警接口,接口环境说明请移步:接口环境说明

告警上报接口-/alarm/report

POST /alarm/report
用于发送告警,所有告警全部使用该接口。
Request Headers:

  • Content-Type: application/json

Request Parameters:

| Field | Type | Required | Comment | | —- | —- | —- | —- |

| taskid | Number | Y | 告警任务ID,创建告警任务获得 |

| timestamp | Number | Y | 时间戳,单位秒,与标准时间前后误差不能超过30分钟 |

| sign | String | Y | 接口签名,根据 md5(taskid+"&"+timestamp+token) 算法生成,具体请参考附录: 对外API接口鉴权规则说明 |

| ctn | Object | Y | 告警内容,Json对象格式,可以根据业务情况填任意字段,建议至少包含errno、error、trace三个字段 |

| notice_time | Number | N | 告警通知时间,时间戳,单位秒,默认为告警平台接收到告警生成的时间戳 |

| level | Number | N | 告警级别,仅做标记或者告警中条件判断,枚举类型,0-通知;1-警告;2-错误;3-紧急; |

| receiver | Object | N | 自定义告警接收人,不推荐使用,指定告警接收人之后会强制覆盖任务中预定义的告警接收人,会导致通过后台配置的告警通知人失效,适用于网关、日志中心这种综合性平台的特殊场景 |

| receiver.alarmgroup | Array | N | 告警组ID列表,如果告警组和下方自定义的通知渠道同时使用,将取并集进行发送告警 |

| receiver.channels | Object | N | 自定义告警渠道配置信息 |

| receiver.channels.dinggroup | Array | N | 告警接收钉钉机器人,每个item为 webhook 和 secret 的配置 |

| receiver.channels.dinggroup.*.webhook | String | N | 钉钉机器人webhook的access_token的值 |

| receiver.channels.dinggroup.*.secret | String | N | 钉钉机器人安全设置中加密下面一行的密钥 |

| receiver.channels.dingworker | Array | N | 钉钉工作通知,用户工号列表,不带前面数字0,比如01写为1 |

| receiver.channels.yachgroup | Array | N | 告警接收知音楼机器人,每个item为 webhook 和 secret 的配置 |

| receiver.channels.yachgroup.*.webhook | String | N | 知音楼机器人webhook的access_token字段的值 |

| receiver.channels.yachgroup.*.secret | String | N | 知音楼机器人密钥 |

| receiver.channels.yachworker | Array | N | 知音楼工作通知,用户工号列表,不带前面数字0,比如01写为1 |

| receiver.channels.email | Array | N | 邮件通知,用户工号列表,不带前面数字0,比如01写为1 |

| receiver.channels.sms | Array | N | 短信通知,用户工号列表,不带前面数字0,比如01写为1 |

| receiver.channels.phone | Array | N | 电话通知,用户工号列表,不带前面数字0,比如01写为1 |

| receiver.channels.wechat | Array | N | 微信通知(暂不支持),用户工号列表,不带前面数字0,比如01写为1 |

| receiver.channels.webhook | String | N | Webhook通知,必须以http/https协议开头的有效URL |

Request Body:

  1. {
  2. "taskid": 100001,
  3. "timestamp": 1582650647,
  4. "sign": "md5(taskid+"&"+timestamp+token)",
  5. "ctn": {
  6. "errno": 10086,
  7. "error": "网络信号不好",
  8. "hostname": "bj-sjhl-alarm-online"
  9. },
  10. "notice_time": 1583230743,
  11. "level": 1,
  12. "receiver": {
  13. "alarmgroup": [12, 23],
  14. "channels": {
  15. "dinggroup": [
  16. {
  17. "webhook": "xxxxxxxxxxxxxxxxxx",
  18. "secret": "XXXXXXXXXXXXXXXXXXX"
  19. }
  20. ],
  21. "dingworker": [
  22. 98333,
  23. 33333
  24. ],
  25. "yachgroup": [
  26. {
  27. "webhook": "xxxxxxxxxxxxxxxxxx",
  28. "secret": "XXXXXXXXXXXXXXXXXXX"
  29. }
  30. ],
  31. "yachworker": [
  32. 98333,
  33. 33333
  34. ],
  35. "email": [
  36. 98333,
  37. 33333
  38. ],
  39. "sms": [
  40. 98333,
  41. 33333
  42. ],
  43. "wechat": [
  44. 98333,
  45. 33333
  46. ],
  47. "phone": [
  48. 98333,
  49. 33333
  50. ]
  51. }
  52. }
  53. }

Response:

  1. {
  2. "code": 0,
  3. "msg": "success",
  4. "data": {
  5. "uuid": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed",
  6. "report_time": "2020-02-02 12:12:12"
  7. }
  8. }

| Field | Type | Comment | | —- | —- | —- |

| code | Number | 状态码:0-成功;其他-失败 |

| msg | String | 错误信息,以 code 的值为准 |

| data | Object | 响应结果 |

| data.uuid | String | 该告警信息唯一ID,基于uuid v4版本生成 |

| data.report_time | String | 告警上报时间,即告警平台接收到告警的实际 |

告警测试接口-/alarm/test

POST /alarm/test
用于测试签名是否正确,可以用于刚接入哮天犬告警接口时签名调试工作,用于平台化配置哮天犬告警场景,例如k8s构建通知可以配置哮天犬告警通知,为了避免任务ID taskidtoken 填写错误,可以调用此接口验证 taskidtoken 是否填写正确,但不会实际发生告警。
Request Headers:

  • Content-Type: application/json

Request Parameters:

| Field | Type | Required | Comment | | —- | —- | —- | —- |

| taskid | Number | Y | 告警任务ID,创建告警任务获得 |

| timestamp | Number | Y | 时间戳,单位秒,与标准时间前后误差不能超过30分钟 |

| sign | String | Y | 接口签名,根据 md5(taskid+"&"+timestamp+token) 算法生成,具体请参考附录: 对外API接口鉴权规则说明 |

Request Body:

  1. {
  2. "taskid": 100001,
  3. "timestamp": 1582650647,
  4. "sign": "md5(taskid+\"&\"+timestamp+token)"
  5. }

Response:

  1. {
  2. "code": 0,
  3. "msg": "success",
  4. "data": {}
  5. }

| Field | Type | Comment | | —- | —- | —- |

| code | Number | 状态码:0-成功;其他-失败 |

| msg | String | 错误信息,以 code 的值为准 |

| data | Object | 响应结果,此处为空 |

失败时返回:

  1. {
  2. "data": {},
  3. "msg": "signature invalid",
  4. "code": 401
  5. }

附录

1. 对外API接口鉴权规则说明

该鉴权需要taskidtoken两个字段,任务创建之后可以获得,并且如果泄露,可以前往哮天犬平台重置
为了减少误解及不必要的学习成本,该规则采用API网关鉴权相同的规则,即:
sign = md5(taskid+"&"+timestamp+token) ,其中 taskid 为任务ID,timestamp 为当前系统时间戳,单位秒,与哮天犬系统时间相差不超过半小时,token 为创建任务之后生成
然后将三个参数放入请求参数中:

  1. curl -X POST 'https://alarm-dog-service.domain.com/alarm/report' \
  2. -H 'Content-Type: application/json' \
  3. -d '{
  4. "taskid": taskid,
  5. "timestamp": timestamp,
  6. "sign": "sign",
  7. "ctn": {
  8. }
  9. }'

在线签名生成,AppID处填写taskid,AppKey处填写token:http://10.90.101.114/gateway.php(此处只需要使用该算法即可,不用加上Header(X-Auth-APPID))