Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 70 additions & 1 deletion apps/docs/content/docs/cn/admin.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ GET /api/audit-logs?limit=50&offset=0
| `/api/tasks/{id}` | GET | 获取任务详情 |
| `/api/tasks/{id}/results` | GET | 获取执行结果 |

创建任务请求体
创建一次性任务请求体

```json
{
Expand All @@ -116,6 +116,75 @@ GET /api/audit-logs?limit=50&offset=0
}
```

## 计划任务

计划任务在远程命令基础上增加了 cron 调度、重试和运行历史。

### 创建计划任务

1. 进入 **Settings → Tasks**。
2. 切换到计划任务区域。
3. 填写名称、命令、cron 表达式、目标服务器、超时、重试次数和重试间隔。
4. 保存任务。启用状态的任务会立即注册到服务端调度器。

计划任务使用服务端 `scheduler.timezone` 配置计算 `next_run_at`。

### 字段

| 字段 | 说明 |
|------|------|
| `name` | 计划任务显示名称 |
| `task_type` | cron 任务使用 `scheduled`;省略/默认表示 `oneshot` |
| `cron_expression` | 服务端调度器解析的 cron 表达式 |
| `command` | 下发给每个目标 Agent 的 Shell 命令 |
| `server_ids` | 目标服务器 |
| `timeout` | 每次尝试的命令超时时间(秒);默认执行超时为 300 秒 |
| `retry_count` | 首次尝试后的重试次数,范围 0-10 |
| `retry_interval` | 重试之间等待秒数,必须至少为 1 |
| `enabled` | 禁用后会从调度器移除,不再自动运行 |

### 执行行为

- 每次计划触发都会生成 `run_id`,用于把所有目标服务器和重试尝试的结果分组。
- ServerBee 会避免同一个计划任务重叠运行。如果上一次运行仍未结束,新的触发会被跳过。
- `POST /api/tasks/{id}/run` 可手动运行任务,且手动运行会跳过重试逻辑。
- 禁用或删除任务会取消当前活动运行。
- 结果中包含 `attempt`,用于区分重试次数。

合成退出码:

| 退出码 | 含义 |
|--------|------|
| `-2` | `CAP_EXEC` 未启用,或被 Agent 本地 capability 策略阻止 |
| `-3` | 服务器离线或下发失败 |
| `-4` | 超时前没有收到 Agent 响应 |

### API 示例

```json
{
"task_type": "scheduled",
"name": "Daily disk check",
"command": "df -h",
"server_ids": ["server-id-1"],
"cron_expression": "0 0 8 * * *",
"timeout": 120,
"retry_count": 2,
"retry_interval": 60
}
```

相关端点:

| 端点 | 方法 | 说明 |
|------|------|------|
| `/api/tasks?type=scheduled` | GET | 列出计划任务 |
| `/api/tasks` | POST | 创建一次性任务或计划任务 |
| `/api/tasks/{id}` | PUT | 更新任务字段、启用/禁用状态和调度注册 |
| `/api/tasks/{id}` | DELETE | 删除任务并取消活动执行 |
| `/api/tasks/{id}/run` | POST | 手动运行任务 |
| `/api/tasks/{id}/results` | GET | 获取按 task/run/attempt 分组的任务结果 |

## 计费信息

管理员可以为每台服务器记录计费相关信息,方便追踪 VPS 费用和到期时间。
Expand Down
53 changes: 41 additions & 12 deletions apps/docs/content/docs/cn/alerts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: 配置告警规则和通知渠道,及时发现和响应服务器
icon: Bell
---

ServerBee 提供灵活的告警系统,支持多种指标类型的阈值监控、多种通知渠道以及精细的触发控制。
ServerBee 提供灵活的告警系统,支持多种指标类型的阈值监控、事件驱动告警、多种通知渠道以及精细的触发控制。

## 告警概述

Expand Down Expand Up @@ -71,38 +71,45 @@ ServerBee 支持 14 种以上的告警指标:
| `network_latency` | 平均探测延迟超过阈值时触发 |
| `network_packet_loss` | 丢包率超过阈值时触发 |

### 离线检测
### 离线、到期和事件

| 指标类型 | 说明 |
|----------|------|
| `offline` | 服务器持续离线超过指定时长后触发 |
| `expiration` | 服务器 `expired_at` 距今小于等于指定天数时触发 |
| `ip_changed` | Agent 上报 IP 变化事件时触发(事件驱动,不参与每分钟轮询) |

## 阈值配置

每个告警条件支持设置最小值和最大值
每个告警条件支持以下字段

```json
{
"rule_type": "cpu",
"min": null,
"max": 90.0
"min": 90.0,
"max": null,
"duration": null,
"cycle_interval": null,
"cycle_limit": null
}
```

- **max**:当指标值超过此阈值时触发(上限告警)
- **min**:当指标值低于此阈值时触发(下限告警)
- 可以同时设置 min 和 max,形成范围告警
- **`min`**:下界。对大多数资源指标,指标值大于等于该值时触发。
- **`max`**:上界。当同时设置 `min` 和 `max` 时,指标值落在该范围内才触发。
- **`duration`**:用于 `offline`(离线秒数)和 `expiration`(到期天数)。
- **`cycle_interval`**:流量周期类型:`hour`、`day`、`week`、`month`、`year`。
- **`cycle_limit`**:流量周期规则的字节阈值。

一条告警规则可以包含多个条件,所有条件必须同时满足(AND 逻辑)才会触发告警。例如:

```json
[
{ "rule_type": "cpu", "max": 90.0 },
{ "rule_type": "memory", "max": 85.0 }
{ "rule_type": "cpu", "min": 90.0 },
{ "rule_type": "memory", "min": 85.0 }
]
```

上述规则表示:CPU 超过 90% 且内存超过 85% 时才触发。
上述规则表示:CPU 大于等于 90% 且内存大于等于 85% 时才触发。

## 覆盖类型

Expand Down Expand Up @@ -156,6 +163,12 @@ ServerBee 支持 14 种以上的告警指标:
2. 如果配置了恢复触发任务 (`recover_trigger_tasks`),自动执行对应的远程命令
3. 清除告警状态,下次满足条件时可以重新触发

### 维护窗口抑制

当受影响服务器处于活动维护窗口时,ServerBee 会抑制该服务器的告警通知。规则评估仍会执行,但维护结束前不会发送通知。

`ip_changed` 属于事件驱动规则,不参与每分钟轮询。它在 Agent 上报 IP 变化事件时评估,并遵循同样的覆盖范围和维护窗口抑制逻辑。

## 通知渠道

ServerBee 支持以下通知渠道:
Expand Down Expand Up @@ -193,7 +206,7 @@ ServerBee 支持以下通知渠道:

邮件通知通过 [Resend](https://resend.com/) 发送。使用前两步准备:

1. 在服务器设置 `SERVERBEE_RESEND__API_KEY`(参考[配置](/docs/cn/configuration)页面)。
1. 在服务器设置 `SERVERBEE_RESEND__API_KEY`(参考[配置](/cn/docs/configuration)页面)。
2. 在 [resend.com/domains](https://resend.com/domains) 添加并验证发件域名。各通道的 `from` 必须属于已验证的域名。

通道配置:
Expand All @@ -207,6 +220,22 @@ ServerBee 支持以下通知渠道:

`to` 是数组——单个通道可以一次投递给多个收件人。主题格式为 `[ServerBee] {server_name} {event}`,正文使用 HTML 并附纯文本兜底。

### APNs

通过 Apple Push Notification service 向已注册的移动端设备发送原生推送。

```json
{
"key_id": "ABC123DEFG",
"team_id": "TEAM999888",
"private_key": "-----BEGIN PRIVATE KEY-----...",
"bundle_id": "com.example.serverbee",
"sandbox": false
}
```

APNs 需要 Apple Developer key、Team ID、Bundle ID 和私钥。只有开发构建才应设置 `sandbox: true`。

### 模板变量

通知内容支持以下模板变量:
Expand Down
Loading
Loading