我做了一个用来监控服务器的桌面小摆件

什么是 Topuino

Topuino 是我 DIY 的一个桌面小摆件,可以实现通用服务器或计算机的数据监控,包括 CPU 占用、RAM 占用、两个硬盘的可用空间、硬盘读写速度、网络 IO 速率。

为什么叫 Topuino

在 Linux 系列服务器上,我们通常使用 top 命令查看 CPU 内存占用,我最初的设想也是将 top 命令实物化,这就是 Topuino 中 Top 的由来。

在选型的时候,为了兼顾开发效率和成本,我选用了大名鼎鼎的 ESP8266 单片机,配合了 Arduino 开发框架,Arduino 则是 Topuino 中 uino 的由来。

Topuino 有哪些亮点

先看图解:

  1. 我觉得它挺好看,哑光黑的 PCB 底板富有科技感,红绿蓝三色 LED 层次分明,指示性强;
  2. 显示的参数满足大部分的需求,刷新率为 1 秒,CPU、内存、磁盘占用以百分比表示在柱状图上,磁盘、网络 IO 各以四位数码管显示,配合 KB、MB 单位显示,可以表示 0KB - 9999MB /s 的速率;
  3. 配置、操作方便。在需要监控的服务器上只需要跑一个 python 脚本即可;Topuino 首次上电后支持用手机或任何支持 Wi-Fi 的设备连接,并通过浏览器配置。若需要重新配置,通过按键即可恢复;
  4. 使用了通用的 USB-TypeC 接口(后期会做带电池版本);
  5. 成本不高,谁都可以承担。

Topuino 的工作原理

  • 服务器部分很简单,主站使用了 Flask,维护一个数据库,保存着从站(被监控服务器)UUID 与运行参数的映射关系(实际上现在是用 python 的字典简单实现的)。主站接收从站的运行数据,并向 Topuino 回传数据;
  • 服务器从站采用 python 的 psutil 库,获取所有的运行数据;
  • Topuino 硬件部分使用了 ESP-12F 作为 MCU,显示采用 LED 整列和数码管,显示驱动是 TM1638 芯片。

附上原理图:

PCB 打样交给专门的厂家,回来自己焊。

结语

你愿意在办公桌上放一个监控服务器的小摆件吗?至少,我做出来之后,很喜欢,就像看着一只猫一样。

另:ESP8266 的代码初步开源在 https://github.com/Villivateur/Topuino ,供大家参考。服务器端代码因为太简单且写得太丑,以后再说吧~~