规则管理
eKuiper REST api 可以管理规则,例如创建、显示、删除、描述、启动、停止和重新启动规则。
创建规则
该 API 接受 JSON 内容并创建和启动规则。
POST http://localhost:9081/rules请求示例:
{
"id": "rule1",
"sql": "SELECT * FROM demo",
"actions": [{
"log": {}
}]
}展示规则
该 API 用于显示服务器中定义的所有规则和简要状态描述。
GET http://localhost:9081/rules响应示例:
[
{
"id": "rule1",
"status": "Running"
},
{
"id": "rule2",
"status": "Stopped: canceled by error."
}
]描述规则
该 API 用于打印规则的详细定义。
GET http://localhost:9081/rules/{id}路径参数 id 是规则的 id 或名称。
响应示例:
{
"sql": "SELECT * from demo",
"actions": [
{
"log": {}
},
{
"mqtt": {
"server": "tcp://127.0.0.1:1883",
"topic": "demoSink"
}
}
]
}获取规则输出模式
本接口用于获取指定规则生成的输出模式。该模式描述了规则通过SELECT语句生成的字段及其属性(如hasIndex和index)。
GET http://localhost:9081/rules/{id}路径参数id : 规则唯一标识符
示例响应:
{
"id": {
"hasIndex": true,
"index": 0
},
"name": {
"hasIndex": true,
"index": 1
}
}更新规则
该 API 接受 JSON 内容并更新规则。请注意,该 API 执行 upsert 操作,即规则不存在则创建,存在则更新。更新失败将继续运行原规则。
PUT http://localhost:9081/rules/{id}路径参数 id 是原有规则的 id 或名称。
请求示例:
{
"id": "rule1",
"sql": "SELECT * FROM demo",
"actions": [{
"log": {}
}]
}删除规则
该 API 用于删除规则。
DELETE http://localhost:9081/rules/{id}启动规则
该 API 用于发送规则启动指令。请注意,该命令仅表示发送启动指令成功,规则是否启动完成需要调用规则状态查看。若规则正在启动或正在停止中,启动指令会加入规则命令队列中。
POST http://localhost:9081/rules/{id}/start停止规则
该 API 用于停止运行规则。请注意,该命令仅表示发送启动指令成功,规则是否启动完成需要调用规则状态查看。规则正在启动或正在停止中,启动指令会加入规则命令队列中。
POST http://localhost:9081/rules/{id}/stop重启规则
该 API 用于重启规则。
POST http://localhost:9081/rules/{id}/restart获取规则的状态
该命令用于获取规则的状态。 如果规则正在运行,则将实时检索状态指标。 状态可以是:
- $metrics
- 停止: $reason
GET http://localhost:9081/rules/{id}/status响应示例:
{
"lastStartTimestamp": 0,
"lastStopTimestamp":0,
"nextStartTimestamp":0,
"source_demo_0_records_in_total":5,
"source_demo_0_records_out_total":5,
"source_demo_0_exceptions_total":0,
"source_demo_0_process_latency_ms":0,
"source_demo_0_buffer_length":0,
"source_demo_0_last_invocation":"2020-01-02T11:28:33.054821",
...
"op_filter_0_records_in_total":5,
"op_filter_0_records_out_total":2,
"op_filter_0_exceptions_total":0,
"op_filter_0_process_latency_ms":0,
"op_filter_0_buffer_length":0,
"op_filter_0_last_invocation":"2020-01-02T11:28:33.054821",
...
}其中,以下状态分别代表了规则上次启停的 unix 时间戳,当规则时周期性规则时,可以通过 nextStartTimestamp 查看规则下次启动的 unix 时间戳。
{
"lastStartTimestamp": 0,
"lastStopTimestamp":0,
"nextStartTimestamp":0,
...
}获取所有规则的状态
该命令用于获取所有规则的状态。 如果规则正在运行,则将实时检索状态指标。
GET http://localhost:9081/rules/status/all验证规则
该 API 用于验证规则。
POST http://localhost:9081/rules/validate请求示例:
{
"id": "rule1",
"sql": "SELECT * FROM demo",
"actions": [{
"log": {}
}]
}对于 API,以下是状态码的含义说明:
- 如果请求体不正确,将返回状态码 400,表示发送了一个无效的请求。
- 如果规则验证未通过,将返回状态码 422,表示规则无效。
- 如果规则通过验证,将返回状态码 200,表示规则有效且验证通过。
查询规则计划
该 API 用于查询 SQL 所转换的计划
GET http://localhost:9081/rules/{id}/explain获取规则 CPU 信息
GET http://localhost:9081/rules/usage/cpu
{
"rule1": 220,
"rule2": 270
}获取所有规则在过去 30s 内的所使用的 CPU 时间,单位为毫秒
重置标签
该 API 用于给规则重置标签
PUT /rules/{id}/tags
{
"tags": ["t1","t2"]
}添加标签
该 API 用于给规则添加标签
PATCH /rules/{id}/tags
{
"tags": ["t1","t2"]
}删除标签
该 API 用于给规则删除标签
DELETE /rules/{id}/tags
{
"tags": ["t1","t2"]
}根据标签查询规则
该 API 用于根据给定标签查询包含该标签的规则们,返回符合条件的规则名列表
GET /rules/tags/match
{
"tags": ["t1","t2"]
}