nzmrudi/mimo-incident-responder

GitHub: nzmrudi/mimo-incident-responder

Stars: 0 | Forks: 0

# MiMo 事件响应器 🚨🤖 ![Status](https://img.shields.io/badge/status-live-22c55e) ![MiMo](https://img.shields.io/badge/powered%20by-Xiaomi%20MiMo-ff6900) ![License](https://img.shields.io/badge/license-MIT-blue) ## 🎯 这是什么? **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, 智能运维, 根因分析, 监控工具, 管道处理, 结构化报告, 自动化运维, 运维自动化, 错误日志