Skip to content

alany-dev/NodeMonitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NodeMonitor

NodeMonitor 是一个轻量高效的节点性能监控系统,专注于收集、传输和存储服务器的关键性能指标(CPU、内存、磁盘、网络等),基于时序数据库优化存储与查询,适用于分布式节点监控场景。

功能特点

  • 多维度监控:覆盖 CPU 负载/软中断/状态、内存使用、磁盘 I/O、网络流量等核心指标
  • 高效通信:基于 gRPC 实现客户端与服务端的低延迟数据传输
  • 时序优化存储:使用 InfluxDB 存储监控数据,支持自动降采样、数据保留策略,优化时序查询性能
  • eBPF 增强:通过 eBPF 程序高效采集网络监控数据
  • 模块化设计:各功能模块解耦,易于扩展和维护

环境要求

  • 操作系统:Linux(内核版本 ≥ 5.6,需支持 eBPF 和内核模块编译)
  • 依赖工具
    • CMake ≥ 3.21
    • g++ ≥ 9(支持 C++17)
    • Protobuf ≥ 3.0
    • gRPC
    • libbpf & bpftool(用于 eBPF 程序编译)
    • Clang(编译 eBPF 程序)
    • Docker & Docker Compose(启动 InfluxDB)

快速开始

1. 克隆仓库

git clone <仓库地址>
cd NodeMonitor

2. 启动 InfluxDB

通过 Docker 快速部署 InfluxDB 时序数据库:

cd docker
docker-compose up -d

InfluxDB 配置(来自 docker-compose.yaml):

  • 地址:http://127.0.0.1:8086
  • 初始用户:root,密码:a123456a
  • 组织:star-cs,存储桶:node_monitor

3. 编译项目

# 创建构建目录
mkdir build && cd build
cmake ..
make -j$(nproc)

编译产物将输出到 bin/(可执行文件)和 lib/(库文件)。

4. 运行监控系统

启动服务端(接收并存储监控数据)

cd bin
./node_server

服务端默认监听 0.0.0.0:50051,接收客户端发送的监控数据并写入 InfluxDB。

启动客户端(采集并发送监控数据)

cd bin
./node_client

客户端将采集本地节点的性能指标,每 3 秒通过 gRPC 发送到服务端。

项目结构

NodeMonitor/
├── proto/              # Protobuf 协议定义(监控数据结构、RPC 接口)
├── rpc/                # gRPC 客户端/服务端实现
├── influxdb/           # InfluxDB 客户端及数据模型定义
├── node_server/        # 服务端代码(接收数据、写入数据库)
├── node_client/        # 客户端代码
│   ├── src/proc/       # 基于 /proc 采集内存、磁盘等指标
│   ├── src/ebpf/       # eBPF 网络监控程序
│   └── src/kmod/       # CPU 监控内核模块
├── docker/             # Docker 配置(InfluxDB 部署)
└── CMakeLists.txt      # 项目编译配置

监控指标说明

类别 主要指标
CPU 使用率、负载均值(1/3/15分钟)、软中断次数、用户态/内核态时间占比
内存 总内存、空闲/可用内存、缓存/缓冲区、活跃/非活跃内存、使用率
磁盘 读写次数、字节数、IOPS、平均延迟、使用率
网络 收发字节数/包数、速率、丢包数

技术栈

  • 开发语言:C++17
  • 数据序列化:Protobuf 3
  • RPC 框架:gRPC
  • 时序数据库:InfluxDB 2.4
  • 网络监控:eBPF
  • 构建工具:CMake
  • 容器化:Docker

注意事项

  • 内核模块编译需匹配当前系统内核版本,详见 node_client/src/kmod/ 目录说明
  • eBPF 程序依赖 clangbpftool,缺失时需先安装:sudo apt install clang bpftool
  • InfluxDB 数据保留策略默认配置:实时数据保留7天,降采样后数据保留30天/1年(可在 influxdb/schema.md 调整)

许可证

MIT

About

项目专注于节点级系统监控,能够实时采集CPU(负载、软中断、状态)、内存、网络、磁盘等关键性能指标,适用于高性能计算环境和分布式系统监控场景。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors