规则引擎 API
规则引擎 API
概述
主文主要描述规则引擎参数设备和管理 API,规则引擎主要用于处理设备上报的数据流,触发操作或发出告警。
告警
属性列表
NAME | SORTABLE | TYPE | DESCRIPTION |
---|---|---|---|
id | - | ObjectId | 文件 ID |
created | true | Date | 创建时间, 单位为毫秒 |
details | - | Object | 告警详情 |
level | true | Number | 告警级别 |
location | - | Object | 告警相关的位置 |
message | true | String | 告警消息 |
name | true | String | 告警名称 |
ownerId | - | ObjectId | 这条告警所属的公司账号 |
period | true | Number | 沉默周期 |
resource | - | Object | 告警相关的设备 |
ruleId | - | ObjectId | 相关的规则的 ID |
status | true | Number | 报警状态 |
title | true | String | 告警标题 |
type | true | String | 告警类型 |
updated | true | Date | 最后更新时间, 单位为毫秒 |
报警状态 - status
- 0 - 恢复正常
- 1 - 预警
- 2 - 报警
告警级别 - level
fatal
, 5 - 严重critical
, 4 - 危险/重度warning
, 3 - 中度warning
, 2 - 警告/轻度info
, 1 - 正常info
, 0 - 优秀
沉默周期 - period
ONCE
每次都发送ONCE_A_MINUTE
每分钟只发送一次ONCE_AN_HOUR
每小时只发送一次ONCE_A_DAY
每天发送一次ONCE_A_WEEK
每周只发送一次OFF
不发送
创建一个新的告警
POST /alert/add
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
name | true | String | 告警名称 |
level | - | Number | 告警级别 |
device | - | Object | 告警相关的设备 |
title | - | String | 告警消息 |
status | - | Number | 告警状态 |
recipient | - | Object | 告警接收者 |
location | - | Object | 告警位置 |
details | - | Object | 告警详情 |
响应结果:
返回创建的告警的信息
{
"id": String,
"level": Number,
"name": String,
"device": Object,
"title": String,
"status": Number,
"recipient": Object,
"location": Object,
"details": Object
}
错误码:
CODE | MESSAGE | NOTE |
---|---|---|
100401 | Unauthorized | 用户没有登录, 或身份没有认证 |
100403 | Permission denied | 禁止访问, 没有相应的权限 |
104001 | Miss required parameter | 缺失必选参数,请参考API文档 |
获取指定的告警信息
GET /alert/get
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | ObjectId | 告警 ID |
响应结果:
返回修改后的告警的信息
{
"id": String,
"level": Number,
"name": String,
"device": Object,
"title": String,
"status": Number,
"recipient": Object,
"location": Object,
"details": Object
}
修改告警属性
POST/alert/update
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | ObjectId | 告警 ID |
name | true | String | 告警名称 |
level | - | Number | 告警级别 |
device | - | Object | 告警相关的设备 |
title | - | String | 告警消息 |
status | - | Number | 告警状态 |
recipient | - | Object | 告警接收者 |
location | - | Object | 告警位置 |
details | - | Object | 告警详情 |
响应结果:
返回修改后的告警的信息
{
"id": String,
"level": Number,
"name": String,
"device": Object,
"title": String,
"status": Number,
"recipient": Object,
"location": Object,
"details": Object
}
删除一个告警
POST /alert/del
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | ObjectId | 告警 ID |
响应结果:
返回删除的告警的信息
{
"id": String,
"level": Number,
"name": String,
"device": Object,
"title": String,
"status": Number,
"recipient": Object,
"location": Object,
"details": Object
}
查询告警列表
GET /alert/list
请求参数:
NAME | TYPE | DEFAULT | DESCRIPTION |
---|---|---|---|
offset | Number | 0 | 开始返回的记录的索引 |
limit | Number | 100 | 最多返回的记录数 |
order | String | asc | 排序方式 (asc, desc) |
orderBy | String | - | 排序字段名 |
q | String | - | 搜索条件字符串 |
did | String | - | 设备 ID |
key | String | - | 产品编码 |
示例:
GET /alert/list
响应结果:
返回包含告警信息的列表
{
"total": Number,
"offset": Number,
"limit": Number,
"alerts": [{
"id": String,
"level": Number,
"name": String,
"device": Object,
"title": String,
"status": Number,
"recipients": Object,
"location": Object,
"details": Object
}]
}
接收者
用来接收推送消息的一组用户
属性列表
NAME | SORTABLE | TYPE | DESCRIPTION |
---|---|---|---|
id | - | ObjectId | 任务 ID |
name | true | String | 名称 |
delay | true | Number | 延时通知时间 |
principals | - | Object | 负责人 |
users | - | Object | 用户列表 |
description | - | String | 简单描述 |
created | true | Date | 创建时间,单位为毫秒 |
updated | true | Date | 最后更新时间,单位为毫秒 |
ownerId | - | ObjectId | 这条任务所属的账号 |
创建一个新的接收者
POST /recipient/add
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | ObjectId | 接收者 ID |
响应结果:
{
"id": String,
"name": String,
"description", String,
"created": Date,
"updated": Date,
"ownerId": String,
"users": [{
"id": String,
"realname": String,
"username": String
}]
}
获取指定的接收者信息
GET /recipient/get
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | ObjectId | 接收者 ID |
响应结果:
返回修改后的接收者的信息
{
"id": String,
"name": String,
"description", String,
"created": Date,
"updated": Date,
"ownerId": String,
"users": [{
"id": String,
"realname": String,
"username": String
}]
}
修改接收者属性
POST /recipient/update
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | ObjectId | 接收者 ID |
响应结果:
{
"id": String,
"name": String,
"description", String,
"created": Date,
"updated": Date,
"ownerId": String,
"users": [{
"id": String,
"realname": String,
"username": String
}]
}
删除一个接收者
POST /recipient/del
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | ObjectId | 接收者 ID |
响应结果:
返回删除的接收者的信息
{
"id": String,
"name": String,
"description", String,
"created": Date,
"updated": Date,
"ownerId": String,
"users": [{
"id": String,
"realname": String,
"username": String
}]
}
查询接收者列表
GET /recipient/list
请求参数:
NAME | TYPE | DEFAULT | DESCRIPTION |
---|---|---|---|
offset | Number | 0 | 开始返回的记录的索引 |
limit | Number | 100 | 最多返回的记录数 |
order | String | asc | 排序方式 (asc, desc) |
orderBy | String | - | 排序字段名 |
q | String | - | 过滤条件字符串 |
响应结果:
返回包含接收者信息的列表
{
"total": Number,
"recipients": [{
"id": String,
"name": String,
"description", String,
"created": Date,
"updated": Date,
"ownerId": String,
"users": [{
"id": String,
"realname": String,
"username": String
}]
}]
}
规则
规则是一系列条件,当条件被满足时会触发指定的活动 (如告警等)
属性列表
NAME | SORTABLE | TYPE | DESCRIPTION |
---|---|---|---|
id | - | ObjectId | 规则 ID |
actions | - | Object | 满足条件后要执行的操作 |
conditions | - | Object | 条件列表,具体请参考 规则引擎 一文 |
created | true | Date | 创建时间,单位为毫秒 |
description | - | String | 规则简要描述 |
did | true | String | 这个规则应用的设备的 ID |
end | true | Number | 结束时间,如果没有指定则为晚上 12 点整, 单位为秒 |
fact | true | String | 相关的属性或事件的名称 |
isEnable | true | Boolean | 是否启用 |
key | true | String | 这个规则应用的产品的编码 |
name | true | String | 规则名称, 只能由字母和数字组成 |
ownerId | - | ObjectId | 这条规则所属的账号 |
period | true | Number | 这个规则触发事件最小间隔, 单位为秒 |
recipient | true | ObjectId | 接收者 |
start | true | Number | 开始时间,如果没有指定则从 0 点开始, 单位为秒 |
type | true | String | 规则类型,暂未使用 |
updated | true | Date | 最后更新时间,单位为毫秒 |
- 一个规则只能应用于一个产品,所以 key 是必需的
- 如果 did 为空,表示这个规则应用于相关产品的所有设备
- 在间隔时间内就算满足条件也只会执行一次动作或告警,主要是为了避免频繁告警
类型
type:
change
当指定属性的值发生改变rule
执行指定的规则event
当收到设备上报的指定名称的事件
因子
fact:
- 当类型为 change 表示要检查的属性的名称
- 当类型为 event 时表示要检查的事件的名称
沉默周期
period
- 单位为秒
- 在此间隔时间内不会重复执行操作方法
条件
表示要执行相关动作的条件
conditions:
{
all|any: [ // 根节点
{ condition }, // 条件
{
all|any: [ // 嵌套条件
{ condition }
]
}
]
}
condition:
{
"operator": String,
"path": String,
"fact": String,
"value": Any
}
- operator 操作符
- equal (===)
- notEqual (!==)
- lessThan (<)
- lessThanInclusive (<=)
- greaterThan (>)
- greaterThanInclusive (>=)
- in (value 为数组)
- notIn (value 为数组)
- contains (value 为数组)
- doesNotContain (value 为数组)
- path 可选,对象属性名 (如果 fact 代表的值是一个对象)
- fact 输入参数名称
- value 比较值
操作
表示满足条件后将执行的动作
actions:
{
email: String,
webhook: String,
wechat: String
}
webhook
执行 Web Hook, url 为要访问的 URL 地址wechat
推送给指定的微信用户
创建一个新的规则
POST /rule/add
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
name | true | String | 规则名称 |
type | - | String | 规则类型 |
title | true | String | 规则显示标题 |
key | true | String | 相关的产品的编码 |
did | - | String | 设备的 ID |
interval | - | String | 事件最小发送间隔 |
description | - | String | 规则简要描述 |
isEnable | - | Boolean | 是否启用 |
conditions | - | Object | 条件列表 |
响应结果:
返回创建的规则的信息
{
"id": String,
"title": String,
"name": String,
"key": String,
"did": String,
"description": String,
"isEnable": Boolean,
"interval": Number,
"conditions": Object
}
获取指定的规则信息
GET /rule/get
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | ObjectId | 规则 ID |
响应结果:
返回修改后的规则的信息
{
"id": String,
"title": String,
"name": String,
"key": String,
"did": String,
"description": String,
"isEnable": Boolean,
"interval": Number,
"conditions": Object
}
修改规则属性
POST/rule/update
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | String | 规则 ID |
name | - | String | 规则名称 |
type | - | String | 规则类型 |
title | - | String | 规则显示标题 |
key | - | String | 相关的产品的编码 |
did | - | String | 设备的 ID |
interval | - | String | 事件最小发送间隔 |
description | - | String | 规则简要描述 |
isEnable | - | Boolean | 是否启用 |
actions | - | Object | 执行动作 |
conditions | - | Object | 条件列表 |
响应结果:
返回修改后的规则的信息
{
"id": String,
"title": String,
"name": String,
"key": String,
"did": String,
"description": String,
"isEnable": Boolean,
"interval": Number,
"actions": Object,
"conditions": Object
}
删除一个规则
POST /rule/del
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | ObjectId | 规则 ID |
响应结果:
返回删除的规则的信息
{
"id": String,
"title": String,
"name": String,
"key": String,
"did": String,
"description": String,
"isEnable": Boolean,
"interval": Number,
"actions": Object,
"conditions": Object
}
错误码:
查询规则列表
查询系统已存在的所有规则,可以指定查询和过滤条件。
GET /rule/list
请求参数:
NAME | TYPE | DEFAULT | DESCRIPTION |
---|---|---|---|
offset | Number | 0 | 开始返回的记录的索引 |
limit | Number | 100 | 最多返回的记录数 |
order | String | asc | 排序方式 (asc, desc) |
orderBy | String | - | 排序字段名 |
q | String | - | 过滤条件字符串 |
响应结果:
返回包含规则信息的列表
{
"total": Number,
"offset": Number,
"limit": Number,
"rules": [{
"id": String,
"title": String,
"name": String,
"key": String,
"did": String,
"description": String,
"period": Number,
"interval": Number,
"actions": Object,
"conditions": Object
}]
}
任务
定时计划任务
属性列表
NAME | SORTABLE | TYPE | DESCRIPTION |
---|---|---|---|
id | - | ObjectId | 任务 ID |
name | true | String | 任务名称, 只能由字母和数字组成 |
type | true | String | 任务类型,暂未使用 |
actions | - | Object | 满足条件后要执行的操作 |
isEnable | true | Boolean | 是否启用 |
created | true | Date | 创建时间,单位为毫秒 |
updated | true | Date | 最后更新时间,单位为毫秒 |
ownerId | - | ObjectId | 这条任务所属的账号 |
创建一个新的任务
POST /task/add
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | ObjectId | 任务 ID |
响应结果:
{
}
获取指定的任务信息
GET /task/get
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | ObjectId | 任务 ID |
响应结果:
返回修改后的规则的信息
{
}
修改任务属性
POST /task/update
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | ObjectId | 任务 ID |
响应结果:
{
}
删除一个任务
POST /task/del
请求参数:
NAME | REQUIRED | TYPE | DESCRIPTION |
---|---|---|---|
id | true | ObjectId | 任务 ID |
响应结果:
返回删除的任务的信息
查询任务列表
GET /task/list
请求参数:
NAME | TYPE | DEFAULT | DESCRIPTION |
---|---|---|---|
offset | Number | 0 | 开始返回的记录的索引 |
limit | Number | 100 | 最多返回的记录数 |
order | String | asc | 排序方式 (asc, desc) |
orderBy | String | - | 排序字段名 |
q | String | - | 过滤条件字符串 |
响应结果:
返回包含任务信息的列表
{
"tasks": [{
}]
}