# smt **Repository Path**: xl181128/smt ## Basic Information - **Project Name**: smt - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-27 - **Last Updated**: 2025-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SMT 服务器健康状态监控系统 ## 项目概述 SMT 是一个基于 Go 和 React 开发的服务器健康状态监控系统,提供实时的系统指标监控和可视化展示。系统通过 WebSocket 实现数据实时推送,使用 SQLite 进行数据持久化,支持多种部署方式。 ## 技术栈 ### 后端 - **框架**: Gin Web Framework - **语言**: Go 1.22 - **WebSocket**: Gorilla WebSocket - **ORM**: GORM - **数据库**: SQLite - **系统指标**: gopsutil - **配置管理**: Viper ### 前端 - **框架**: React 18 - **语言**: TypeScript - **构建工具**: Vite - **UI 组件库**: Ant Design - **样式**: Less - **HTTP 客户端**: Axios - **图表库**: ECharts ## 功能特性 ### 1. 系统指标监控 - **CPU 使用率**: 实时监控 CPU 使用率,支持多核心展示 - **内存使用率**: 监控内存使用情况,包括已使用和空闲内存 - **硬盘使用率**: 监控各磁盘分区的使用率 - **端口监控**: 监控系统端口使用情况,支持搜索和分页 ### 2. 实时数据推送 - 使用 WebSocket 实现数据实时推送 - 客户端与服务器保持长连接 - 数据更新频率可配置 ### 3. 数据持久化 - 使用 SQLite 存储历史监控数据 - 支持数据查询和分析 - 数据库文件自动备份 ### 4. 可视化展示 - 使用 ECharts 实现数据可视化 - 支持多种图表类型(柱状图、饼图、折线图等) - 数据展示支持小数点后两位格式化 - 响应式设计,适配不同屏幕尺寸 ### 5. 告警功能 - 支持设置阈值告警 - 告警记录存储到数据库 ### 6. 部署方式 - 支持 Docker 部署 - 支持 Docker Compose 部署 - 支持 Kubernetes 部署 - 提供一键打包脚本 ## 目录结构 ``` SMT/ ├── cmd/ # 命令行入口 │ └── smt/ # 主程序入口 │ └── main.go # 主函数 ├── deploy/ # 部署文件 │ └── k8s-deployment.yml # Kubernetes 部署配置 ├── internal/ # 内部包 │ ├── config/ # 配置管理 │ ├── db/ # 数据库连接 │ ├── health/ # 健康检查 │ ├── model/ # 数据模型 │ ├── server/ # 服务器初始化 │ └── websocket/ # WebSocket 处理 ├── pkg/ # 公共包 │ └── metrics/ # 系统指标收集 ├── scripts/ # 脚本文件 │ └── build.sh # 构建脚本 ├── storage/ # 存储目录(SQLite 数据库) ├── web/ # 前端代码 │ ├── public/ # 静态资源 │ └── src/ # 源代码 ├── Dockerfile # Docker 构建文件 ├── docker-compose.yml # Docker Compose 配置 ├── go.mod # Go 模块依赖 └── go.sum # Go 模块校验 ``` ## 部署方式 ### 1. 本地开发 #### 后端启动 ```bash # 安装依赖 go mod download # 启动后端服务(需要 CGO 支持) CGO_ENABLED=1 go run cmd/smt/main.go ``` #### 前端启动 ```bash # 进入前端目录 cd web # 安装依赖 npm install # 启动开发服务器 npm run dev ``` ### 2. Docker 部署 ```bash # 构建镜像 docker build -t smt-server . # 运行容器 docker run -d -p 8080:8080 -v ./storage:/app/storage smt-server ``` ### 3. Docker Compose 部署 ```bash docker-compose up -d ``` ### 4. Kubernetes 部署 ```bash kubectl apply -f deploy/k8s-deployment.yml ``` ### 5. 打包部署 ```bash # 使用构建脚本打包 ./scripts/build.sh [-e environment] # 示例:构建生产环境包 ./scripts/build.sh -e production ``` ## 使用说明 ### 访问系统 系统启动后,可通过以下地址访问: - 前端:http://localhost:8080 - API 文档:http://localhost:8080/swagger/index.html ### 主要功能 1. **仪表盘**:展示系统整体健康状态 2. **CPU 监控**:查看 CPU 使用率和核心分布 3. **内存监控**:查看内存使用情况 4. **硬盘监控**:查看各磁盘分区使用率 5. **端口监控**:查看端口使用情况,支持搜索和分页 6. **历史数据**:查看历史监控数据 7. **告警设置**:设置告警阈值 ### API 接口 | 接口路径 | 方法 | 描述 | |---------|------|------| | `/health` | GET | 健康检查 | | `/api/metrics` | GET | 获取系统指标 | | `/api/ports` | GET | 获取端口列表 | | `/ws` | WS | WebSocket 连接 | ## 配置说明 ### 后端配置 配置文件位于 `internal/config/config.yaml`,主要配置项包括: ```yaml server: port: 8080 read_timeout: 10s write_timeout: 10s websocket: ping_interval: 30s write_wait: 10s pong_wait: 60s metrics: collection_interval: 5s storage: path: ./storage/metrics.db ``` ### 前端配置 前端配置位于 `web/src/config/index.ts`,主要配置项包括: ```typescript export const config = { apiBaseUrl: '/api', wsUrl: 'ws://localhost:8080/ws', refreshInterval: 5000 }; ``` ## 开发指南 ### 代码规范 - 后端遵循 Go 语言规范,使用 `go fmt` 格式化代码 - 前端遵循 ESLint 和 Prettier 规范 ### 提交规范 - 使用 Conventional Commits 规范 - 提交信息格式:`[optional scope]: ` ### 测试 - 后端使用 Go 内置测试框架 - 前端使用 Jest 和 React Testing Library ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request! ## 联系方式 如有问题或建议,请通过以下方式联系: - Email: [your-email@example.com] - GitHub: [your-github-repo]