# rpc_linux_monitor **Repository Path**: B_CK/rpc_linux_monitor ## Basic Information - **Project Name**: rpc_linux_monitor - **Description**: linux分布式性能监控软件 开发的初衷:一是为了了解一下rpc和protobuf的使用,二是通过这个软件能够远程监控linux机器实际跑程序时候的性能 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-14 - **Last Updated**: 2025-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RPC Linux Monitor [![Language](https://img.shields.io/badge/Language-C%2B%2B-blue.svg)](https://isocpp.org/) [![Build System](https://img.shields.io/badge/Build-CMake-orange.svg)](https://cmake.org/) [![RPC](https://img.shields.io/badge/RPC-gRPC-brightgreen.svg)](https://grpc.io/) [![UI](https://img.shields.io/badge/UI-Qt-green.svg)](https://www.qt.io/) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) `RPC Linux Monitor` 是一个基于 gRPC 框架的轻量级、跨平台的 Linux 系统性能监控工具。它采用 C/S (客户端/服务端) 架构,允许用户在 Windows 或 Linux 图形化界面上实时监控远程 Linux 服务器的各项性能指标。 ## 演示截图 ![RPC Linux Monitor 运行截图](testImage.png) ## 主要功能 * **CPU监控**: 实时显示 CPU 的总体和各核心的负载、`stat` 信息以及 `softirq` 情况。 * **内存监控**: 监控物理内存和交换空间的使用情况。 * **网络监控**: 实时展示网络设备的上行/下行速率。 * **进程监控**: 查看系统中运行的进程列表和资源占用情况 (top-like)。 ## 项目架构 本项目采用三层架构,由以下几个核心模块组成: * `proto/`: 存放所有 gRPC 服务和消息的 Protocol Buffers (.proto) 定义文件,是所有组件之间通信的契约。 * `rpc_manager/server` (中央服务端): 整个系统的核心中枢。它接收来自 `MonitorAgent` 的数据,并将其缓存、分发给 `displayMonitor`。 * `MonitorAgent` (监控代理端): 一个数据采集客户端,部署在被监控的机器上,负责收集系统信息(CPU, 内存等)并通过 gRPC 发送给中央服务端。 * `displayMonitor/` (图形显示端): 一个基于 Qt 的图形化客户端。它通过 gRPC 从中央服务端获取监控数据,并以图表和列表的形式进行可视化展示。 * `packages/`: 用于存放最终为各个平台打包好的可执行程序和依赖库。 ## 技术栈 * **核心框架**: C++17 * **构建系统**: CMake 3.15+ * **RPC框架**: gRPC & Protocol Buffers * **GUI框架**: Qt5 / Qt6 * **编译器**: GCC/G++ (Linux), MSVC (Windows) ## 环境准备 (Prerequisites) 在编译本项目之前,请确保您的开发环境中安装了以下依赖: 1. **CMake** (版本 >= 3.15) 2. **C++ 编译器** (GCC/G++ for Linux, Visual Studio 2019/2022 for Windows) 3. **gRPC** 及其依赖 (protobuf, absl, c-ares, etc.) 4. **Qt** (版本 >= 5.15) 对于 Windows 用户,强烈推荐使用 `vcpkg` 来管理 C++ 依赖库。 ## 编译与构建 首先,克隆本项目到您的本地机器: ```bash git clone cd rpc_linux_monitor ``` ### Linux 环境 (Ubuntu/Debian) 1. **安装依赖**: ```bash # 更新包列表 sudo apt-get update # 安装构建工具和gRPC, Protobuf依赖 sudo apt-get install -y build-essential cmake libgtest-dev libc-ares-dev libabsl-dev sudo apt-get install -y libgrpc++-dev protobuf-compiler-grpc # 安装Qt开发环境 sudo apt-get install -y qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools ``` *注意: 不同 Linux 发行版的包名可能略有不同。* 2. **编译**: ```bash mkdir build cd build cmake .. make -j$(nproc) ``` 3. 编译完成后,可执行文件将生成在 `build/bin` 或类似目录中。 ### Windows 环境 (Visual Studio + vcpkg) 1. **安装 Visual Studio**: 请从官网下载并安装 Visual Studio 2019 或 2022,并确保已安装 "使用C++的桌面开发" 工作负载。 2. **安装 vcpkg 并集成**: 如果您尚未安装 vcpkg,请按照 [vcpkg 官方文档](https://github.com/microsoft/vcpkg) 进行安装,并执行以下命令进行全局集成: ```cmd .\vcpkg\bootstrap-vcpkg.bat .\vcpkg integrate install ``` 3. **使用 vcpkg 安装依赖**: ```cmd # 对于 64位 系统 vcpkg install grpc:x64-windows protobuf:x64-windows qt5-base:x64-windows ``` *vcpkg 会自动处理所有子依赖项。安装过程可能需要一些时间。* 4. **使用 CMake 生成 Visual Studio 项目**: 打开 "x64 Native Tools Command Prompt for VS",然后进入项目根目录。 ```cmd mkdir build cd build cmake .. -DCMAKE_TOOLCHAIN_FILE=[path-to-vcpkg]/scripts/buildsystems/vcpkg.cmake ``` *请将 `[path-to-vcpkg]` 替换为您的 vcpkg 实际安装路径。* 5. **在 Visual Studio 中编译**: 使用 Visual Studio 打开项目根目录,或者直接打开 `build` 目录下生成的 `.sln` 解决方案文件。然后选择 `Release` 或 `Debug` 配置进行构建。 ## 如何使用 本系统由三部分组成:**中央服务端 (server)**、**监控代理端 (MonitorAgent)** 和 **图形显示端 (displayMonitor)**。请按以下顺序部署和启动。 ### 1. 启动中央服务端 (server) 服务端是数据交换的核心中枢,负责接收代理端发送的数据,并将其转发给显示端。 1. **部署位置**: 您可以将服务端部署在任何一台独立的服务器或PC上(Windows 或 Linux),只要确保代理端和显示端都能通过网络访问到它即可。 2. **启动**: * **Linux**: 解压 `packages/SERVER.zip`,进入目录后执行 `./run.sh`。 * **Windows**: 解压 `packages/server_Windows.zip`,直接运行 `server.exe`。 3. **重要**: 请记下服务端运行机器的 IP 地址,后续步骤将需要用到。 ### 2. 在被监控的机器上启动监控代理端 (MonitorAgent) 代理端是数据采集程序,它必须运行在您**需要监控**的电脑上。 1. **部署**: 将 `packages/MonitorAgentPackage.zip` 解压并拷贝到**被监控**的 Linux 机器上。 2. **配置**: 启动前,需要配置代理端以连接到中央服务端。请查找并编辑其目录下的配置文件(例如 `config.ini`),将服务端的 IP 地址和端口填入。 3. **启动**: 进入程序目录,执行 `./run.sh` 启动代理。 ```bash ./run.sh ``` 代理启动后,会开始收集该机器的性能数据并发送到中央服务端。 ### 3. 启动图形显示端 (displayMonitor) 显示端是数据可视化界面,用于查看监控数据。 1. **部署**: 在您日常使用的电脑上(Windows 或 Linux),解压 `packages/DISPLAYMONITOR.zip` (Linux) 或 `packages/displayMonitor_Windows.zip` (Windows)。 2. **配置**: 与代理端类似,您需要编辑显示端目录下的 `config.ini` 文件,将中央服务端的 IP 地址和端口填入。 3. **启动**: 运行 `displayMonitor` 可执行文件,程序会自动从中央服务端获取并展示数据。 ## 贡献代码 欢迎任何形式的贡献!如果您发现了 bug 或有任何改进建议,请随时提交 Issues 或 Pull Requests。 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) 许可证。