tarun-227/logsense

GitHub: tarun-227/logsense

LogSense 是一款基于 Gemini 和 Elasticsearch 的自主事件响应副驾驶,通过持续日志监控、异常检测、爆炸半径计算和一键事后报告生成,帮助团队实现从被动排障到主动响应的转变。

Stars: 0 | Forks: 0

# LogSense — 自主事件响应副驾驶 LogSense 将日志分析从被动的、手动的工作转变为主动的、自主的工作流。你无需在凌晨 3 点编写 Kibana 查询,而是与一个已经读取了系统产生的所有日志的 agent 进行交流,并在你甚至还没察觉到异常之前就向你发出警报。 ## 功能 ### 🚨 功能 1 — 主动异常监控器 agent 在后台持续运行。每隔 60 秒,它会使用直接的 Elasticsearch 聚合,将当前的 5 分钟错误率窗口与滚动的 60 分钟基线进行比较。当 Gemini 将某个偏差归类为异常时,它会: - 通过 WebSocket 向所有连接的客户端广播分级严重性警报(P1/P2/P3) - 自动启动调查并将结果流式传回 —— **在任何人提出要求之前** ### 💥 功能 2 — 爆炸半径计算器 只需点击一个按钮,即可将技术错误转化为业务影响: - **受影响的用户**(基于失败交易用户 ID 的基数聚合) - **失败的交易** + **损失的收入**(基于失败交易金额的总和聚合) - **预计每小时收入损失**(根据事件持续时间推算) - **下游级联故障**(受影响的服务超出了根本原因服务) ### 📄 功能 3 — 一键生成事后报告 在调查对话结束后,只需点击一下即可生成一份完整、可共享的事后报告文档——包括时间线、根本原因、爆炸半径、待办事项——格式类似于 Google/Stripe/Cloudflare 公开的事后报告。下载为 Markdown 格式,粘贴到 Notion 中,即可完成。 ## 架构 ``` User ──▶ Streamlit UI ──▶ FastAPI Backend │ ┌─────────┼──────────────┐ │ │ │ ADK Agent Watchdog Blast Radius (Gemini) (async loop) (direct ES) │ │ Elastic MCP Gemini (stdio) (anomaly eval) │ Elasticsearch (Elastic Cloud) ``` - **Google Cloud ADK** — 使用 Gemini 2.0 Flash 进行 agent 编排 - **Elastic MCP Server** (`@elastic/mcp-server-elasticsearch`) — `list_indices`、`get_mappings`、`search` 工具 - **Elastic Cloud** 上的 **Elasticsearch** — 存储日志、指标、交易、部署 - **FastAPI** — REST + WebSocket 后端 - **Streamlit** — 聊天 + 警报 UI - **Cloud Run** — 部署目标 ## 快速开始 ### 1. 前置条件 - Python 3.12+ - Node.js 20+(用于 Elastic MCP server) - 一个 [Elastic Cloud](https://cloud.elastic.co) 集群(免费 14 天试用) - 一个 Google AI Studio API 密钥或启用了 Vertex AI 的 Google Cloud 项目 ### 2. 克隆并配置 ``` git clone https://github.com/YOUR_USERNAME/logsense.git cd logsense cp .env.example .env # 使用你的 ES_URL, ES_API_KEY, GOOGLE_API_KEY 编辑 .env ``` ### 3. 安装依赖 ``` pip install -r backend/requirements.txt pip install -r frontend/requirements.txt ``` ### 4. 导入合成数据 ``` cd backend python data/generate.py ``` 这将创建约 4 个包含真实电商日志的索引,其中包含一个预设的事件(payment-service 在 14:51 UTC 部署 → 连接池耗尽 → 持续 17 分钟的宕机,影响了约 2,800 名用户和约 14.2 万美元的交易)。 ### 5. 运行 ``` # 终端 1 — backend cd backend uvicorn main:app --reload --port 8000 # 终端 2 — frontend cd frontend streamlit run app.py ``` 打开 http://localhost:8501 ### 6. Docker(可选) ``` cp .env.example .env # fill in your keys docker compose up --build ``` ## 演示脚本 1. 打开应用 — Watchdog 面板显示“正在监控……” 2. 点击 **“Why did checkout fail at 14:52?”** 起始提示 3. 观察 agent 实时调用 `search` 工具并解释该事件 4. 询问 **“Was there a deployment before the incident?”** — agent 找到了 14:51 的部署 5. 在爆炸半径面板中点击 **“Calculate Impact”** 6. 点击 **“Generate Post-Mortem”** — 下载生成的 `.md` 文件 ## 使用的技术 - Google Gemini 2.0 Flash(通过 Google ADK) - Google Cloud ADK (Agent Development Kit) - Elastic Cloud + Elasticsearch 8 - `@elastic/mcp-server-elasticsearch` MCP server - FastAPI, Streamlit, Python 3.12 ## 许可证 MIT
标签:AI智能体, Elasticsearch, Gemini, Kubernetes, MITM代理, 异常检测, 请求拦截, 运维监控, 逆向工具