nzmrudi/mimo-incident-responder
GitHub: nzmrudi/mimo-incident-responder
Stars: 0 | Forks: 0
# MiMo 事件响应器 🚨🤖
  
## 🎯 这是什么?
**MiMo 事件响应器** 将你的错误日志转化为可操作的修复方案。将堆栈跟踪、journalctl 输出或 kubelet 日志通过管道输入 CLI —— MiMo 读取后,推理根因,分类严重级别,并返回包含修复步骤和预防建议的结构化事件报告。
两个界面:
- **CLI 工具** (`mimo-respond`) —— 支持管道、JSON 输出、实时查看的监听模式
- **Web 仪表盘** —— 粘贴/上传日志、深入分析历史事件、严重性统计
```
$ journalctl -u myapp -n 200 | mimo-respond
╭─ MiMo Incident Responder ─────────────────────────╮
● CRITICAL (oom) confidence 85%
Summary:
Process killed by OOM killer due to memory exhaustion
Root Cause:
The kernel OOM killer terminated gunicorn worker (pid:5678)
because system memory was exhausted. Connection pool to Postgres
was exhausted in parallel, suggesting either a connection leak
or a sudden traffic spike.
Fix Steps:
1. Check current memory usage: free -h
2. Identify top consumers: ps aux --sort=-%mem | head
3. Increase systemd unit memory limit
4. Restart gunicorn with reduced worker count
5. Audit DB connection pool config (close on context exit)
...
╰────────────────────────────────────────────────────╯
```
## ✨ 功能特性
| 功能 | 说明 |
|---|---|
| 🧠 **结构化事件报告** | 严重性、类别、根因、修复步骤、片段、预防措施 —— 每个字段均为机器可读 JSON |
| 🚀 **管道友好的 CLI** | `cat err.log \| mimo-respond` —— 适用于任何来源:journalctl、docker logs、kubectl logs、tail |
| 👀 **监听模式** | `mimo-respond watch /var/log/syslog` —— 自动触发错误关键词,检测时告警 |
| 📊 **Web 仪表盘** | 严重性 KPI、完整历史、点击深入查看任何历史事件 |
| 🎯 **提示支持** | `--hint "发生在部署期间"` 为 MiMo 提供额外上下文 |
| 💾 **持久化历史** | 所有分析结果以 JSON 格式保存在 `~/.mimo-responder/history/` |
| 🌐 **多语言** | MiMo 使用操作员语言回复 —— 开箱支持印尼语/英语/中文 |
| 🔌 **兼容 OpenAI** | 即插即用的 MiMo 端点,无 SDK 锁定 |
## 🏗️ 架构
```
┌──────────────────────┐
│ Log source │ journalctl, kubectl, tail, paste, upload
│ (any text stream) │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ CLI / FastAPI │ parse, attach hint, route
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Xiaomi MiMo API │ mimo-v2.5-pro · response_format=json_object
│ (reasoning engine) │
└──────────┬───────────┘
│ structured JSON
▼
┌──────────────────────┐
│ Renderer + │ pretty CLI · web dashboard · history file
│ history store │
└──────────────────────┘
```
整个产品约 250 行 Python 代码 + 单文件仪表盘。繁重的工作 —— 日志分类、根因推理、修复编写 —— 交由 MiMo 处理。我们通过严格的系统提示和 `response_format=json_object` 来约束输出,使每次回复都能干净地嵌入渲染器。
## 🚀 设置
### 本地
```
git clone https://github.com//mimo-incident-responder.git
cd mimo-incident-responder
pip install -r web/requirements.txt
export MIMO_API_KEY= # from platform.xiaomimimo.com
```
### CLI
```
# 从 pipe
journalctl -u nginx -n 100 | python cli/mimo_respond.py
# 从文件
python cli/mimo_respond.py --file samples/db-pool-oom.log
# raw JSON 用于另一个工具
docker logs myapp 2>&1 | python cli/mimo_respond.py --json | jq
# watch 模式
python cli/mimo_respond.py watch /var/log/syslog
# 历史
python cli/mimo_respond.py history -n 20
```
### Web 仪表盘
```
cd web && python server.py
# 打开 http://localhost:8001
```
## 🧪 示例日志
`samples/` 目录包含真实世界的故障模式,可用于测试分析器:
| 文件 | 故障模式 |
|---|---|
| `db-pool-oom.log` | Postgres 连接池耗尽 → gunicorn 被 OOM 杀掉 |
| `nginx-upstream.log` | nginx 上游连接被拒绝 + SSL 握手失败 |
| `k8s-gpu-pod.log` | k8s Pod 因 GPU 设备故障 + 镜像拉取 401 失败 |
```
python cli/mimo_respond.py --file samples/db-pool-oom.log
```
## 🌍 为什么选择 MiMo?
我们选择 **Xiaomi MiMo** 专门用于事件响应,原因如下:
1. **对噪声文本的强大推理能力** —— 日志文件混乱;MiMo 能很好地处理部分上下文、多个交织事件和堆栈跟踪。
2. **结构化输出任务速度快** —— 遵守 `response_format=json_object`,模式抖动低。
3. **多语言操作员** —— 同一个仪表盘适用于新加坡/中国/印尼团队,无需微调。
4. **成本** —— 分析调用频繁(每次错误峰值触发一次);MiMo 的定价使这一点可持续。
5. **兼容 OpenAI API** —— 零 SDK 迁移成本。
## 📂 项目结构
```
mimo-incident-responder/
├── cli/
│ └── mimo_respond.py # CLI entry point + core logic
├── web/
│ ├── server.py # FastAPI app
│ ├── index.html # dashboard SPA
│ └── requirements.txt
├── samples/ # real-world failure logs
│ ├── db-pool-oom.log
│ ├── nginx-upstream.log
│ └── k8s-gpu-pod.log
├── docs/
└── README.md
```
## 🛣️ 路线图
- [ ] 严重事件时通过 Slack / Discord / Telegram 通知
- [ ] Prometheus alertmanager webhook → 自动触发 MiMo 分类
- [ ] 趋势检测:“此事件本周已发生 N 次”
- [ ] MiMo 函数调用:让 MiMo 执行修复脚本(需确认)
- [ ] 历史事件的向量索引,在调用 MiMo 前进行相似性查找
## 📜 许可证
MIT
## 🙏 构建工具
- **[Xiaomi MiMo](https://platform.xiaomimimo.com/)** —— 推理引擎
- **FastAPI**、**httpx**、原生 HTML/JS —— 基础设施
献给 **Xiaomi MiMo Orbit 100T 创作者激励计划** ✨
标签:AIOps, AI运维, API集成, SRE, Web仪表盘, 严重性分类, 事故响应, 修复步骤, 偏差过滤, 可观测性, 小米MiMo, 智能运维, 根因分析, 监控工具, 管道处理, 结构化报告, 自动化运维, 运维自动化, 错误日志