Skip to content

yyft6919/ServerStatus-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ServerStatus 服务器监控系统

一个基于Java后端和Vue3前端的现代化服务器监控系统,支持实时监控多台服务器的状态信息。

项目简介

以Java为服务端实现的一款前后端分离服务器探针、云监控系统。前端基于cokemine/Hotaru_theme项目拓展,使用WebSocket替代HTTP实现实时通信,采用Vue3、TypeScript、Semantic UI技术栈,新增后台管理页面,可实现节点热添加/删除/编辑。

服务端基于Spring Boot + Netty框架,采用非阻塞式IO方式实现,性能更高效。客户端(采集端)基于cppla/ServerStatus中Python客户端修改实现,无外部依赖。

工作机制:客户端运行在windows或者Linux系统上收集服务器数据,并通过TCP连接push到服务端,服务端整理后通过WebSocket实时推送到前端展示。

技术栈

后端技术

  • Java 11 - 主要开发语言
  • Spring Boot 2.7.0 - 应用框架
  • Netty 4.1.86 - 高性能网络通信框架
  • WebSocket - 实时数据推送
  • FastJSON 2.0.22 - JSON处理
  • Hutool 5.8.11 - Java工具库
  • Lombok - 代码简化
  • Maven - 项目构建管理

前端技术

  • Vue 3.0 - 前端框架
  • TypeScript 4.1.3 - 类型安全的JavaScript
  • Vue Router 4.0 - 路由管理
  • Semantic UI 2.4.1 - UI组件库
  • Axios 0.21.1 - HTTP客户端
  • WebSocket - 实时数据接收
  • Vue CLI 4.5 - 项目构建工具

客户端技术

  • Python 3+ - 数据采集脚本
  • 无外部依赖 - 纯Python标准库实现

项目结构

ServerStatus-Mion-main/
├── README.md                    # 项目说明文档
├── Status-Client/               # 客户端目录
│   └── status_client.py         # linux Python数据采集客户端
│   └── status_client_windows.py # windows Python数据采集客户端
├── Status-Server/               # 服务端目录
│   ├── pom.xml                  # Maven项目配置
│   ├── server_config.json       # 服务器配置文件
│   ├── src/main/
│   │   ├── java/com/bubble/status/
│   │   │   ├── StatusApplication.java        # Spring Boot启动类
│   │   │   ├── config/                       # 配置类
│   │   │   │   ├── CorsConfig.java          # 跨域配置
│   │   │   │   ├── SpringContext.java       # Spring上下文
│   │   │   │   └── WebServerConfig.java     # Web服务配置
│   │   │   ├── controller/                   # 控制器层
│   │   │   │   ├── http/AdminController.java # 管理接口控制器
│   │   │   │   └── ws/WebSocketHandler.java  # WebSocket处理器
│   │   │   ├── enums/                        # 枚举类
│   │   │   │   ├── MessageType.java         # 消息类型枚举
│   │   │   │   └── ServerType.java          # 服务器类型枚举
│   │   │   ├── exceptions/                   # 异常类
│   │   │   ├── handler/                      # 网络处理器
│   │   │   │   ├── inbound/                 # 入站处理器
│   │   │   │   └── protocol/                # 协议处理器
│   │   │   ├── model/                        # 数据模型
│   │   │   ├── runner/                       # 启动运行器
│   │   │   │   └── NettyBootstrapRunner.java # Netty服务启动器
│   │   │   ├── service/                      # 业务服务层
│   │   │   │   ├── StatusService.java       # 状态服务
│   │   │   │   ├── ConfigService.java       # 配置服务
│   │   │   │   ├── LoginService.java        # 登录服务
│   │   │   │   └── WebStatusService.java    # Web状态服务
│   │   │   ├── structure/                    # 数据结构
│   │   │   └── utils/                        # 工具类
│   │   └── resources/
│   │       ├── application.properties        # Spring Boot配置
│   │       └── server_config.json          # 服务器节点配置
│   └── target/                              # 编译输出目录
│       └── server-status-1.1.1.jar         # 可执行JAR包
└── Status-Web/                              # 前端目录
    ├── package.json                         # npm项目配置
    ├── tsconfig.json                        # TypeScript配置
    ├── vue.config.js                        # Vue CLI配置
    ├── babel.config.js                      # Babel配置
    ├── .eslintrc                           # ESLint配置
    ├── public/                              # 静态资源
    │   ├── index.html                       # HTML模板
    │   ├── config.js                        # 前端配置
    │   ├── css/                            # 样式文件
    │   └── favicon.ico                      # 网站图标
    ├── src/                                 # 源代码
    │   ├── main.ts                          # 应用入口
    │   ├── App.vue                          # 主页面组件
    │   ├── MyApp.vue                        # 应用根组件
    │   ├── shims-vue.d.ts                   # Vue类型声明
    │   ├── assets/                          # 静态资源
    │   │   └── img/                         # 图片资源
    │   └── components/                      # Vue组件
    │       ├── Admin.vue                    # 管理后台组件
    │       ├── Login.vue                    # 登录组件
    │       ├── CardItem.vue                 # 卡片项组件
    │       ├── ServersCard.vue              # 服务器卡片组件
    │       ├── ServersTable.vue             # 服务器表格组件
    │       ├── TableItem.vue                # 表格项组件
    │       ├── TheHeader.vue                # 页头组件
    │       ├── TheFooter.vue                # 页脚组件
    │       ├── TheError.vue                 # 错误页组件
    │       ├── UpdateTime.vue               # 更新时间组件
    │       ├── useAdmin.ts                  # 管理功能逻辑
    │       └── useStatus.ts                 # 状态数据逻辑
    └── types/                               # TypeScript类型定义
        ├── servers.d.ts                     # 服务器类型定义
        ├── config.ts                        # 配置类型定义
        ├── login.ts                         # 登录类型定义
        └── shims-vue.d.ts                   # Vue模块声明

快速开始

环境要求

  • Java 11+ (推荐JDK 11)
  • Node.js 14+npm 6+
  • Python 3+ (客户端)
  • Maven 3.6+ (如需重新编译)

1. 后端服务部署

方式一:使用预编译JAR包

  1. 进入服务端目录:
cd Status-Server
  1. 配置服务器信息,编辑 server_config.json
{
  "loginInfo": {
    "username": "admin",
    "password": "admin123"
  },
  "servers": [
    {
      "username": "server1",
      "name": "服务器1",
      "type": "VPS",
      "location": "北京",
      "password": "password123",
      "region": "CN"
    }
  ]
}
  1. 启动服务端(占用8080端口):
java -jar target/server-status-1.1.1.jar
  1. 后台运行:
nohup java -jar target/server-status-1.1.1.jar &

方式二:从源码编译

  1. 编译项目:
cd Status-Server
mvn clean package
  1. 运行编译后的JAR包:
java -jar target/server-status-1.1.1.jar

服务端可选配置

  • 自定义配置文件:
java -jar server-status-1.1.1.jar --server.config=custom_config.json
  • 自定义Netty端口(默认48084,需与客户端配置一致):
java -jar server-status-1.1.1.jar --netty.server.port=48085
  • 自定义Web端口(默认8080):
java -jar server-status-1.1.1.jar --server.port=8081

2. 前端部署

开发环境运行

  1. 进入前端目录:
cd Status-Web
  1. 安装依赖:
npm install
  1. 启动开发服务器:
npm run serve
  1. 访问 http://localhost:8082或者 http://localhost:8082/admin管理端

生产环境部署

  1. 构建生产版本:
npm run build
  1. dist 目录内容部署到Web服务器(如Nginx)

  2. Nginx配置示例:

server {
    listen 80;
    server_name your-domain.com;
    root /path/to/dist;
    index index.html;
    
    # 前端路由支持
    location / {
        try_files $uri $uri/ /index.html;
    }
    
    # API代理(解决跨域)
    location /api/ {
        proxy_pass http://localhost:8080/api/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    
    # WebSocket代理
    location /websocket {
        proxy_pass http://localhost:8080/websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

3. 客户端部署

  1. 区别使用的是linux系统还是windows系统

    linux使用:status_client.pylinux
    windows使用:status_client_windows.py
    
  2. 编辑连接配置:

vim status_client.py	

修改以下配置:

SERVER = "your-server-ip"     # 服务端IP
PORT = 48084                  # 服务端Netty端口
USER = "server1"              # 在server_config.json中配置的用户名或者是在管理端添加的账号密码
PASSWORD = "password123"      # 对应的密码
  1. 运行客户端:
python3 status_client.py
  1. 后台运行:
nohup python3 status_client.py &

功能特性

监控指标

  • 系统信息:CPU使用率、内存使用情况、磁盘使用情况
  • 网络信息:网络流量统计、网络延迟测试
  • 系统负载:1分钟、5分钟、15分钟负载
  • 进程信息:运行进程数、线程数

管理功能

  • 实时监控:WebSocket实时数据推送
  • 节点管理:支持热添加、删除、编辑监控节点
  • 后台管理:Web界面管理服务器配置
  • 多视图展示:支持卡片视图和表格视图
  • 响应式设计:支持移动端访问

访问地址

  • 主监控页面http://your-domain/
  • 管理后台http://your-domain/admin
  • 默认账号密码server-status/server-status
  • 登录页面http://your-domain/login

默认管理员账号密码在 server_config.json 中配置。

开发说明

后端开发

  • 主要业务逻辑在 service 包中
  • Netty网络处理在 handler 包中
  • WebSocket处理在 controller/ws 包中
  • 数据模型在 model 包中

前端开发

  • 使用Vue 3 Composition API
  • TypeScript提供类型安全
  • 组件化开发,可复用性强
  • 使用Semantic UI提供美观界面

客户端开发

  • 纯Python实现,无外部依赖
  • 支持Linux系统监控
  • 可扩展自定义监控项

故障排除

常见问题

  1. 客户端连接失败

    • 检查服务端是否正常运行
    • 确认端口配置是否一致
    • 检查防火墙设置
  2. 前端无法获取数据

    • 检查后端API是否正常
    • 确认WebSocket连接是否建立
    • 检查浏览器控制台错误信息
  3. 编译错误

    • 确认Java版本是否为11+
    • 确认Node.js版本是否为14+
    • 清理缓存重新安装依赖

About

ServerStatus 服务器监控系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published