# PromAI **Repository Path**: wxd_ops/PromAI ## Basic Information - **Project Name**: PromAI - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-23 - **Last Updated**: 2026-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PromAI - Prometheus 智能自动化巡检平台 > Prometheus Automated Inspection ## 项目简介 PromAI 是一个基于 Prometheus 的智能自动化巡检平台,可以自动收集、分析指标数据并生成可视化的 HTML/PDF 报告。当前版本基于 **Gin-Vue-Admin** 提供管理后台。 ## 快速启动 ```powershell # 后端 8888 .\start-backend.ps1 # 前端 8080(代理 /api -> 8888) .\start-frontend.ps1 ``` - 登录地址:http://127.0.0.1:8080 - 默认账号:`admin` / `123456` - 业务菜单:PromAI 巡检(工作台、项目、数据源、巡检项、报告、调度、设置、通知、看板、任务) ## 报告样式 在「巡检工作台」或「历史报告」中生成/查看报告。 报告包含以下内容: - **概述文字描述**:本次巡检的整体情况描述 - **巡检内容摘要**:按类别展示巡检项数量、正常/异常统计 - **异常分析与建议**:针对每个异常指标类型提供详细分析和处理建议 - **资源使用概览图表**:CPU、内存、磁盘使用率可视化展示 - **详细指标表格**:按指标类型分组,支持状态筛选 ## 服务健康看板 ### 获取服务健康看板 在管理后台打开 **健康看板** 菜单,或调用 API:`GET /api/promai/status` 健康看板显示最近7天的指标健康状态,提供趋势分析。 ## 功能特点 ### 核心功能 - ✅ **多数据源支持**:统一管理多个 Prometheus 集群,支持动态切换 - ✅ **智能告警**:三级状态判断(正常/警告/严重),提前发现潜在问题 - ✅ **可视化报告**:自动生成包含图表、统计和详细数据的 HTML/PDF 报告 - ✅ **PDF报告生成**:前端生成PDF格式报告,内容与HTML完全一致 - ✅ **多渠道通知**:支持邮件、企业微信、钉钉等多种通知方式 - ✅ **手动发送通知**:历史报告页面支持手动选择发送HTML或PDF格式报告 - ✅ **智能分析**:自动生成异常分析与建议、巡检内容摘要 - ✅ **数据库驱动**:配置和结果持久化存储,支持历史回溯 - ✅ **服务层架构**:基于Gin框架,清晰的代码结构 - ✅ **响应式设计**:支持移动端查看 ### 技术特性 - **灵活的阈值配置**:支持多种比较方式(>, >=, <, <=, =, !=) - **自定义标签别名**:使报告更易读 - **状态筛选功能**:快速定位异常指标 - **历史报告管理**:查看、下载、删除、发送通知 - **任务进度跟踪**:实时查看巡检进度 - **健康看板**:7天趋势分析 ## 系统要求 - Go 1.22 或更高版本 - MySQL 5.7+ 或 MySQL 8.0+ - 可访问的 Prometheus 服务器 - 现代浏览器(支持 HTML5 和 JavaScript) - 至少 512MB 可用内存 - 50MB 可用磁盘空间 ## 快速开始 ### 源码编译 1. **克隆仓库**: ```bash git clone https://github.com/kubehan/PromAI.git cd PromAI ``` 2. **安装依赖**: ```bash go mod download ``` 3. **配置数据库**: ```sql CREATE DATABASE promai CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 4. **修改配置文件**: 编辑 `config/config.yaml`: ```yaml prometheus_url: "http://prometheus.example.com:9090" project_name: "PromAI巡检系统" inspection_user: "系统管理员" port: "8091" database: dsn: "user:password@tcp(localhost:3306)/promai?charset=utf8mb4&parseTime=True&loc=Local" auth: session_secret: "your-secret-key-here" ``` 5. **编译运行**: ```bash go build -o PromAI main.go ./PromAI -config config/config.yaml ``` 6. **访问系统**: - 首页:http://localhost:8091/api/promai/ - 默认用户名:`admin` - 默认密码:`admin123` ### Docker 部署 ```bash docker run -d \ --name promai \ -p 8091:8091 \ -v $(pwd)/config:/app/config \ -v $(pwd)/reports:/app/reports \ -v $(pwd)/static:/app/static \ kubehan/promai:latest ``` ### Kubernetes 部署 ```bash kubectl apply -f k8s-deployment.yaml ``` ## 使用示例 ### 基本使用 1. 修改配置文件中的Prometheus地址为自己的地址 2. 配置数据源(通过Web界面或数据库) 3. 配置巡检项(通过Web界面或数据库) 4. 运行程序,默认运行在8091端口 5. 访问 http://localhost:8091/api/promai/ 开始使用 ### 多数据源使用 支持通过Web界面管理多个Prometheus数据源: 1. 访问数据源管理页面:`/api/promai/admin/datasources/page` 2. 添加多个数据源(如:生产环境、测试环境) 3. 在巡检时选择对应的数据源 4. 在健康看板中切换数据源查看不同环境的状态 ### 报告下载和发送 1. **查看历史报告**:访问 `/api/promai/reports/history` 2. **下载报告**: - 点击"下载"下拉菜单 - 选择"下载 HTML"或"下载 PDF" - PDF通过前端生成,首次下载可能需要几秒钟 3. **发送通知**: - 点击"发送通知"下拉菜单 - 选择"发送 HTML 报告"或"发送 PDF 报告" - 如果选择PDF且PDF不存在,系统会自动生成PDF - 通知会发送到所有启用的通知渠道 ## 已实现功能 ✅ **核心功能** - ✅ 多数据源支持(数据库管理) - ✅ 自定义仪表板 - ✅ 智能告警(警告、严重两级告警) - ✅ API 接口(基于Gin框架) - ✅ 用户认证和权限管理(基于gorilla/sessions) - ✅ 数据导出功能(HTML和PDF报告) - ✅ 响应式设计(移动端支持) - ✅ 实时状态监控看板 - ✅ 灵活的阈值配置系统 - ✅ 完整的指标统计分析 - ✅ 异常分析与建议 - ✅ 巡检内容摘要 - ✅ 手动发送通知(HTML/PDF格式) ## 项目特色 ### 🎯 智能告警系统 支持多种阈值比较方式,适应不同监控场景需求: - 数值范围监控(CPU、内存使用率) - 计数监控(可用节点数、连接数) - 精确匹配监控(版本号、状态检查) ### 📊 可视化报告 自动生成包含统计信息、趋势图表和详细数据的HTML/PDF报告: - 概述文字描述 - 巡检内容摘要卡片 - 异常分析与建议卡片 - 资源使用情况图表(Chart.js) - 按状态筛选的数据表格 - 响应式设计,支持各种设备 ### 📄 PDF报告生成 - 前端生成PDF(html2canvas + jsPDF) - PDF内容与HTML完全一致 - 支持多页PDF - 生成的PDF保存到服务器 `static/` 目录 ### 🔔 多渠道通知 - **邮件**:支持HTML和PDF附件 - **钉钉**:发送报告链接(HTML查看链接,PDF下载链接) - **企业微信**:发送报告链接(HTML查看链接,PDF下载链接) - **手动发送**:历史报告页面支持手动选择格式发送 ### 🔄 实时状态监控 提供服务健康状态看板,实时显示: - 各类别巡检结果统计 - 异常指标详情 - 总体健康度评估 - 7天趋势分析 ### 🔧 灵活配置系统 支持数据库驱动的配置管理: - Prometheus数据源(Web界面管理) - 监控指标类型(Web界面管理) - 阈值和告警规则(Web界面管理) - 标签别名显示(JSON格式) - 通知渠道配置(Web界面管理) ### 🏗️ 现代化架构 - **Gin Web框架**:高性能HTTP路由和处理 - **服务层架构**:清晰的业务逻辑分离 - **GORM ORM**:便捷的数据库操作 - **前端技术栈**:Chart.js、html2canvas、jsPDF ## 技术架构 ### 后端技术栈 - **语言**:Go 1.22+ - **Web框架**:Gin - **ORM**:GORM - **数据库**:MySQL - **会话管理**:gorilla/sessions - **Prometheus客户端**:prometheus/client_golang ### 前端技术栈 - **图表库**:Chart.js 4.4.0 - **PDF生成**:html2canvas + jsPDF - **样式**:原生CSS(响应式设计) ### 目录结构 ``` PromAI/ ├── main.go # 程序入口 ├── config/ # 配置文件 ├── templates/ # HTML模板 │ ├── index.html # 首页 │ ├── report.html # 报告模板 │ ├── reports.html # 历史报告页面 │ └── ... ├── pkg/ │ ├── api/ # API层(Gin路由和处理器) │ ├── service/ # 业务逻辑层 │ ├── database/ # 数据库模型和操作 │ ├── metrics/ # 指标收集 │ ├── report/ # 报告生成 │ ├── notify/ # 通知发送 │ ├── auth/ # 认证 │ └── ... ├── reports/ # HTML报告存储目录 └── static/ # PDF报告存储目录 ``` ## 配置说明 ### 数据库配置 系统使用MySQL存储配置和巡检结果: - **数据源**:通过Web界面管理,存储在 `data_sources` 表 - **巡检项**:通过Web界面管理,存储在 `inspection_items` 表 - **通知渠道**:通过Web界面管理,存储在 `notification_channels` 表 - **巡检结果**:自动保存到 `inspection_results` 表 - **任务信息**:自动保存到 `inspection_tasks` 表 ### 通知渠道配置 #### 邮件配置 ```json { "smtp_host": "smtp.example.com", "smtp_port": 587, "username": "user@example.com", "password": "password", "from": "noreply@example.com", "to": ["admin@example.com"], "report_url": "http://your-server:8091" } ``` #### 企业微信配置 ```json { "webhook": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY", "proxy_url": "", "report_url": "http://your-server:8091" } ``` #### 钉钉配置 ```json { "webhook": "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN", "secret": "your-secret", "report_url": "http://your-server:8091" } ``` ## API接口 ### 主要接口 - `GET /api/promai/getreport` - 生成巡检报告 - `GET /api/promai/reports/history` - 历史报告列表 - `GET /api/promai/reports/download/:filename` - 下载报告(支持format参数:html/pdf) - `POST /api/promai/reports/send-notification` - 发送通知 - `GET /api/promai/status` - 健康看板 - `GET /api/promai/health` - 健康检查 详细API文档请参考 [操作手册.md](操作手册.md) ## 常见问题 ### PDF生成失败 PDF通过前端JavaScript生成,需要: - 使用现代浏览器(Chrome、Firefox、Edge等) - 确保浏览器允许JavaScript执行 - 检查浏览器控制台是否有错误信息 ### 通知发送失败 - **邮件**:检查SMTP配置和网络连接 - **钉钉/企业微信**:检查Webhook URL和网络连接 - **PDF通知**:钉钉和企业微信不支持直接发送文件,会发送PDF下载链接 ### 报告内容为空 - 检查巡检项配置是否正确 - 检查PromQL查询是否能返回数据 - 检查数据源连接是否正常 更多问题请参考 [操作手册.md](操作手册.md) 中的"常见问题"章节。