全网拓扑自动发现与服务器全维度监控的技术实践
MSRM3是一款基于.NET 10 AOT技术构建的企业级运维平台,单文件约30MB,无需数据库和环境依赖。核心能力包括:基于SNMP分层探测的全网拓扑自动发现(实测473台设备、467根连线);跨平台服务器全维度监控(Linux/Windows,覆盖CPU/内存/磁盘/TCP/进程/服务/SSL证书);基于拓扑关系的IP精准定位(穿越7层设备约1分钟);WebGL 3D物理拓扑(建筑-楼层-设备
MSRM3:全网拓扑自动发现与服务器全维度监控的技术实践
一、背景
在企业网络运维中,两个问题长期存在:一是网络拓扑难以快速获取,二是网络设备与服务器监控相互割裂。
传统方案通常需要手动绘制拓扑图,或依赖LLDP/CDP协议逐台采集邻居信息。服务器监控则往往单独部署一套系统,与网络拓扑没有关联,故障排查时需要在多个平台间切换。
MSRM3是一款基于.NET 10 AOT技术构建的运维平台,单文件交付(约30MB),无需数据库和环境依赖,同时支持网络设备监控与服务器主机监控。本文从技术实现角度,介绍其核心功能模块。

二、全网拓扑自动发现:基于SNMP的分层探测机制
2.1 传统方式的局限
常见的拓扑发现方法有两种:
- 基于LLDP/CDP:需要设备开启协议,且只能获取直连邻居,无法发现完整拓扑
- 基于SNMP的ARP/MAC分析:采集量大、计算复杂,多数方案无法自动去重和连线计算
2.2 MSRM3的实现方案
MSRM3采用基于SNMP的分层探索机制,完全不依赖LLDP协议:
- 起点设定:用户指定一台中心设备IP作为探测起点
- ARP分析:采集中心设备的ARP表,提取周边所有IP作为下一轮探测目标
- SNMP扫描:对提取的IP进行SNMP通讯扫描,识别支持SNMP的设备
- 递归采集:对新发现的设备再次采集ARP表,循环执行,圈层深度可配置(如3层)
- 去重与连线计算:自动去重后,通过内置算法计算设备间的连接关系
2.3 实测数据
在锐捷SDN大二层架构网络中(核心设备N18000,汇聚与接入设备均为二层透传模式):
| 阶段 | 操作 | 数据量 |
|---|---|---|
| 核心ARP扫描 | 采集核心设备ARP表 | 发现21,361个IP |
| 首轮SNMP扫描 | 对2万+IP发起SNMP通讯 | 463台设备响应,发现2,844个新IP |
| 次轮SNMP扫描 | 对2,844个新IP再次扫描 | 新增9台设备,发现22个新IP |
| 第三轮扫描 | 无新增设备 | 结束 |
最终结果:识别473台设备,自动计算生成467根连接线,拓扑图按核心层-汇聚层-接入层自动排布。

三、服务器全维度监控:跨平台Agent架构
3.1 覆盖范围
MSRM3支持Windows x64、Linux x64、Linux ARM64三大架构,可监控的服务器指标包括:
| 维度 | 具体指标 |
|---|---|
| 基础硬件 | CPU核心数/使用率、物理内存/虚拟内存总量及占用率 |
| 磁盘存储 | 磁盘IO(IOPS/读写次数/平均延时)、分区容量/已用/空闲/使用率 |
| 系统运行 | 系统负载(1/5/15分钟)、总进程数、总线程数 |
| 网络状态 | TCP监听数/已连接数/握手数/等待关闭/重传率 |
| 网络流量 | 收发比特率、收发包转发率、接口状态 |
| 业务层 | 系统服务状态、指定进程(新增/退出/重启/PID变化)、TCP端口存活、Web存活、SSL证书有效期 |
3.2 接入流程
前端配置(Windows/Linux一致):
- 拓扑空白区新建辅助设备
- 双击进入编辑模式,点击“升级为通用主机设备”
- 选择操作系统类型(Windows/Linux)
代理部署:
- Windows:下载代理压缩包,解压后双击代理控制台,两个配置项均选“是”(允许自动更新 + 注册为系统服务)
- Linux:解压后对照README执行两条命令完成安装启动
3.3 数据采集机制
- 采集频率:核心指标默认每分钟自动更新
- 历史存储:开启性能记录后,持续记录CPU、内存、虚拟内存等历史数据
- 趋势分析:支持多指标叠加对比图表,可缩放拖拽回溯任意时间点
3.4 业务层监控细节
进程监控:可监测指定进程的新增、退出、重启及PID变化,按需选择仅记录状态或触发告警。
TCP端口监控:加载本机TCP监听列表后,选中业务对应套接字即可快速添加监控,实时监测端口存活状态。
SSL证书监控:填入HTTPS站点的URL,系统同步监控证书有效期,可设置剩余指定天数每日提醒,避免证书过期导致的业务中断。

四、IP精准定位:基于拓扑关系的逐跳查询
4.1 传统手动定位流程
定位一个IP所在的交换机端口,传统方式需要:
- 登录核心交换机,查询ARP表获取MAC地址
- 查询MAC表获取端口
- 查询LLDP/CDP获取邻居设备IP
- 登录邻居设备,重复2-3步
- 循环直至某端口无邻居设备
在多层网络架构中,此流程需重复6-7次,单次定位耗时10-20分钟。
4.2 MSRM3的自动化方案
MSRM3的实现逻辑:
- 用户选择起点设备,右键选择“从此设备出发全网定位IP或MAC”
- 输入目标IP,系统启动定位流程
- 通过SNMP采集当前设备的ARP表、MAC表、路由表
- 解析目标地址对应的端口
- 若目标不在当前设备,结合已构建的拓扑关系定位下一跳设备
- 递归执行3-5步
- 实时记录并展示途经设备及互联端口
4.3 实测对比
在穿越7层设备的复杂网络场景中:
- 手动定位:约20分钟
- MSRM3定位:约1分钟
结果完全一致。

五、3D物理拓扑:空间化网络管理
5.1 解决的问题
传统2D拓扑图无法反映设备的物理位置——设备在几号楼、几层、几号机柜,无从得知。故障排查时仍需要结合工单或人工记忆。
5.2 实现方式
MSRM3的3D拓扑基于WebGL渲染引擎实现:
底图处理:
- 上传园区平面图作为底图
- 通过比例校准功能(内置49个设备立方体模型作为参照)调整底图与实际尺寸的比例关系
建筑建模:
- 沿底图建筑轮廓打点绘制多边形
- 设置地上/地下楼层数及建筑总高度
- 系统自动生成楼板结构
设备布放:
- 建筑内布放:选中建筑→设置建筑内设备布局→从左侧设备分组中选择设备→在楼层平面图上点击布放
- 室外布放:在地面标记点→选择设备→添加到当前位置
链路渲染:
- 系统自动根据2D拓扑逻辑关系生成立体彩色线条
- 建筑默认为半透明材质,避免遮挡内部设备和链路
5.3 交互功能
- 视角:360度旋转、俯视/平视切换、穿透地面查看地下空间
- 定位:设备搜索(名称/IP/MAC/描述)自动高亮并调整视角
- 告警联动:点击告警的“定位设备”自动跳转至故障设备位置
5.4 性能支撑
- WebSocket长连接实时推送设备状态
- 设备ID与3D模型一一映射,状态更新毫秒级响应
- 射线检测技术实现鼠标交互

六、监控数据存储与告警机制
6.1 数据采集策略
MSRM3采用分层采集策略:
- 基础性能数据(CPU、内存、分钟级流量):每分钟定时SNMP查询写入存储
- 秒级实时流量:通过高频请求获取,平衡实时性与系统资源占用
6.2 历史数据回溯
- 开启性能记录的指标可查看多维度趋势图
- 图表支持缩放、拖拽回看任意时间节点
- 多个相关指标可同图叠加对比
6.3 阈值告警配置
告警触发条件支持灵活配置:
- 指标类型:CPU/内存使用率、端口状态变化、流量阈值等
- 持续时长:如“连续3分钟内平均值超过70%”
- 阈值填写方式:纯数字、带单位数字(如500K、0.5兆)、百分比(如85%)
6.4 防抖机制
采用时间轮询延迟推送策略:故障及时恢复则终止推送,超时未恢复才触发告警,避免瞬时波动导致无效告警。
6.5 存储扩展
默认内置轻量存储引擎,针对超大规模网络或长周期审计场景,可选启用TDengine国产时序数据库,通过存储接口抽象层实现无缝切换。
七、网络工具集:集成化运维辅助能力
MSRM3在Web端集成了多个运维工具,无需安装第三方软件:
| 类别 | 工具 | 功能说明 |
|---|---|---|
| 配置生成 | 批量脚本生成 | 按设定规律生成多个设备配置 |
| 网络检测 | Ping/TCP延时测试 | 检查设备响应速度 |
| 网络检测 | 端口扫描 | 指定IP、端口范围、并发数,快速获取开放端口 |
| 网络检测 | DNS解析 | 指定DNS服务器进行各类记录查询 |
| 网络检测 | SNMP采集测试 | 指定团体名、OID范围,检验设备SNMP响应 |
| 数据处理 | IP计算器 | 计算IP范围、主机、广播地址、通配符掩码 |
| 数据处理 | 文本对比 | 精确到每行每个字符的差异比较 |
| 辅助工具 | 进制转换/编码加解密/时间戳转换/二维码生成 | — |
这些工具全部运行在服务端,前端仅做交互展示,不依赖本地环境。
八、日志管理:Syslog与SNMP Trap集成
MSRM3内置了Syslog和SNMP Trap接收服务:
技术实现:
- SNMP Trap:UDP 162端口异步监听,自研解码器实现OID结构化提取
- Syslog:UDP 514端口监听,自研引擎匹配RFC标准拆分日志字段
功能特性:
- 通过IP映射表关联拓扑设备ID
- 支持多维度筛选、全文检索
- 设备性能记录、端口流量记录统计分析
- 可指定时间范围清理历史数据
九、部署与迁移
9.1 Windows部署
- 系统要求:Windows 10 / Server 2016及以上(x64架构)
- 操作:双击主程序 → 设置Web端口(如
*:80或*:8080)→ 浏览器自动打开管理界面 → 创建管理员账户 - 服务注册:Web管理界面【系统设置】→【注册为系统服务】,实现开机自启
9.2 Linux部署
- 系统要求:glibc ≥ 2.28,支持x86_64和ARM64架构
- 兼容性:Debian 10、Ubuntu 19、CentOS 8、银河麒麟V10 SP1、统信UOS V20等
- 操作:
wget下载主程序 →chmod +x→ 执行 → 设置Web端口 → 浏览器访问服务器IP → 创建管理员账户 - 服务注册:控制台一键注册为systemd服务
9.3 迁移操作
- 停止旧机器MSRM3服务
- 卸载服务(
/u参数或SC DELETE命令) - 打包备份:主程序 +
*.dat配置文件 - 新机器解压部署
- 注册系统服务
配置文件(MSRM3Base.dat)必须保留,日志文件可按需选择是否保留。
十、技术演进路线
MSRM系列自2010年启动开发,关键节点:
| 时间 | 版本/功能 | 技术要点 |
|---|---|---|
| 2010.09 | MSRM | 自动化采集设备信息与端口流量 |
| 2011.11 | MSRM2 | 数据采集服务+网站服务+客户端三层架构 |
| 2020.03 | MSRM3测试版 | HTML5-SVG动态拓扑、实时流量可视化 |
| 2020.07 | 微信告警推送 | 多通道告警 |
| 2021.09 | 运维工具集成 | 端口扫描、批量脚本、OLT设备适配 |
| 2022.10 | 前端重构 | React 18 + Ant Design 4.x |
| 2023.10 | 日志服务 | Syslog + SNMP Trap集中管理 |
| 2024.11 | 数据清理机制 | 智能数据保留策略 |
| 2025.09 | AOT重构版 | .NET 9 AOT,全平台单文件 |
| 2025.11 | .NET 10升级 | 自研SNMPv3编解码模块 |
| 2025.12 | 3D拓扑 | WebGL三维场景构建 |
| 2026.01 | 零代码大屏 | 可视化大屏编辑器 |
| 2026.03 | TDengine集成 | 时序数据库扩展 |
| 2026.05 | 服务器全维度监控 | 主机Agent + 自定义监控 |
结语
MSRM3在30MB的单文件体积内,实现了网络设备监控与服务器监控的统一,涵盖了拓扑自动发现、IP精准定位、3D可视化、多维度告警、日志管理、集成化工具集等企业运维核心能力。
其技术特点可概括为:
- 基于SNMP的分层探测机制:不依赖LLDP,适配更广泛的网络环境
- 跨平台Agent架构:统一纳管Linux/Windows服务器
- 空间化运维:3D拓扑实现物理位置与网络状态联动
- 弹性存储:内置引擎与TDengine可选切换
- 全栈自研:从协议解析到前端渲染,无开源依赖
对于正在评估网络运维方案的技术团队,MSRM3的技术架构和功能覆盖值得参考。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)