![]()
每个自建服务器的人,都经历过那个阶段:从第一个Docker容器开始,觉得自己像个真正的系统管理员。等容器数量超过10个,才发现自己不过是在玩打地鼠——哪个服务挂了、哪块磁盘满了、哪个进程在吃内存,全靠随缘刷新。
市面上不缺监控方案。Grafana配Prometheus是行业标配,功能全到能画出一幅《清明上河图》式的系统拓扑。但这套组合对低配置服务器来说,就像让五菱宏光拉集装箱——不是不能跑,是跑起来全车都在响。Uptime Kuma轻量些,但它只管容器死活,磁盘、内存、网络流量一概不问,还得手动把每个容器登记造册。
监控工具的悖论在于:要么重到拖垮被监控的系统,要么轻到只能回答"还在吗"这种问题。
一个被名字耽误的瑞士军刀
Glances这个名字听起来像系统自带的任务管理器,实际却是个跨平台的监控终端。它用Python写成,安装包不到3MB,却能同时盯着CPU、内存、磁盘、网络、Docker容器、甚至传感器温度。作者Nicolas Hennion把它设计成了"一眼扫完"的模式——所有关键指标挤在一个终端窗口里,像机场航班信息屏那样滚动更新。
对Docker用户来说,Glances有个隐藏开关:启动时加上--docker参数,它会把所有运行中的容器单列一块。每个容器的CPU占用、内存消耗、I/O读写、网络流量,实时刷新。不需要配置文件,不需要数据库,不需要Web界面。SSH进服务器,敲一行命令,整个系统的脉搏就摊在眼前。
这种设计哲学很产品经理:先解决"看见"的问题,再谈"看懂"和"预测"。
![]()
Portainer也有类似功能,但它是个Web应用,得占一个端口、配一套认证。Beszel更现代,有漂亮的仪表盘,却需要Agent和Hub的架构。Glances的反其道而行在于——它假设用户已经坐在终端前了,为什么不直接在这里看完?
实时性是怎么被实现的
Glances的刷新频率默认1秒一次,数据来源是psutil库直接读取/proc和/sys。没有中间层缓存,没有聚合计算,原始数据流从内核到终端。这种粗暴的实时性在容器场景下特别有用:当你刚部署完一个服务,想确认它有没有疯狂写日志把磁盘撑爆,每一秒的延迟都是焦虑。
对比Grafana的15秒抓取间隔,Glances像听诊器,Grafana像体检报告。前者告诉你"现在心跳多少",后者告诉你"过去一小时的心率变异性"。两种工具没有高下,但很多人其实只需要听诊器。
Docker监控在Glances里被拆成两张表。一张是容器列表,显示名称、状态、CPU%、MEM%、I/O读写。另一张是容器详情,展开能看到每个容器的网络接口流量、挂载卷的使用情况。作者没有做成树形结构或者折叠面板,而是让信息平铺——终端屏幕够宽的话,所有数据同时可见。
这种信息密度在GUI时代显得复古,但在SSH场景下是效率最优解。
有个细节很有意思:Glances会用颜色标记异常。CPU超过70%变黄,超过90%变红;内存、磁盘同理。这种设计来自90年代系统管理员的肌肉记忆——top命令也是这么干的。但Glances把阈值做成了可配置项,写进glances.conf就能自定义。对跑HomeLab的人来说,可以把磁盘告警线从90%调到80%,留足清理日志的时间。
![]()
为什么老手会回头用它
作者提到一个场景:在低配服务器上,Grafana+Prometheus的组合本身就要吃掉几百MB内存。对于2GB内存的树莓派或者退役笔记本来说,这是不可承受之重。Glances运行时内存占用约50MB,CPU占用几乎可以忽略。它不会成为压垮骆驼的最后一根稻草。
另一个被低估的功能是导出模式。Glances可以把数据推送到InfluxDB、Prometheus、MQTT,甚至直接写CSV。这意味着它既能当独立工具用,也能当数据采集器,喂给更重的分析平台。很多人先用Glances应急,等服务器升级后再迁移到完整监控栈,配置可以无缝继承。
Uptime Kuma的痛点在于"每个容器手动添加"。Glances自动发现Docker守护进程里的所有容器,包括刚启动的。这种"零配置"体验对频繁实验新服务的人来说很友好——今天试个RSS阅读器,明天搭个密码管理器,不用每次去仪表盘里点"添加监控项"。
工具的选择最终是工作流的匹配。有人需要7×24的告警和SLA报表,有人只需要SSH进去时扫一眼确认一切正常。
Glances的局限也很明显。没有历史数据,无法回溯三天前的CPU峰值;没有告警通知,不能半夜发短信告诉你服务挂了;界面停留在终端,想在手机上看得配额外的Web代理。这些设计取舍把它框定在"现场排查工具"的定位上,而非"无人值守监控系统"。
但作者认为这正是它的价值所在。监控领域有个反模式:为了"完整"而堆叠工具,最后维护监控系统本身成了负担。Glances的克制在于承认自己的边界——它做好"实时全景"这一件事,其他交给专门的工具。
项目托管在GitHub上,安装一条pip命令搞定:pip install glances[docker]。带Docker支持需要额外装个包,文档里写得清楚。对于已经用Docker的人,这步操作没有学习成本。
你在服务器上跑多少个容器时,开始觉得需要专门工具盯着它们?是5个、15个,还是等到某个凌晨被告警短信炸醒之后?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.