Swayam2004/sentinel-incident-response
GitHub: Swayam2004/sentinel-incident-response
基于 Mastra 工作流引擎构建的 AI 事件响应 pipeline,结合 Qdrant 历史记忆检索、Enkrypt AI 安全门控和人工审核,实现从告警日志到结构化事后分析报告的端到端自动化。
Stars: 0 | Forks: 0
# Sentinel — AI 驱动的事件响应
Mastra × Qdrant × Enkrypt AI — 具备人工审核 (human-in-the-loop) 的端到端事件响应 pipeline。
## 前置条件
| 工具 | 版本 |
|---|---|
| Node.js | ≥ 22.13.0 |
| Python | ≥ 3.10 |
| pip / uvicorn | 任意近期版本 |
## 账号设置(约 10-15 分钟,请先执行此操作)
| 服务 | 注册 URL | 所需内容 |
|---|---|---|
| Qdrant Cloud | https://cloud.qdrant.io | 免费的集群 URL + API key |
| Cohere | https://dashboard.cohere.com | API key (embeddings) |
| Groq | https://console.groq.com | API key (LLM 调用) |
| Enkrypt AI | https://app.enkryptai.com | API key |
## 第 1 步 — 环境变量
```
cp .env.example .env
# 编辑 .env 并填入您的真实 keys
```
位于**仓库根目录**的 `.env` 文件会被 Mastra 开发服务器和 seed 脚本同时加载。所需变量:
```
GROQ_API_KEY=...
COHERE_API_KEY=...
QDRANT_URL=https://your-cluster.aws.cloud.qdrant.io
QDRANT_API_KEY=...
ENKRYPTAI_API_KEY=...
SIDECAR_URL=http://localhost:8000
```
## 第 2 步 — 安装 Mastra 依赖
```
cd sentinel
npm install
```
## 第 3 步 — 启动 Enkrypt AI sidecar(终端 1)
sidecar 是一个 Python FastAPI 服务,用于封装 Enkrypt SDK(仅支持 Python)。在触发 workflow 运行**之前**,它必须处于运行状态。
```
cd sidecar
pip install -r requirements.txt # installs fastapi, uvicorn, enkryptai-sdk
export ENKRYPTAI_API_KEY=your_key_here # or set in your shell profile
uvicorn main:app --reload --port 8000
```
验证其是否健康:
```
curl localhost:8000/health
# → {"status":"ok"}
```
演示 block 行为:
```
curl -X POST localhost:8000/safety/remediation-check \
-H "Content-Type: application/json" \
-d '{"proposed_action":"rm -rf /var/data"}'
# → {"pass":false,"blocked_reason":"Denylisted destructive pattern detected: 'rm -rf'"}
```
## 第 4 步 — 为 Qdrant 导入数据(每个集群执行一次)
这会创建 `historical_incidents` 集合并插入 16 个合成的 SRE 事件。请在**仓库根目录**下运行,以便读取 `.env` 文件。
```
# 从 repo 根目录 — 从 .env 加载 QDRANT_URL, QDRANT_API_KEY, COHERE_API_KEY
pip install qdrant-client requests
set -a && source .env && set +a
python scripts/seed_qdrant.py
# → 已将 16 个 incidents seed 到 'historical_incidents'。
```
## 第 5 步 — 运行 Mastra workflow(终端 2)
```
cd sentinel
npm run dev
```
在 `http://localhost:4111` 打开 **Mastra Studio**。
导航到 **Workflows → sentinel-incident-workflow** 并使用以下命令触发运行:
```
{
"rawLog": "checkout-service p99 latency 4.2s, connection pool exhausted, 503s spiking since 14:02 UTC",
"serviceId": "checkout-service"
}
```
实时观察各步骤的执行情况。workflow 将在 **`human-approval`** 处暂停——这是一个挂起/恢复 (suspend/resume) 门控。使用以下命令恢复运行:
```
{
"approved": true,
"approver": "your-name"
}
```
最终输出是一份结构化的 markdown 事后分析 (post-mortem) 报告。
## 端口一览
| 服务 | 端口 | 用途 |
|---|---|---|
| Mastra Studio | `4111` | Workflow UI,触发及恢复运行 |
| Enkrypt sidecar | `8000` | 安全检查 HTTP API |
## 暂时省略的内容(出于时间限制的有意为之)
- **修复模拟器 (Remediation Simulator)** — K8s dry-run、eBPF 沙盒、合成指标注入。在 PRD §14.2 中作为黑客松后的路线图记录。
- **Redis** — 使用 Mastra 默认的本地存储(LibSQL/DuckDB)来代替处理挂起/恢复 (suspend/resume) 状态。
- **Postgres 审计跟踪** — 使用控制台输出代替演示。
- **Cohere Rerank** — 原始余弦分数驱动 0.75 阈值;Rerank 将作为快速跟进项(PRD §5.3)。
- **Memory 更新 Worker** — 目前 Qdrant 的数据导入是手动的;事后分析 (post-mortem) 的自动摄取已列入路线图。
这些省略均不会影响三项强制集成:Mastra 负责编排,Qdrant 负责检索,Enkrypt AI 负责门控。这些都在正常运行。
标签:AI运维, MITM代理, RAG, SRE自动化, 工作流自动化, 自动化攻击, 逆向工具