sagesta/infraguad_ai
GitHub: sagesta/infraguad_ai
基于 Gemini 2.5 和 RAG 知识库的 AI 驱动 DevSecOps 可观测性平台,能够自动监控基础设施、诊断故障根因并联动 CrowdSec 实现威胁检测与自动响应。
Stars: 0 | Forks: 0
# InfraGuard AI
**InfraGuard AI** 是一个智能的、自托管的 DevSecOps 可观测性代理。它会持续监控您的基础设施(如 Web 应用、容器和虚拟机),并充当自动化的站点可靠性工程师 (SRE)。InfraGuard 不仅限于为您展示仪表盘,还使用 AI 来读取日志、分析指标,并自动判断您的系统是健康、遭受攻击还是出现故障。
## 基本说明与应用流程
InfraGuard AI 是如何工作的?
1. **遥测数据收集**:每隔 120 秒,InfraGuard **代理** (Agent) 就会启动并从您的基础设施中收集数据:
- **Loki**:获取最近的应用程序和系统错误日志。
- **Prometheus**:检查 CPU、内存、磁盘和 HTTP 错误率指标。
- **Docker**:扫描已崩溃、已重启或变为不健康状态的容器。
- **HTTP 探针**:Ping 您的端点,以确保它们在线且响应正常。
2. **AI 推理**:代理将此原始数据发送至 **Google Vertex AI**(使用 Gemini 2.5 Flash 模型)。该 AI 扮演 SRE 的角色,使用 LangChain 工具对数据进行推理,从而诊断根本原因并提供建议的操作。
3. **操作手册上下文**:在决定采取何种操作之前,代理会直接从 **Notion 数据库** 中获取相关的 IT 操作手册。这确保了 AI 的建议符合您公司的实际流程。
4. **状态判定生成**:AI 会生成最终的 JSON 判定结果(例如 `ok`、`warning`、`high`、`critical`),并附带纯英文摘要、根本原因分析和建议的操作。
5. **仪表盘与威胁响应**:判定结果会保存到本地 SQLite 数据库,并显示在安全的 **InfraGuard 仪表盘**(由 API 提供服务)上。该系统还会扫描活动攻击(如 SSH 暴力破解),并能使用 CrowdSec 自动生成防火墙规则。
## 使用的工具和技术
- **后端框架**:Python(使用 FastAPI 构建仪表盘/API,使用标准 Python 编写代理循环)。
- **AI / LLM**:通过 LangChain 和 LangGraph 进行代理推理,使用 Google Vertex AI (Gemini 2.5 Flash)。
- **RAG(检索增强生成)**:ChromaDB(向量存储)和 Notion API,用于获取和查询操作手册。
- **可观测性技术栈**:Prometheus(指标),Grafana Loki(日志),Promtail(日志传输)。
- **安全**:CrowdSec(IP 封禁),安全的会话 cookie,严格的 CORS/CSP 策略。
- **部署**:Docker Compose,GitHub Actions (CI/CD),Terraform,Google Compute Engine (GCE)。
## 所需环境变量
要运行 InfraGuard AI,您必须在 `.env` 文件中配置以下变量(参见 `.env.example`):
### 1. 核心安全与身份验证
- `INFRAGUARD_USERNAME` — 您用于登录仪表盘的自定义用户名。
- `INFRAGUARD_PASSWORD` — 您用于登录仪表盘的自定义密码。
- `SECRET_KEY` — 用于签署会话 cookie 的随机加密字符串。
### 2. Google Cloud / AI 身份验证
- `GCP_PROJECT_ID` — 您的 Google Cloud 项目 ID。
- `GCP_REGION` — 您的 Google Cloud 区域(例如 `us-central1`)。
- `GOOGLE_APPLICATION_CREDENTIALS` — 您的 GCP 服务账号 JSON 密钥的绝对路径(必须具备 Vertex AI 用户权限)。
- `USE_LANGCHAIN_AGENT` — 设置为 `1` 以启用完整的多工具 AI 推理(推荐)。
### 3. 可观测性端点
- `LOKI_URL` — 您的 Loki 实例的 URL(例如 `http://100.66.123.4:3100`)。
- `PROMETHEUS_URL` — 您的 Prometheus 实例的 URL(例如 `http://100.66.123.4:9090`)。
- `PROBE_URLS` — 以逗号分隔的 URL 列表,用于 ping 检测正常运行时间(例如 `https://my-app.com/health`)。
### 4. 操作手册 (Notion RAG)
- `NOTION_TOKEN` — 您的 Notion 内部集成 Token。
- `NOTION_DATABASE_ID` — 包含您的操作手册的 Notion 数据库的 ID。
### 5. 安全(可选)
- `CROWDSEC_API_URL` / `CROWDSEC_API_KEY` — (可选)用于将自动化的 IP 封禁推送到您的 CrowdSec 本地 API。
## 设置与部署
### 本地开发
1. 复制示例环境变量文件:`cp .env.example .env`
2. 填写上面列出的变量。
3. 启动技术栈:`docker compose up -d --build`
4. 通过 `http://localhost:8000` 访问仪表盘(需要登录)。
### 生产部署(通过 GitHub Actions 部署到 GCE)
项目包含一个 `.github/workflows/deploy.yml` 流水线。当您推送到 `main` 分支时:
1. 它会构建 `agent` 和 `api` 的 Docker 镜像。
2. 它会将它们推送到 Google Artifact Registry。
3. 它会通过 SSH 连接到您的 VM,使用 GitHub Secrets 更新 `.env` 文件,并重启 Docker Compose。
### 索引 Notion 操作手册
应用程序运行后,通过触发以下端点,将您的操作手册从 Notion 索引到 AI 的内存中:
```
curl -X GET http://localhost:8000/api/runbooks/index -b "session="
```
*(或者直接在已通过身份验证的浏览器中访问 `/api/runbooks/index`)。*
InfraGuard AI 是如何工作的?
1. **遥测数据收集**:每隔 120 秒,InfraGuard **代理** (Agent) 就会启动并从您的基础设施中收集数据:
- **Loki**:获取最近的应用程序和系统错误日志。
- **Prometheus**:检查 CPU、内存、磁盘和 HTTP 错误率指标。
- **Docker**:扫描已崩溃、已重启或变为不健康状态的容器。
- **HTTP 探针**:Ping 您的端点,以确保它们在线且响应正常。
2. **AI 推理**:代理将此原始数据发送至 **Google Vertex AI**(使用 Gemini 2.5 Flash 模型)。该 AI 扮演 SRE 的角色,使用 LangChain 工具对数据进行推理,从而诊断根本原因并提供建议的操作。
3. **操作手册上下文**:在决定采取何种操作之前,代理会直接从 **Notion 数据库** 中获取相关的 IT 操作手册。这确保了 AI 的建议符合您公司的实际流程。
4. **状态判定生成**:AI 会生成最终的 JSON 判定结果(例如 `ok`、`warning`、`high`、`critical`),并附带纯英文摘要、根本原因分析和建议的操作。
5. **仪表盘与威胁响应**:判定结果会保存到本地 SQLite 数据库,并显示在安全的 **InfraGuard 仪表盘**(由 API 提供服务)上。该系统还会扫描活动攻击(如 SSH 暴力破解),并能使用 CrowdSec 自动生成防火墙规则。
## 使用的工具和技术
- **后端框架**:Python(使用 FastAPI 构建仪表盘/API,使用标准 Python 编写代理循环)。
- **AI / LLM**:通过 LangChain 和 LangGraph 进行代理推理,使用 Google Vertex AI (Gemini 2.5 Flash)。
- **RAG(检索增强生成)**:ChromaDB(向量存储)和 Notion API,用于获取和查询操作手册。
- **可观测性技术栈**:Prometheus(指标),Grafana Loki(日志),Promtail(日志传输)。
- **安全**:CrowdSec(IP 封禁),安全的会话 cookie,严格的 CORS/CSP 策略。
- **部署**:Docker Compose,GitHub Actions (CI/CD),Terraform,Google Compute Engine (GCE)。
## 所需环境变量
要运行 InfraGuard AI,您必须在 `.env` 文件中配置以下变量(参见 `.env.example`):
### 1. 核心安全与身份验证
- `INFRAGUARD_USERNAME` — 您用于登录仪表盘的自定义用户名。
- `INFRAGUARD_PASSWORD` — 您用于登录仪表盘的自定义密码。
- `SECRET_KEY` — 用于签署会话 cookie 的随机加密字符串。
### 2. Google Cloud / AI 身份验证
- `GCP_PROJECT_ID` — 您的 Google Cloud 项目 ID。
- `GCP_REGION` — 您的 Google Cloud 区域(例如 `us-central1`)。
- `GOOGLE_APPLICATION_CREDENTIALS` — 您的 GCP 服务账号 JSON 密钥的绝对路径(必须具备 Vertex AI 用户权限)。
- `USE_LANGCHAIN_AGENT` — 设置为 `1` 以启用完整的多工具 AI 推理(推荐)。
### 3. 可观测性端点
- `LOKI_URL` — 您的 Loki 实例的 URL(例如 `http://100.66.123.4:3100`)。
- `PROMETHEUS_URL` — 您的 Prometheus 实例的 URL(例如 `http://100.66.123.4:9090`)。
- `PROBE_URLS` — 以逗号分隔的 URL 列表,用于 ping 检测正常运行时间(例如 `https://my-app.com/health`)。
### 4. 操作手册 (Notion RAG)
- `NOTION_TOKEN` — 您的 Notion 内部集成 Token。
- `NOTION_DATABASE_ID` — 包含您的操作手册的 Notion 数据库的 ID。
### 5. 安全(可选)
- `CROWDSEC_API_URL` / `CROWDSEC_API_KEY` — (可选)用于将自动化的 IP 封禁推送到您的 CrowdSec 本地 API。
## 设置与部署
### 本地开发
1. 复制示例环境变量文件:`cp .env.example .env`
2. 填写上面列出的变量。
3. 启动技术栈:`docker compose up -d --build`
4. 通过 `http://localhost:8000` 访问仪表盘(需要登录)。
### 生产部署(通过 GitHub Actions 部署到 GCE)
项目包含一个 `.github/workflows/deploy.yml` 流水线。当您推送到 `main` 分支时:
1. 它会构建 `agent` 和 `api` 的 Docker 镜像。
2. 它会将它们推送到 Google Artifact Registry。
3. 它会通过 SSH 连接到您的 VM,使用 GitHub Secrets 更新 `.env` 文件,并重启 Docker Compose。
### 索引 Notion 操作手册
应用程序运行后,通过触发以下端点,将您的操作手册从 Notion 索引到 AI 的内存中:
```
curl -X GET http://localhost:8000/api/runbooks/index -b "session=标签:AI监控, AMSI绕过, API集成, CrowdSec, DevSecOps, DLL 劫持, Docker, Gemini 2.5, IT运维, LangChain, Loki, Notion, RAG, Root Cause Analysis, Ruby, Runbook, Site Reliability Engineering, Socks5代理, SQLite, SSH暴力破解防御, Vertex AI, Web应用监控, 上游代理, 人工智能, 仪表盘, 可观测性, 基础设施监控, 大语言模型, 威胁检测, 安全响应, 安全防御评估, 容器监控, 指标监控, 智能SRE, 根因分析, 检索增强生成, 模块化设计, 用户模式Hook绕过, 知识库, 自动化修复, 自动化运维, 自定义请求头, 自托管平台, 虚拟机监控, 请求拦截, 轻量级, 逆向工具, 速率限制, 遥测数据采集, 防火墙