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代理, 异常检测, 请求拦截, 运维监控, 逆向工具