功能

NetPulse 能看到的一切

应用监控内容的完整清单,以及技术选择背后的理由。

功能清单

从网络到界面

NetPulse 从你的路由器读取数据并显示在一个屏幕上。轮询是只读的;任何写入操作都是显式的,并有回滚保护。

健康面板

0 到 100 的评分,浓缩了延迟、丢包、运行时间和温度。旁边是实时 WAN 吞吐量对照你签约的套餐、平均延迟和已连接设备数。

  • 健康评分 0-100,按路由器加权计算
  • WAN 吞吐量、今日峰值、24 小时均值和总量
  • 通过 SSE 每约 5 秒实时更新
可用

实时拓扑

从网桥 FDB 构建的语义地图(可用时加 LLDP)。绘制路由器、交换机、虚拟机管理器、嵌套容器、有线和无线客户端以及 WireGuard 隧道。当推断无法得知某物插在哪里时,可手动把任意设备锚定到确切的路由器和端口。

  • 托管与推断交换机的推断
  • 虚拟机管理器及可见的嵌套容器
  • 流量动画与链路状态
  • 编辑模式:拖动节点并保存你的布局
可用

设备

每个客户端按主机名模式和 OUI 自动分类,附频段、dBm 信号、首次出现时间,以及它所通信的路由器或端口。

  • 按类型分类:电脑、手机、IoT、摄像头、游戏机……
  • 频段(2.4 GHz / 5 GHz / 有线)与信号
  • 在线/离线状态与首次出现
可用

路由器设备群

所有路由器的设备群总览,包含 CPU、内存、温度、运行时间、已连接客户端和 24 小时负载 sparkline。通过 SNMP 轮询的托管交换机也是一等公民,有自己的流量历史和客户端。

  • 每台路由器一张卡片,带角色(网关 / AP / 交换机)
  • 暂停设备而不删除:不轮询、不告警,历史保留
  • SNMP 交换机上的 LLDP-MIB:没有 OpenWrt 也有真实上行链路
可用

Agent 与升级

agent 是原生 OpenWrt 软件包(.ipk 和 .apk,从 mips 到 x86/64),带 procd init、UCI 配置和 watchdog。服务器可直接从 UI 安装和更新整个设备群,并原地轮换 token,无需重新安装。

  • 从服务器 UI 安装 agent
  • agent 过期警告与升级按钮
  • 重新布防与 agent 实时状态
  • owut check:查看你的路由器是否有固件升级
  • 从 UI 更新固件,仅限原生 OpenWrt
可用

WiFi 与漫游

AP 与客户端之间的信号矩阵,漫游事件保留 30 天,以及重新锚定粘滞客户端或将它们踢出某个 AP 以让它们选择更好的 AP 的工具。

  • 关联/断开关联与漫游事件
  • 按信号给出重新锚定建议
  • 从 DAWN 到 usteer 的 steering 迁移
可用

Wi-Fi 信道分析

每个射频的真实频谱:每张网络画成频率轴上的钟形曲线,DFS 范围带阴影,外加连续的占用条。你的网络,像空气看到的那样。

  • 逐信道拥堵评分(最佳、中等、拥挤);点击聚焦
  • 你自己的网络永远不会造成拥堵(通过 MAC、SSID 和 dawn/usteer 识别)
  • 只给建议:换不换信道由你在路由器上决定
可用

交换机端口详情

交换机按端口查看:协商速率、流量、错误、链路状态,以及幽灵端口、flapping 或速率下降等特定提醒。

  • 每个端口的流量时间序列
  • 幽灵端口、flapping 和链路下降提醒
  • 交换机前面板
可用

WireGuard

peer 列表、最近的握手、每个 peer 的传输量,以及在拓扑图上绘制的隧道,每个 peer 用 UCI 配置中的真实名称标注。

  • 每个 peer 的状态与距上次握手的时间
  • 每条隧道的累计 RX/TX
  • 从互联网到网关的隧道可视化
可用

AdGuard Home

DNS 查询统计、拦截比例、热门拦截域名以及哪些客户端在使用该过滤器,与网络其余部分并排呈现。

  • 24 小时查询与拦截
  • 热门拦截域名
  • 平均 DNS 延迟
可用

提醒

六个类别,每类可设紧急程度:温度、可用固件、新设备、WireGuard 握手、网络端口和漫游事件。铃铛里有信息流,并有 Web Push 通知。

  • 持久信息流,自动解除
  • 通过 VAPID 的原生 Web Push,无第三方
  • 端口提醒上的操作建议
可用

报告

按路由器和按设备的每日、每周和每月可用性报告。开发中:流量、活动、提醒摘要和导出。

  • 按路由器和设备的可用性
  • 每日、每周和每月视图
  • 计划支持 CSV/JSON 导出
部分 / 开发中

设置

单列布局,带一个随滚动跟随的固定索引:用户与角色、按用户设置的语言、带真实预览的外观、数据阈值、路由器、服务与集成、编排和自动更新。

  • 带角色和 bcrypt 的用户
  • 真实 WAN 测速,从服务器运行
  • 带 changelog 的自动更新
可用

演示模式

DEMO_MODE=1 会启动一个包含 67 台设备的完整示例网络,无需真实路由器。适合在安装前测试界面。

  • 标准 67 设备数据集
  • 与真实模式相同的界面
  • 公开在线演示:demo.netpulse.cloudless.club
可用

LuCI 应用

luci-app-netpulse 将 agent 状态集成到 OpenWrt Web 界面中:procd、UCI、日志、重启和指向主应用的链接。

  • LuCI 中的 agent 状态
  • 重启并重新布防 agent
  • 每个版本都附带 .ipk/.apk 软件包
可用

on-box 模式

如果你没有单独的机器,服务器可以运行在 OpenWrt 路由器本身,带 UCI 配置、TLS pinning 和本地配对。

  • 适用于兼容路由器的静态二进制
  • 原生 UCI 配置
  • 带 SPKI pinning 的自签名证书
  • UI 可选 HTTPS:你的证书或自签名
可用

AI 助手 (MCP)

内置于 /mcp 的 MCP 服务器:你的 AI 助手通过 HTTP 用 API 令牌查询机队状态、设备、告警和拓扑图。基于最近一次轮询的只读工具。

  • 机队状态、路由器健康、设备、WireGuard 对端、AdGuard、拓扑和告警
  • 仅接受 API 令牌(绝不用会话 cookie),带速率限制
  • 每次工具调用都有审计日志
可用

物理机架

画出你的 19 英寸机架,按 U 高度摆放路由器、交换机和服务器,NetPulse 会根据检测到的拓扑提议布线,包括路由器之间的上行链路。非常早期的预览。

  • 机架与挂载使用真实 U 高度和 19 英寸比例
  • 从 FDB 提议布线;导入的线缆标记为检测到
  • 默认关闭:在设置、Labs 中开启
Labs(实验)

NetPulse 与 Home Assistant

NetPulse 将设备群状态发布到 MQTT broker,Home Assistant 自动发现:无需手动定义,它就会创建设备和实体。一切都在你的局域网内完成。

  • 整个安装
  • 每台路由器,独立呈现
  • 从 Home Assistant 控制路由器
可用 Home Assistant
技术决策

为什么这样构建

NetPulse 不是营销产品:它是一把为解决真实问题而打造的个人工具。以下是收到问题最多的决策。

为什么是 OpenWrt / GL.iNet?

NetPulse 诞生于一个有四台路由器的家庭网络:一台 GL.iNet Flint 2 作为网关,三台二手小米 AX6。OpenWrt 让你能刷写、检查和掌控硬件。没有它,就无法读取喂养这个应用的 FDB、iwinfo 或 iw 事件。

为什么用 Go + 内嵌 SQLite?

单个静态二进制,禁用 CGO。目标机上不需要 C 工具链,更新通过原子替换完成,用户、会话和时间序列存储在带 WAL 的本地 SQLite 中。modernc.org/sqlite 让它完全静态。

为什么轮询是只读的?

服务器生成自己的 ed25519 密钥对,你在每台路由器上授权公钥。此后轮询只读取:ubus、/proc、iwinfo、bridge fdb、wg show。写入操作(保留 IP、封禁设备、编排服务、刷写固件)始终是显式的、由管理员触发,并以快照和自动回滚来应用。

为什么用 systemd 而不是 Docker?

NetPulse 监控的是网络;它不需要容器来做这件事。一个带简单服务文件、journald 日志和自动重启的沙箱化 systemd 单元更轻量,也更容易在小型 LXC 或 VM 上运维。

为什么 PWA + SSE?

界面是使用 Vite 和 Tailwind 的 React SPA,可作为 PWA 安装。后端通过 SSE 每约 5 秒推送实时事件。没有持续轮询,也没有 WebSocket:SSE 是单向的,会自动重连,在家庭代理后面也能良好工作。

为什么从 DAWN 换到 usteer?

我们一开始用 DAWN 做 WiFi steering,因为它是 OpenWrt 社区里最显眼的选项。在真实网络中我们发现,它可能连锁地拒绝认证、意外踢掉客户端,并在 peer-to-peer 模型下留有未修复的 bug。usteer 是 OpenWrt 官方守护进程,功能相当且模型更稳定。向 usteer 的迁移正在进行,并保持相同的漫游可见性。

NetPulse 不是什么

对范围保持诚实很重要。NetPulse 并不想成为:

  • 像 Zabbix、LibreNMS 或 PRTG 那样的企业级 NMS。它不能扩展到数千个节点,也不支持数千个 SNMP MIB。
  • 云端方案。没有遥测、集中式面板或原生手机应用。
  • 大规模自动配置工具。编排确实存在,但它是可选的,且按计划进行。
  • 通用路由器方案。它只在 OpenWrt / GL.iNet 上测试过;其他固件需要适配。
外观
主题