17.appendix-1.md•8.68 kB
# API 文档
---
## 一、告警 API
### 1.1 场景接入示例
#### 1.1.1 查看实时告警
通过定时调用接口获取实时告警事件列表。
**代码示例**
```bash
# 获取第一页数据
curl 'http://OCP-IP:8080/api/v2/alarm/alarms?isSubscribedByMe=false&status=Active&page=1&size=10' \
--user username:password \
--compressed \
--insecure
# 获取第二页数据
curl 'http://OCP-IP:8080/api/v2/alarm/alarms?isSubscribedByMe=false&status=Active&page=2&size=10' \
--user username:password \
--compressed \
--insecure
```
**关键参数说明**
| 参数 | 说明 |
|---------------|----------------------------------------------------------------------|
| `alarmType` | 告警规则名。 |
| `activeAt` | 告警触发时间(格林尼治时间,需转换为当地时间)。 |
| `updatedAt` | 告警更新时间(格林尼治时间,需转换为当地时间)。 |
| `target` | 告警对象(如集群租户)。 |
| `description` | 告警描述信息。 |
| `summary` | 告警概述信息。 |
| `level` | 告警等级。 |
| `labels` | 扩展标签(如集群、租户、IP等,非标准字段可能不兼容高版本)。 |
---
#### 1.1.2 对接客户告警平台
通过定期轮询接口更新告警状态,统计告警信息。
**关键逻辑说明**
- **告警状态更新**:若某 `target` 在批次请求中未出现,则标记为已恢复。
- **告警统计**:按告警等级统计当前活跃告警数量。
---
#### 1.1.3 验证告警可用性
主动触发告警并验证链路有效性。
**步骤示例**
1. **触发日志告警**:
```bash
echo '[2035-01-02 15:04:05.666666] ERROR [CLOG] test ob error for ocp alarm' >> /home/admin/oceanbase/log/observer.log.wf
```
2. **验证告警**:
```bash
curl 'http://OCP-IP:8080/api/v2/alarm/alarms' \
--user username:password \
--compressed \
--insecure
```
---
### 1.2 其他 API 示例(附录补充)
#### 1.2.1 查询告警事件(附录示例)
```bash
curl -X GET "http://ocp-server:8080/api/v2/alarm/events" \
-H "Authorization: OCP-ACCESS-KEY-HMACSHA1 ${AK}:${signature}" \
-H "Date: ${date}" \
-H "x-ocp-origin: from-mcp"
```
**注意**:
- 接口路径 `/api/v2/alarm/events` 与场景1中的 `/api/v2/alarm/alarms` 可能为不同端点,需确认具体使用场景。
---
#### 1.2.2 创建告警规则
```bash
curl -X POST "http://ocp-server:8080/api/v2/alarm/rules" \
-H "Authorization: OCP-ACCESS-KEY-HMACSHA1 ${AK}:${signature}" \
-H "Date: ${date}" \
-H "x-ocp-origin: from-mcp" \
-H "Content-Type: application/json" \
-d '{
"name": "规则名称",
"type": "告警类型",
"target": "告警目标",
"level": "告警级别"
}'
```
---
### 1.3 矛盾标注
- **接口路径差异**:
场景1中使用 `GET /api/v2/alarm/alarms`,而附录中使用 `GET /api/v2/alarm/events`。需确认是否为不同版本或功能差异,建议结合文档版本验证。
---
## 二、任务信息(DAG 相关)
### 2.1 TaskInstance 数据结构
| 参数 | 类型 | 说明 |
|-------------------|-----------|----------------------------------------------------------------------|
| `id` | Long | 软件包 ID。 |
| `name` | String | 软件包名称。 |
| `clusterId` | Long | 集群 ID。 |
| `tenantId` | Long | 租户 ID。 |
| `hostId` | Long | 主机 ID。 |
| `type` | String | 任务类型:<br>- `MANUAL`:手动运维任务<br>- `SYS_ONECE`:系统单次任务<br>- `SCHEDULED`:非内置定时任务<br>- `SYS_SCHEDULED`:系统内置定时任务 |
| `status` | String | 状态:<br>- `RUNNING`<br>- `FAILED`<br>- `SUCCESSFUL` |
| `creator` | String | 创建者用户名。 |
| `operation` | String | 操作类型:<br>- `EXECUTE`<br>- `RETRY`<br>- `ROLLBACK`<br>- `SKIP`<br>- `CANCEL` |
| `executor` | String | 执行节点地址。 |
| `context` | String | JSON 格式上下文信息。 |
| `createTime` | String | 任务创建时间。 |
| `startTime` | String | 任务开始时间。 |
| `finishTime` | String | 任务结束时间。 |
| `prohibitRollback`| Boolean | 是否允许回滚。 |
| `subtasks` | Object[] | 子任务列表。 |
---
### 2.2 SubtaskInstance 数据结构
| 参数 | 类型 | 说明 |
|-------------------|-----------|----------------------------------------------------------------------|
| `id` | Long | 子任务 ID。 |
| `name` | String | 子任务名称。 |
| `seriesId` | Long | 子任务序列 ID。 |
| `description` | String | 子任务描述。 |
| `className` | String | 对应类名。 |
| `timeout` | Integer | 超时时间(秒)。 |
| `status` | String | 状态:<br>- `PENDING`<br>- `READY`<br>- `RUNNING`<br>- `CANCELING`<br>- `FAILED`<br>- `SUCCESSFUL` |
| `operation` | String | 操作类型:<br>- `EXECUTE`<br>- `RETRY`<br>- `ROLLBACK`<br>- `SKIP`<br>- `CANCEL` |
| `executor` | String | 执行节点信息。 |
| `runTime` | Integer | 执行次数。 |
| `context` | String | 上下文信息。 |
| `createTime` | String | 创建时间。 |
| `startTime` | String | 开始时间。 |
| `finishTime` | String | 结束时间。 |
| `nodeType` | String | 节点类型(如 `JAVA_TASK`)。 |
| `paralleIdx` | Integer | 并行索引(-1 表示非并行任务)。 |
| `upstreams` | Long[] | 上游子任务 ID 列表。 |
| `downstream` | Long[] | 下游子任务 ID 列表。 |
| `prohibitRollback`| Boolean | 是否支持回滚。 |
---
### 2.3 DAG 结构示例
```json
{
"nodes": [{
"id": "节点ID",
"type": "节点类型",
"name": "节点名称",
"status": "节点状态"
}],
"edges": [{
"source": "源节点ID",
"target": "目标节点ID"
}]
}
```
---
## 三、注意事项
1. **时区转换**:`activeAt` 和 `updatedAt` 需转换为当地时间。
2. **字段兼容性**:`labels` 中带下划线的字段(如 `tenant_name_1`)可能不兼容高版本。
3. **认证方式**:部分接口需使用 `Authorization` 头或 `--user` 参数,需根据场景选择。