kyisaiah47/splunk-agentic-ops

GitHub: kyisaiah47/splunk-agentic-ops

一个由 Claude 驱动的自主运维 AI agent,接收 Splunk 告警后自动调查根因并将结构化事件报告推送到 Slack。

Stars: 0 | Forks: 0

banner # 🔍 Splunk Agentic Ops **接收 Splunk 告警并在约 30 秒内向 Slack 发送根因事件报告的自主 AI agent** ![Python](https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=white) ![Claude](https://img.shields.io/badge/Claude-Sonnet-D4A017?style=for-the-badge&logo=anthropic&logoColor=white) ![Splunk](https://img.shields.io/badge/Splunk-000000?style=for-the-badge&logo=splunk&logoColor=white) ![FastAPI](https://img.shields.io/badge/FastAPI-009688?style=for-the-badge&logo=fastapi&logoColor=white) ![License: MIT](https://img.shields.io/badge/License-MIT-22C55E?style=for-the-badge) 为 [Splunk Agentic Ops 黑客松](https://splunk.devpost.com/) — 可观测性赛道而构建。

一个接收 Splunk 告警并自主进行调查的 AI agent —— 查询日志、对比基线、寻找根本原因,并在约 30 秒内向 Slack 发布完整的事件报告。 ## ✨ 功能特性 - **Agentic 调查循环** — Claude (`claude-sonnet-4-6`) 通过 Splunk MCP Server(或直接 REST API)运行多达 8 个有针对性的 SPL 查询,以隔离根本原因 - **结构化根因报告** — 每份报告均包含置信度分数、促成因素和建议的修复步骤 - **Slack Block Kit 报告** — 调查完成后,立即将格式化的事件报告发布到 Slack - **实时仪表板** — 实时 Next.js 仪表板,展示所有调查及其当前状态 - **演示模式** — 内置 3 种场景(5xx 激增、延迟违规、数据库连接耗尽)的日志生成器,因此您无需生产级 Splunk 实例即可重现事件 - **双传输模式** — 在 Splunk MCP Server (`USE_MCP=true`) 上运行,或直接回退到 Splunk REST API ## 🏗️ 架构 完整系统图表请参阅 [`architecture_diagram.md`](architecture_diagram.md)。 ``` splunk-agentic-ops/ ├── main.py FastAPI app + webhook handler ├── models.py Pydantic data models ├── agent/ │ ├── investigator.py Agentic loop (Claude + tool use) │ ├── prompts.py System prompt + investigation playbook │ ├── tools.py Anthropic tool definitions │ └── mcp_bridge.py Splunk MCP Server client ├── splunk/ │ └── client.py Direct Splunk REST API fallback ├── notifications/ │ └── slack.py Slack Block Kit report formatter ├── demo/ │ ├── trigger_alert.py Simulate a Splunk alert webhook │ └── generate_logs.py Generate + inject sample log data via HEC └── frontend/ Next.js dashboard ``` ## 🛠️ 技术栈 | 包 | 用途 | |---------|---------| | `anthropic` | Claude API — agentic 调查循环 | | `fastapi` + `uvicorn` | 后端 Web 服务器 | | `splunk-sdk` | Splunk REST API 客户端(回退模式) | | `httpx` | 异步 HTTP(HEC 数据摄入、Slack 通知) | | `pydantic` | 请求/响应数据模型 | | `python-dotenv` | 环境变量加载 | 前端:Next.js 16, Tailwind CSS v4, shadcn/ui, TypeScript ## 🚀 快速开始 ### 1. 安装依赖 ``` python -m venv .venv && source .venv/bin/activate pip install -r requirements.txt ``` ### 2. 配置环境 ``` cp .env.example .env # 填写 ANTHROPIC_API_KEY、SPLUNK_*、SLACK_WEBHOOK_URL ``` ### 3. 启动后端 ``` python main.py # → http://localhost:9000 ``` ### 4. 启动仪表板 ``` cd frontend npm install npm run dev # → http://localhost:3002 ``` ### 5. 生成示例事件数据 ``` python demo/generate_logs.py --mode normal # 30 min baseline traffic python demo/generate_logs.py --mode incident # 5xx spike + bad deploy python demo/generate_logs.py --mode latency # P99 SLO breach python demo/generate_logs.py --mode db_connections # DB connection pool exhausted ``` ### 6. 触发测试告警 ``` python demo/trigger_alert.py --alert 5xx_spike # 或:latency / db_connections ``` 在 `http://localhost:3002` 观察仪表板 —— 然后约 30 秒后查看 Slack。 ## Splunk 设置 ### 创建索引 ``` Settings → Indexes → New Index → Name: web_logs Settings → Indexes → New Index → Name: app_logs ``` ### 配置 HEC(用于日志摄入) ``` Settings → Data Inputs → HTTP Event Collector → Global Settings → Enable Settings → Data Inputs → HTTP Event Collector → New Token → default index: web_logs Add SPLUNK_HEC_TOKEN and SPLUNK_HEC_URL to .env ``` ### 启用 Splunk MCP Server(可选) ``` pip install "mcp>=1.0.0" pip install splunk-mcp python -m splunk_mcp --port 8080 ``` 然后在 `.env` 中设置: ``` USE_MCP=true MCP_SERVER_URL=http://localhost:8080/sse ``` ## 🔌 API 参考 | 方法 | 路径 | 描述 | |--------|------|-------------| | `POST` | `/webhook/splunk` | 接收 Splunk 告警 webhook | | `GET` | `/investigations` | 列出所有调查 | | `GET` | `/investigations/{id}` | 获取调查详情 | | `GET` | `/health` | 存活检查 | ## 📄 许可证 MIT
标签:AI智能体, Claude, CVE检测, Slack, 告警自动化, 根因分析, 自动化攻击, 运维监控, 逆向工具