/PerInspector

基于C++实现的一款分布式Linux性能监控器,使用gRPC框架对CPU状态、系统负载、软中断、内存信息以及网络接口状态进行监控,数据每三秒刷新一次与top默认刷新间隔一致;通过dockerfile构建整个项目环境,并使用stress工具进行模拟压测,分析相应时刻服务器的cpu状况和中断状况

Primary LanguageMakefileApache License 2.0Apache-2.0

PerInspector

基于使用C++实现的分布式Linux性能分析监控系统,通过gPRC框架构建client与sever:cilent生成库供monitor模块和display模块调用并对启用server的服务器进行性能分析和监控, 为模拟出真实性能问题使用stress工具进行压测

特点

  • 分布式的性能监控系统,支持CPU状态、系统负载、软中断、内存信息以及网络接口状态的监控;
  • 使用dockerfile指定相应的cmake,grpc,proto等源码和依赖,构建整个项目环境,易于在多台服务器上部署环境,并编写容器操作的脚本指令,易于启动操作项目所依赖的环境。
  • 使用工厂方法实现monitor模块,监控相应的CPU状态、系统负载、软中断、内存信息、网络接口状态,易于为之后扩展更多系统监控;
  • 通过grpc框架,构建出相应的server, client,并考虑为了降低耦合性,项目每个模块相互独立,可拆解,只通过调用grpc服务来进行远程连接;
  • 使用protobuf序列化协议,构建项目的数据结构并创建IDL文件;
  • 为了模拟出真实的性能问题,使用stress工具进行模拟压测,分析相应时刻服务器的cpu状况和中断状况。

环境要求

  • 虚拟机Ubuntu镜像不要低于18.04
  • 选择net模式,推荐硬盘大小设置为30-40G
  • 建议在Ubuntu git clone 代码,不推荐在windows上下载再进行拷贝,windows会改变代码中可执行文件的权限和格式

项目的启动过程

  • git 环境配置
  • Ubuntu git 拉取项目代码
  • 安装docker
  • 通过项目中的docker文件,构建项目镜像
docker build --network host -f base.dockerfile .
  • 启动并进入docker容器(进入项目docker/scripts目录)
./monitor_docker_run.sh
./monitor_docker_into.sh
  • 编译代码
 cd cmake
 cmake ..
 make -j6
  • 项目运行

服务器端:

cd rpc/manager/server
./server

On a different terminal, run the monitor:

cd ~/work/private-node/docker/scripts
./monitor_docker_into.sh
cd work/cmake/test_monitor/src
./monitor

客户端:

cd ~/work/private-node/docker/scripts
./monitor_docker_into.sh
cd work/cmake/display_monitor
./display 

分布式监控流程

image

项目展示

因为个人计算机性能有限,多开虚拟机有明显卡顿录屏效果不好,这里以监控本地服务器为例,

  • __监控效果展示:

image

image

致谢

@gRPC_QuickStart:gRPC快速上手

一些帮助很大的博客帖子

@黄树超:Linux中关于ldconfig的博客

@美团技术团队:关于序列化和反序列的文章

@sparkdev:Linux stress命令基本用法

以及Abseil、cmake、protobuf、gRPC相关的官方build文档

@Abseil:Abseil CMake Build Instructions

@protobuf:protobuf CMake Configuration

@gRPC:gRPC build from source

TODO

  • 界面的美化,还有许多性能信息可以用来监控,部分信息如软中断,使用排序可以看的更直观一点