---
name: sentinel
description: "自动化监控规则管理。创建/暂停/查看定时规则、查看执行日志、处理审批。使用场景：监控(monitor)、规则(rule)、定时任务(scheduled task)、自动化(automation)、sentinel、alert、审批(approval)、巡检。"
---

# Optima Sentinel - 自动化监控规则管理

自动化监控系统，用于创建定时规则、查看执行日志、处理审批。

## 典型场景

当用户说：
- "创建一个监控规则" → `sentinel rule create --name "规则名" --message "指令" --every 6h`
- "每天早上9点检查库存" → `sentinel rule create --name "库存巡检" --message "检查所有商品库存，低于10件的提醒我" --cron "0 9 * * *"`
- "30分钟后提醒我" → `sentinel rule create --name "提醒" --message "提醒内容" --at "+30m" --delete-after-run`
- "查看我的规则" → `sentinel rule list`
- "暂停规则XX" → `sentinel rule pause XX`
- "恢复规则XX" → `sentinel rule resume XX`
- "手动跑一下规则XX" → `sentinel rule run XX`
- "查看规则XX的日志" → `sentinel rule logs XX`
- "查看待审批" → `sentinel alert list --status pending`
- "批准审批XX" → `sentinel alert approve XX`
- "查看监控统计" → `sentinel stats`
- "删除规则XX" → `sentinel rule delete XX`
- "确认所有告警" → `sentinel alert ack --all`

### 场景决策表

| 用户需求 | 推荐命令 | 关键注意点 |
|---------|---------|-----------|
| 创建定时监控 | `sentinel rule create` | 选对调度方式：--at/--every/--cron |
| 一次性提醒 | `sentinel rule create --at "+30m" --delete-after-run` | 相对时间必须加 `+` 前缀 |
| 间隔巡检 | `sentinel rule create --every 6h` | 最短 1m，最长 1w |
| Cron 调度 | `sentinel rule create --cron "0 9 * * *"` | 配合 --tz 设置时区 |
| 查看所有规则 | `sentinel rule list` | 可用 --status/--search 过滤 |
| 查看规则详情 | `sentinel rule detail <id>` | 包含调度配置和最近执行 |
| 修改规则 | `sentinel rule update <id>` | 支持修改所有创建时的选项 |
| 暂停/恢复 | `sentinel rule pause/resume <id>` | 暂停后不再触发 |
| 手动执行 | `sentinel rule run <id>` | 立即触发一次 |
| 查看执行日志 | `sentinel rule logs <id>` | --limit 控制条数 |
| 删除规则 | `sentinel rule delete <id>` | -y 跳过确认，不可撤销 |
| 查看待审批 | `sentinel alert list --status pending` | 状态：pending/approved/rejected/expired |
| 处理审批 | `sentinel alert approve/reject <id>` | approve 可加 --comment，reject 可加 --reason |
| 确认告警 | `sentinel alert ack <id>` | --all 批量确认所有 |
| 统计面板 | `sentinel stats` | 总览规则和执行情况 |

## 调度格式说明

### --at（一次性调度）
指定一个时间点或相对时间，执行一次后停止。相对时间**必须加 `+` 前缀**。

```bash
--at "+30m"                  # 30分钟后
--at "+2h"                   # 2小时后
--at "2026-03-04T15:00:00Z"  # 指定时间点（ISO 格式）
```

### --every（间隔调度）
按固定间隔重复执行。最短 1 分钟，最长 7 天。

```bash
--every 1m          # 每1分钟（最短间隔）
--every 5m          # 每5分钟
--every 6h          # 每6小时
--every 1d          # 每天
--every 1w          # 每周（最长间隔）
```

支持的单位：`ms`、`s`、`m`、`h`、`d`、`w`

### --cron（Cron 表达式）
标准 cron 表达式，适合复杂调度。可配合 `--tz` 指定时区（默认 UTC）。

```bash
--cron "0 9 * * *"      # 每天早上9点
--cron "0 9 * * 1"      # 每周一早上9点
--cron "0 */6 * * *"    # 每6小时
--cron "0 9,18 * * *"   # 每天9点和18点
--tz "Asia/Shanghai"    # 配合时区使用
```

## 典型流程

### 创建监控规则
1. **明确需求** - 用户想监控什么、多久执行一次
2. **选择调度** - 一次性用 --at，间隔用 --every，复杂用 --cron
3. **创建规则** - `sentinel rule create` 设置名称、指令和调度
4. **确认创建** - 查看返回的规则 ID 和状态

### 查看执行日志
1. **列出规则** - `sentinel rule list` 找到目标规则
2. **查看日志** - `sentinel rule logs <id>` 查看执行历史
3. **查看详情** - `sentinel rule detail <id>` 查看规则配置

### 处理审批
1. **查看待审批** - `sentinel alert list --status pending` 查看需要处理的审批
2. **了解内容** - 阅读审批详情，理解执行结果
3. **处理审批** - `sentinel alert approve <id>` 或 `sentinel alert reject <id>`

## 通知配置

创建规则时可设置通知方式：

```bash
--email user@example.com bob@example.com  # 邮件通知（支持多个，最多10个）
--webhook https://hooks.example.com/xxx   # Webhook 通知
--no-announce                             # 禁用 Chat 通知（默认开启）
```

## 其他选项

```bash
--auto-approve              # 自动批准，跳过人工审批
--timeout 600               # 超时时间（秒，默认600，范围60-3600）
--delete-after-run          # 执行后自动删除（一次性任务）
--tz "Asia/Shanghai"        # 时区（默认 UTC，用于 cron 调度）
--failure-alert-after 3     # 连续失败 N 次后告警（默认3，范围1-100）
```

## 常见问题

### 调度选择错误

❌ **错误做法 - 一次性任务用 --every**：
```bash
# 只想提醒一次，却设成了重复
sentinel rule create --name "提醒" --message "开会" --every 30m
```

✅ **正确做法 - 一次性任务用 --at + --delete-after-run**：
```bash
sentinel rule create --name "开会提醒" --message "该开会了" --at "+30m" --delete-after-run
```

### --at 相对时间忘记加 + 前缀

❌ **错误做法 - 缺少 + 前缀导致解析失败**：
```bash
sentinel rule create --name "提醒" --message "内容" --at "30m"
```

✅ **正确做法 - 相对时间必须加 + 前缀**：
```bash
sentinel rule create --name "提醒" --message "内容" --at "+30m"
```

### 忘记设置通知

❌ **错误做法 - 规则执行了但没人知道**：
```bash
sentinel rule create --name "库存检查" --message "检查库存" --every 1d
```

✅ **正确做法 - 设置通知方式**：
```bash
sentinel rule create --name "库存检查" --message "检查库存，低于10件的列出来" --every 1d --email me@example.com
```

### 规则太多难管理

❌ **错误做法 - 不加搜索直接看全部**：
```bash
sentinel rule list
```

✅ **正确做法 - 用过滤条件缩小范围**：
```bash
sentinel rule list --status active --search "库存"
sentinel rule list --limit 5
```

## 命令参考

### 规则管理
- `sentinel rule create` - 创建规则（--name, --message, --at/--every/--cron, --tz, --email, --webhook, --no-announce, --auto-approve, --timeout, --failure-alert-after, --delete-after-run）
- `sentinel rule list` - 规则列表（--status active/paused/disabled, --search, --limit）
- `sentinel rule detail <id>` - 规则详情
- `sentinel rule update <id>` - 修改规则（支持所有 create 选项：--name, --message, --at/--every/--cron, --tz, --email, --webhook, --no-announce, --auto-approve, --timeout, --failure-alert-after, --delete-after-run）
- `sentinel rule pause <id>` - 暂停规则
- `sentinel rule resume <id>` - 恢复规则
- `sentinel rule run <id>` - 手动触发
- `sentinel rule logs <id>` - 执行日志（--limit，默认10）
- `sentinel rule delete <id>` - 删除规则（-y 跳过确认）

### 审批管理
- `sentinel alert list` - 审批列表（--status pending/approved/rejected/expired, --rule, --limit）
- `sentinel alert approve <id>` - 批准审批（--comment）
- `sentinel alert reject <id>` - 拒绝审批（--reason）
- `sentinel alert ack <id>` - 确认告警（--all 批量确认）

### 统计
- `sentinel stats` - 统计面板（--pretty 表格输出）

## 详细示例

### 创建间隔巡检规则
```bash
# 用户说："每6小时检查一下订单状态"
sentinel rule create \
  --name "订单状态巡检" \
  --message "检查所有待处理订单，超过24小时未发货的列出来" \
  --every 6h \
  --email merchant@example.com
```

### 创建 Cron 规则（指定时区）
```bash
# 用户说："每天早上9点检查库存"（中国时间）
sentinel rule create \
  --name "每日库存检查" \
  --message "检查所有商品库存，低于10件的提醒我补货" \
  --cron "0 9 * * *" \
  --tz "Asia/Shanghai" \
  --email merchant@example.com
```

### 创建一次性提醒
```bash
# 用户说："2小时后提醒我发货"
sentinel rule create \
  --name "发货提醒" \
  --message "提醒：有待发货订单需要处理" \
  --at "+2h" \
  --delete-after-run
```

### 查看规则列表
```bash
# 用户说："查看我的活跃规则"
sentinel rule list --status active
```

### 查看执行日志
```bash
# 用户说："看看库存检查规则跑得怎么样"
sentinel rule logs rule_123
```

### 手动触发规则
```bash
# 用户说："现在就跑一下这个规则"
sentinel rule run rule_123
```

### 处理审批
```bash
# 用户说："查看待审批"
sentinel alert list --status pending

# 用户说："批准这个审批"
sentinel alert approve alert_456 --comment "同意执行"

# 用户说："拒绝这个审批"
sentinel alert reject alert_789 --reason "价格调整幅度太大"
```

### 确认告警
```bash
# 确认单个告警
sentinel alert ack alert_123

# 确认所有告警
sentinel alert ack --all
```

### 查看统计
```bash
# 用户说："看看监控整体情况"
sentinel stats
```

## 重要提示

- 规则状态：active(活跃) / paused(暂停) / disabled(禁用)
- 审批状态：pending(待审批) / approved(已批准) / rejected(已拒绝) / expired(已过期)
- 删除操作不可撤销（软删除），谨慎使用
- 一次性任务建议配合 --delete-after-run 自动清理
- 相对时间必须加 `+` 前缀（如 `+30m`，不是 `30m`）
- 复杂调度优先使用 --cron + --tz，简单间隔用 --every
- 重要规则建议设置 --email 通知
- 使用 `--help` 查看命令详细参数
