# PromAI **Repository Path**: xyenvy/PromAI ## Basic Information - **Project Name**: PromAI - **Description**: 基于Prometheus数据源的巡检服务 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-03-02 - **Last Updated**: 2026-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Prometheus 监控报告生成器 > Prometheus Automated Inspection ## 项目简介 这是一个基于 Prometheus 的监控报告自动生成工具,可以自动收集、分析指标数据并生成可视化的 HTML 报告。该工具旨在简化监控数据的收集和展示过程,帮助运维人员快速了解系统状态。 ## 报告样式 ### 获取报告 在首页选择 Prometheus 地址后提交生成;接口为 `POST /getreport`。 [报告样式](reports/inspection_report_20241214_131709.html) ![report](images/image.png) ![report](images/image2.png) ## 服务健康看板 ### 获取服务健康看板 http://localhost:8091/status ![status](images/status.png) ## 功能特点 - 支持多种指标类型的监控(基础资源、Kubernetes、应用服务等) - 自动计算指标状态和告警级别(正常、警告、严重) - 生成包含数据表格和图表的 HTML 报告 - 支持自定义指标阈值和标签别名 - 灵活的配置文件系统 - 支持多维度数据分析和展示 - 自动计算关键统计指标(最大值、最小值、平均值等) - 美观的可视化界面,支持响应式布局 ## 系统要求 - Go 1.22 或更高版本 - 可访问的 Prometheus 服务器 - 现代浏览器(支持 HTML5 和 JavaScript) - 至少 512MB 可用内存 - 50MB 可用磁盘空间 ## 配置说明 配置文件采用 YAML 格式,主要包含以下几个部分: ### Prometheus 配置 在 `config/config.yaml` 中配置 Prometheus 服务器地址和监控指标。 ```yaml prometheus_url: "http://prometheus.k8s.kubehan.cn" prometheus_urls: - "http://prometheus.k8s.kubehan.cn" query_timeout: 30s http_read_header_timeout: 5s http_read_timeout: 15s http_write_timeout: 120s http_idle_timeout: 60s report_title: "集群系统监控巡检报告" report_inspector: "未指定" report_inspectors: - "未指定" - "运维值班组" metric_types: - type: "基础资源使用情况" metrics: - name: "CPU使用率" description: "节点CPU使用率统计" query: "100 - (avg by(instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)" threshold: 80 unit: "%" labels: instance: "节点" # 其他指标... ``` ### 按 Prometheus 地址配置指标 `metric_types` 是未单独配置地址时使用的默认指标集。对于指标集不同的 Prometheus,在 `metric_types_by_prometheus` 中填写该地址的完整指标集;该配置会替换默认指标集。例如只有 A 暴露 Kubernetes 指标而 B 不暴露时,只为 A 配置 K8S 指标: ```yaml prometheus_urls: - "https://prometheus-a.example" - "https://prometheus-b.example" metric_types_by_prometheus: "https://prometheus-a.example": - type: "K8S集群" metrics: - name: "Pod运行状态" query: "sum by (namespace, pod) (kube_pod_status_phase{phase=\"Running\"})" threshold: 1 threshold_type: "less" unit: "" labels: namespace: "命名空间" pod: "Pod名称" "https://prometheus-b.example": - type: "基础资源使用情况" metrics: # 按 B 实际暴露的指标填写 ``` 映射中的地址必须出现在 `prometheus_urls`。手工生成报告、定时报告和服务健康看板会使用相同的地址专属指标集。 ### 指标说明 每个指标可以配置以下内容: - `name`: 指标名称 - `description`: 指标描述 - `query`: 用于表格显示的即时查询 - `threshold`: 指标阈值 - `unit`: 指标单位 - `labels`: 标签别名 - `threshold_type`: 阈值比较方式: "greater", "less", "equal", "greater_equal", "less_equal" ```txt greater: 表示值必须大于阈值才被视为 "critical" 状态。 greater_equal: 表示值必须大于或等于阈值才被视为 "critical" 状态。 less: 表示值必须小于阈值才被视为 "normal" 状态。 less_equal: 表示值必须小于或等于阈值才被视为 "normal" 状态。 equal: 表示值必须等于阈值才被视为 "normal" 状态。 ``` ## 快速开始 ### 源码编译 1. 克隆仓库: ```bash git clone https://gitee.com/xyenvy/PromAI.git cd PromAI ``` 2. 安装依赖: ```bash go mod download ``` 3. 修改配置文件: ```bash cp config/config.example.yaml config/config.yaml # 编辑 config.yaml 设置 Prometheus 服务器地址和监控指标 ``` 4. 构建并运行: ```bash go build -o PromAI main.go ./PromAI -config config/config.yaml ``` 服务默认只监听 `127.0.0.1:8091`。首次初始化会在日志中输出随机临时密码,登录后必须立即修改。 5. 查看报告: 生成的报告将保存在 `reports` 目录下。 ### Docker 部署 ```bash docker run -d --name PromAI -p 8091:8091 kubehan/promai:latest ``` ### Kubernetes 部署 ```bash kubectl apply -f deploy/deployment.yaml ``` ## 使用示例 在配置文件中添加所需的监控指标后,运行程序将生成 HTML 报告。报告中将包含各个指标的当前状态、历史趋势图表以及详细的表格数据。 1. 修改配置文件中的Prometheus地址为自己的地址 2. 修改配置文件中的指标 3. 运行程序 默认运行在8091端口,通过访问 http://localhost:8091/ 选择 Prometheus 地址并生成报告 ```bash go build -o PromAI main.go ./PromAI -config config/config.yaml ``` ### 配置中心 首次启动会把 `config/config.yaml` 导入 `config/promai.db`。之后请访问 `/settings`,在页面中维护 Prometheus 目标、指标模板、PromQL、报告和调度参数。缓存、查询、报告和调度配置会热加载;HTTP 连接超时会明确提示在重启后生效。 配置中心的读写权限由登录会话控制。登录后即可新增、编辑、删除和保存配置,不再需要额外输入管理员令牌。 SQLite 路径可通过 `-db` 或 `PROMAI_DATABASE_PATH` 覆盖。默认监听地址可通过 `-host` 或 `PROMAI_BIND_ADDRESS` 修改。容器和远程部署需要监听 `0.0.0.0`,并应置于 HTTPS 反向代理或受控运维网络后方。 安全限制:Prometheus 目标禁止 userinfo、URL fragment、localhost、loopback、链路本地和多播地址;内网 RFC1918 地址仍然可用。运行时报告只允许读取 `reports/` 下的 HTML 文件,数据库和 JSON 元数据不会通过静态目录直接提供。 # Prometheus Automated Inspection 未来新功能规划列表 1. 多数据源支持 2. 自定义仪表板 3. 历史数据存储 4. 智能告警 5. API 接口 6. 用户角色和权限管理 7. 数据导出功能 8. 集成 CI/CD 流程 9. 可视化组件库 10. 多语言支持 11. 移动端支持 12. 社区和插件支持 13. 性能优化 14. 用户反馈和建议收集 15. xxx ## 贡献 欢迎任何形式的贡献!请提交问题、建议或拉取请求。 ## 贡献者
kubehan
Kubehan
wevsmy
Wilson_wu
liaofan-0710
了凡
## 许可证 该项目采用 MIT 许可证,详细信息请查看 LICENSE 文件。