项目简介

智能巡检系统是一套面向运维场景的自动化巡检管理平台,支持主机、数据库、中间件、安全等多维度巡检。系统提供资源纳管、巡检项管理、手动/批量巡检、自动化定时任务、历史报告查看与合并等功能,帮助运维团队高效完成日常巡检工作,及时发现系统潜在风险。

本系统设计轻量、易部署,可运行于 Linux、麒麟等国产操作系统,并支持打包为独立的可执行文件,方便离线内网环境使用。

核心功能

功能模块 说明
资源纳管 统一管理主机(SSH)和数据库(MySQL)资源,支持增删改查、连接测试
巡检项管理 内置丰富的巡检项(系统信息、安全检测、中间件、数据库等),支持自定义命令扩展
手动巡检 选择资源与巡检项,实时执行并生成 Word 格式报告
批量巡检 通过 Excel 模板批量导入主机或数据库,自动执行并汇总结果
自动化任务 基于 Cron 表达式配置定时巡检,自动执行并记录历史
巡检历史 查看所有巡检记录,支持单份报告下载和多份报告合并
用户认证 支持用户登录、权限管理(管理员/普通用户),保护敏感操作

技术栈

  • 后端:Flask (Python 3.6+)
  • 数据库:SQLite(可迁移至 MySQL/PostgreSQL)
  • 任务调度:APScheduler
  • 远程连接:Paramiko (SSH)、PyMySQL
  • 报告生成:python-docx、openpyxl
  • 前端:Bootstrap 5、jQuery、Font Awesome
  • 打包工具:PyInstaller

快速开始

环境要求

  • 操作系统:Linux (CentOS 7/8、麒麟 V10、Ubuntu 等)
  • Python 3.6 或更高版本
  • 能够 SSH 连接目标主机,或连接 MySQL 数据库

安装步骤

  1. 克隆代码

    git clone https://github.com/Zhh9126/InspectionSystemV5.git
    cd InspectionSystemV5
    
  2. 安装依赖

    pip install -r requirements.txt
    

    如果网络受限,可使用离线安装方式(下载 wheel 包后本地安装)。

  3. 初始化数据库
    首次运行会自动创建 SQLite 数据库文件 inspection.db,并生成内置巡检项和默认管理员账号。

  4. 启动服务

    python app.py
    

    默认监听 http://0.0.0.0:5000,可通过 --host--port 调整。

  5. 访问系统
    浏览器打开 http://服务器IP:5000,使用以下默认账号登录:

    • 用户名:admin
    • 密码:admin123

    请务必在首次登录后修改密码!

使用指南

资源纳管

  • 添加主机:填写 IP、SSH端口(默认22)、用户名、密码
  • 添加数据库:选择类型(MySQL)、填写主机、端口、用户名、密码、数据库名
  • 点击“测试连接”验证凭据是否有效

巡检项管理

  • 内置项已自动创建,可直接使用或编辑命令
  • 自定义项需填写类别、名称、描述及具体的 Shell 命令或 SQL 语句

执行手动巡检

  1. 选择巡检类别(主机/数据库等)
  2. 选择具体资源
  3. 勾选需要执行的巡检项(支持按类别筛选)
  4. 填写巡检人和运维单位
  5. 点击“开始巡检”,完成后自动生成并下载 Word 报告

批量巡检

  1. 下载对应的 Excel 模板(主机或数据库)
  2. 按模板格式填写资源信息
  3. 上传文件,选择巡检项和巡检人/单位
  4. 系统自动执行,并显示结果汇总

设置定时任务

  1. 点击“新建定时任务”
  2. 填写任务名称、Cron 表达式(例如 0 2 * * * 表示每天凌晨2点)
  3. 选择资源类型(主机/数据库),从列表中勾选目标资源
  4. 选择需要执行的巡检项(支持按类别筛选)
  5. 保存后任务将自动调度执行,历史记录可在“巡检历史”中查看

查看历史与合并报告

  • 历史记录按时间倒序排列,状态列显示成功/失败
  • 可勾选多份报告,点击“合并选中报告”生成合并版 Word 文档

打包为独立可执行文件

系统支持使用 PyInstaller 打包为单文件,方便内网离线部署。

pyinstaller --clean --onefile \
    --add-data "templates:templates" \
    --add-data "static:static" \
    --hidden-import paramiko \
    --hidden-import cryptography \
    --hidden-import apscheduler \
    --hidden-import apscheduler.triggers.interval \
    --hidden-import apscheduler.triggers.cron \
    --hidden-import flask \
    --hidden-import flask_sqlalchemy \
    --hidden-import openpyxl \
    --hidden-import docx \
    --hidden-import pymysql \
    --hidden-import psutil \
    --collect-all cryptography \
    --collect-all jinja2 \
    --name InspectionSystem \
    app.py

打包后,可执行文件位于 dist/ 目录,可直接拷贝到任意 Linux 环境运行。

注意:若需在 ARM 架构(如麒麟)上运行,请在 ARM 机器上执行打包,或使用对应的交叉编译工具链。

项目结构

inspection-system/
├── app.py                  # Flask 主应用
├── models.py               # 数据库模型
├── inspection_engine.py    # 巡检执行引擎
├── tasks.py                # 定时任务调度器
├── utils.py                # 工具函数(SSH、Excel、Word 等)
├── requirements.txt        # Python 依赖
├── templates/              # HTML 模板
│   ├── base.html
│   ├── login.html
│   ├── index.html
│   ├── resources.html
│   ├── inspection_items.html
│   ├── manual_inspect.html
│   ├── batch_inspect.html
│   ├── scheduled_tasks.html
│   ├── history.html
│   └── user_manage.html
├── static/                 # 静态资源(CSS、JS、字体、Excel模板)
│   ├── css/
│   ├── js/
│   └── template/
└── reports/                # 生成的报告存储目录(自动创建)

常见问题

1. 报告生成后内容为空

  • 检查主机 SSH 连接是否正常(可在资源纳管中测试)
  • 查看日志文件 /tmp/os_inspector_debug.log 确认命令执行输出
  • 确认巡检项的命令是否为空(内置项默认有命令,若被清空请编辑恢复)

2. 定时任务未执行

  • 检查 Cron 表达式是否正确
  • 查看后台日志是否有异常(APScheduler 会输出任务加载和执行信息)
  • 确认任务状态为“启用”

3. 批量上传 Excel 失败

  • 检查模板格式是否与下载的一致
  • 主机模板必须包含 IP、SSH端口、用户、密码等列
  • 数据库模板必须包含名称、主机、端口、用户名、密码等列

4. 合并报告报错

  • 需要至少选择 2 份成功生成的报告
  • 确保选中的报告文件未被删除或移动

5. 运行打包程序后界面样式丢失

  • 这是因为内网无法访问外网 CDN,请下载 Bootstrap、jQuery 和 Font Awesome 的本地文件,放置在 static/ 目录下,并修改模板中的引用路径。

安全建议

  • 修改默认管理员密码
  • 生产环境将 app.config['SECRET_KEY'] 替换为随机字符串
  • 使用 HTTPS 反向代理(如 Nginx)部署
  • 定期备份 inspection.db 数据库和 reports/ 目录

贡献指南

欢迎提交 Issue 和 Pull Request。请确保代码符合 PEP8 规范,并添加必要的注释。

  1. Fork 本仓库
  2. 创建您的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的修改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开一个 Pull Request

许可证

本项目使用 MIT 许可证,详情请见 LICENSE 文件。

联系与支持

如有问题或建议,请通过 Issue 与我们联系,或发送邮件至项目维护者。


感谢使用智能巡检系统! 希望它能为您的工作带来便利。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐