拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Windows系统监控利器:Glances Web模式部署与远程访问实战

做运维这些年Windows 机器的监控一直是个有点尴尬的环节。Linux 那边有 top、htop甚至一整套现成的监控面板Windows 自带的任务管理器功能不算弱但它的使用场景被锁死在“人必须坐在屏幕前”这个前提上。人一离开远程桌面一断你就只能干瞪眼。后来我在一台 Windows 主机上本地部署了开源系统监控工具 Glances把监控页面开成 Web 服务手机、平板、同事的电脑都能通过浏览器直接访问算是真正解决了 Windows 版本的“状态可视化 外部访问”问题。这套流程我前前后后踩了不少坑今天一次性写清楚。凡是手头有 Windows 电脑或服务器想随时掌握 CPU、内存、磁盘、网络状态的人这篇文章都适合照着做。不管你是做运维的、搞开发的还是家里有台机器常年跑下载任务、跑脚本的人这套方案都能用。我会从环境准备、安装部署、Web 模式配置、外部访问一路写到常见问题尽量把能提前填平的坑都填上。1. 为什么选 GlancesWindows 系统监控的短板与补位1.1 Glances 是什么一条命令顶一排工具Glances 是法国开发者 Nicolas Hennion 发起的一个开源项目底层用 Python 编写核心数据采集依赖 psutil 这个跨平台库。它的定位是一个“终端里的全能监控面板”CPU、内存、磁盘、网络、进程、传感器温度、Docker 容器、系统日志等在一个界面里全部展示。最关键的是它自带 Web 服务器模式启动后监听一个端口浏览器打开就是一套可读性很强的监控页面不依赖任何商业产品也不需要额外搭建采集端和展示端。我在 Windows 上第一次跑起来的时候最大的感受是监控这件事终于从“一次性查看”变成了“随时可查”。任务管理器看的是当前那一刻的快照Glances 则是在后台持续采集页面自动刷新想看哪块点哪块。而且它无论是在终端模式还是 Web 模式下运行占用的系统资源都很小对于常年开机的 Windows 机器来说这点开销可以忽略不计。1.2 和 Windows 自带工具相比差在哪很多朋友第一次听我推荐 Glances 时会问Windows 自带的任务管理器、资源监视器不也能看吗确实能看但差在使用场景上。自带工具最大的问题是“只能在本机看”远程桌面断开后你什么都看不到也没法把数据集中起来。工具是否支持远程/Web查看信息丰富度配置成本适合场景任务管理器不支持基础零单机临时查看资源监视器不支持中等零单机短期分析性能监视器不支持强但配置繁琐较高专业性能分析Glances支持 Web 界面强且集中低长期运行 外部访问自带工具还有一个隐藏问题它们没法方便地接入到别的系统。Glances 自带的 RESTful API 可以让你直接用 JSON 格式拿数据想接告警、接大屏、做自动化巡检都很方便。这一点在我后面做内存告警脚本时帮了大忙不用去解析页面上的 HTML直接请求接口就行。1.3 选型前提原生 Python 优先于 Docker在 Windows 上部署 Glances 有两条主流路线一条是直接用 Python 的 pip 安装一条是用 Docker 跑官方镜像。我的建议是如果你只是要监控这台 Windows 机器本身优先用原生安装别一上来就折腾 Docker。原因很直接Docker Desktop 在 Windows 上要依赖 WSL2 或 Hyper-V安装后本身就要吃几百兆内存而 Glances 原生方式只占几十兆。更关键的是Docker 容器默认看到的是容器内部的资源视图想让它采集宿主机的真实指标反而要多做很多透传配置。原生安装就不用纠结这些启动即采集本机数据路径最短也最可控。2. 部署前准备Windows 环境检查与安装实操2.1 Python 版本选择和安装细节Glances 对 Python 版本有一定要求当前主流的 4.x 版本建议用 Python 3.8 以上我这里实际操作推荐 3.10 或更高版本的官方安装包。装新不装旧至少保证后面补插件时不会遇到依赖不兼容的问题。安装时有一个很容易被忽略的选项Add Python to PATH。这个勾选默认是不选的如果你漏了后面在 PowerShell 里敲 python 会提示找不到命令。如果已经装完才发现没勾选最直接的办法是重跑安装包选择 Modify再勾上这一项。也可以手动把C:\Users\你的用户名\AppData\Local\Programs\Python\Python312\Scripts和对应的 Python 安装目录加进系统环境变量。验证环境很简单打开 PowerShell 输入python --version pip --version如果输出版本号环境就绪。如果提示命令不存在大概率是 PATH 没配好先处理这个再往下走不然后面每一步都会卡。2.2 安装 Glances一行命令背后的门道安装命令本身非常简单但有一个 Windows 特有的坑要先说清楚。官方文档里的命令通常是pip install glances[web]这条命令在 cmd 里没问题但是在 PowerShell 里方括号会被当成通配符处理容易报错。所以你在 PowerShell 里执行时必须给整个包名加引号pip install glances[web]glances[web] 会额外安装 Web 模式需要的依赖。如果你想所有插件全部装上可以装 glances[all]但在 Windows 上并不是所有插件都能正常工作比如某些只在 Linux 下提供的传感器数据装不上也没太大影响。我建议按需安装先装 glances[web]后面缺什么再补。装完可以先看一下版本glances --version如果提示找不到 glances回到刚才那一步检查 Python Scripts 目录是否在 PATH 里。这个目录通常在C:\Users\你的用户名\AppData\Local\Programs\Python\Python312\Scripts装完 Python 后它应该是自动加入 PATH 的。2.3 第一次启动先用终端模式确认安装成功直接输入glances正常情况下会进入一个全屏的终端界面从上到下依次是 CPU、内存、磁盘、网络、进程列表等模块顶部还有主机名和系统版本。这个界面本身也很好用按 q 键退出。第一次启动如果能看到这个界面说明底层采集没问题。不过终端模式有个缺点窗口一关监控就停了而且没法从外部访问。所以真正的目标是下一步的 Web 模式终端模式只是用来确认安装是否正常的“体检步骤”。3. 打开 Web 界面参数、配置与认证3.1 Web 模式启动参数详解Glances 的 Web 模式启动很简单glances -w-p 指定端口默认是 61208glances -w -p 61208-B 指定监听地址默认是 0.0.0.0也就是所有网卡都可以访问。如果你想只允许本机访问可以改成glances -w -B 127.0.0.1启动之后浏览器访问 http://localhost:61208就能看到监控页面。页面上可以看到当前机器的 CPU 使用率、每核负载、内存占用、磁盘读写、网络吞吐量以及进程列表。整个页面是自动刷新的不需要手动刷新浏览器。这里有个值得说的细节在 Web 模式下Glances 会同时提供一套 RESTful API默认路径是 /api/4 开头。也就是说你不仅能看页面还能通过 http://127.0.0.1:61208/api/4/mem 拿到 JSON 格式的内存数据。如果你想把自己的监控数据接入告警系统或者大屏这个接口直接能当数据源用。我实际就是用这个接口写了个简单的内存告警脚本省去了解析 HTML 的麻烦。3.2 用配置文件固化启动参数每次启动都敲一长串参数容易出错而且 Windows 命令行窗口一关服务就没了非常不利于长期运行。我建议把参数写进配置文件。Windows 下 Glances 会按顺序查找配置文件常见位置是C:\Users\你的用户名\.config\glances\glances.conf或%APPDATA%\glances\glances.conf。如果拿不准启动时直接用 -C 指定路径最保险。配置文件里 Web 相关的段落大致长这样[web] bind0.0.0.0 port61208 usernameadmin passwordyourpassword保存后启动方式变成glances -C C:\Users\你的用户名\.config\glances\glances.conf -w之后想调整端口或者密码只需要改配置文件不用再去翻启动命令。把命令做成开机自启的时候配置文件方案也更好维护。注意配置文件的编码建议用 UTF-8 保存避免 Windows 自带记事本保存成 ANSI 导致中文注释乱码。如果你不需要在配置文件里写字幕和中文说明这个问题不大。3.3 加认证外部访问之前必须做的事Glances 的 Web 页面默认是完全没有认证的。只要是能连到这个端口的人打开页面就能看到你的完整主机信息包括主机名、进程命令行、网络连接、磁盘使用率。这个信息量已经足够敏感了所以但凡打算让外部设备访问第一件事就是加用户名密码。命令行参数方式glances -w --username admin --password 123456或者按上面配置文件的方式写在 [web] 段里。需要说明的是这种认证方式是 HTTP Basic Auth密码只是做了 Base64 编码传输并没有加密。在局域网内用问题不大如果走公网访问一定要在前面再加一层 HTTPS这一点我在第四章会展开讲。提示Glances 的 Web 认证是 HTTP Basic Auth密码只是 Base64 编码并不是真正的加密。只要走了不可信网络就必须配合 HTTPS 使用。还有个使用上的细节Glances 的密码如果用命令行传启动进程时在系统进程列表里能看到明文密码。虽然不是特别严重的风险但如果你在意建议改用 password file 的方式把密码写进一个只有自己能读的文件再用 --password-file 参数加载。4. 外部访问从本机到手机、再到公网4.1 局域网访问手机和平板直接看外部访问的第一步通常是在同一个局域网里用手机、平板或者另一台电脑访问这台 Windows 机器。先查监控机的局域网 IPipconfig找到 IPv4 地址比如 192.168.1.100。然后在同一 Wi-Fi 下的手机浏览器输入http://192.168.1.100:61208只要能看到页面说明局域网访问已经打通。这个过程看起来简单实际踩坑的点大多在防火墙我马上会讲。如果你有多个网卡、或者机器同时接了有线和无线最好用 -B 0.0.0.0 显式监听所有网卡否则可能出现有线能访问、无线不能访问之类的问题。这个参数在配置文件里对应 [web] 段的 bind设成 0.0.0.0 即可。另外提醒一下同一局域网下的访问体验其实和带宽关系不大因为 Glances 的页面数据量很小几 KB 级别刷新的压力主要在监控机自身而不是网络。我见过有人为了这个专门升级路由器属实没必要。4.2 Windows 防火墙放行与常见误区默认情况下Windows 防火墙会拦截外部设备对本机 61208 端口的访问。这也是很多人“明明服务启动了却访问不了”的头号原因。放行端口有两种办法。图形界面路径是控制面板 → Windows Defender 防火墙 → 高级设置 → 入站规则 → 新建规则 → 端口 → TCP 61208 → 允许连接。这里有个容易被忽略的下拉框规则的配置文件分成了三种域、专用、公用。如果你不确定网络被系统归到哪一类最好三种都勾上或者在创建规则时选择“所有配置文件”。更直接的办法是用 PowerShell 建规则New-NetFirewallRule -DisplayName Glances Web -Direction Inbound -Protocol TCP -LocalPort 61208 -Action Allow -Profile Any我实际遇到过这种情况家里电脑连路由器走的是“公用网络”配置文件同事电脑连同一个交换机却是“专用网络”。当时我只放行了专用网络结果自己的手机死活连不上。后来把 Profile 改成 Any 一刷新就通了。所以排查外部访问问题时别光盯着服务本身防火墙策略也要一起看。4.3 公网访问端口映射与 HTTPS 接入如果你希望出差在外也能看到 Windows 主机的状态那就是真正意义上的公网外部访问了。这个场景能做但安全边界必须先摆清楚。先判断有没有公网条件登录光猫或路由器后台看有没有端口映射、端口转发之类的功能。如果有通常的配置思路是把公网侧某个端口比如 8080映射到内网主机 192.168.1.100 的 61208 端口。之后外网访问 http://你的公网IP:8080 就能打开页面。但我不建议直接用 HTTP 裸奔出去。前面已经说了 Glances 的默认认证是 Basic Auth密码等于明文传输再加上监控数据本身含有内网主机名、进程参数、网络连接等信息一旦被扫描到等于把你的内网情况直接暴露出去。所以公网方案的正确姿势是在 Glances 前面加一个 HTTPS 接入层用 Nginx 或 Caddy 这类工具监听 443 端口自动申请证书把加密后的流量转发到本机 61208。同时Glances 自身的登录密码也必须设置强密码不要用 admin/123456 这种组合。如果宽带没有公网 IP就需要评估合规的组网方案这部分涉及较多前置条件建议根据实际网络环境单独规划不要为了图省事直接把监控服务暴露到公网。监控数据看起来不起眼但它本质上是内网环境的情报泄露出去的价值比大多数人想象中高得多。5. 实战经验常见问题与排查实录5.1 Web 界面打不开/白屏第一步先确认服务进程还活着。终端里有没有报错窗口是不是被误关了。如果确认在跑再在本机试试curl http://127.0.0.1:61208能返回一堆 HTML 说明服务正常问题出在外部链路连本机都打不开说明启动参数或端口有冲突。本机通了、外部不通依次检查三件事防火墙放行没有、监听地址是不是 0.0.0.0、端口映射是否正确。我在排障时见过好几次这种情况配置文件改了服务一直没重启端口一直监听在 127.0.0.1 上外部当然访问不到。改完配置记得重启 glances 进程不然一切等于白改。5.2 端口被占用Glances 默认 61208 端口一般不会被占用但如果你跑了很多服务确实会遇到端口冲突启动时直接报错退出。处理方式有两种换端口比如glances -w -p 61209或者在配置文件 [web] 段里改 port。改了端口以后防火墙规则、路由器映射、浏览器地址里的端口号要同步改否则又是新一个坑。建议把端口号固定下来写进自己的维护笔记里别频繁换。我见过有人因为换端口只改了启动命令没改防火墙规则结果排查了半天。5.3 认证不生效或密码忘掉如果你已经在配置里写了 username/password但浏览器打开没弹出登录框最常见的原因是你根本没加载到那份配置文件。用 -C 显式指定配置路径可以避开所有“Glances 到底读了哪个配置文件”的问题。密码忘掉也很折腾。先确认服务端是否真的启用了认证可以在本机用浏览器无痕窗口访问页面如果直接进说明认证没生效如果弹了登录框但密码不对那就只能改配置文件里的密码然后重启。Glances 的 Web 认证不会帮你找回密码也没有重置机制所以密码设置完最好记录在密码管理工具里。5.4 Windows 下部分监控数据不显示这是 Windows 上最容易让人困惑的地方。Glances 很多插件是为 Linux 设计的Windows 上不是所有数据都能采到。比如 GPU 温度如果你用的是 NVIDIA 显卡需要额外安装显卡驱动对应的管理 SDK并确保 Python 环境里有 pynvml 库否则 GPU 相关栏目就是空的。如果是 Intel 核显或者 AMD 显卡情况会更复杂。磁盘温度在 Windows 下往往也采集不到因为很多消费级硬盘根本不通过标准接口上报温度。这些都是正常现象不是部署出了问题。如果确实需要完整的硬件级监控Windows 上老实说还是得配合主板厂商的官方工具。Glances 更擅长的是系统级指标的集中展示和外部访问别指望它在 Windows 上把每个传感器数值都补齐。5.5 开机自启让监控永远在线Web 模式启动后如果电脑重启了服务不会自动恢复。想让 Windows 机器一开机就自动跑 Glances我推荐用任务计划程序。打开任务计划程序 → 创建任务 → 触发器选“计算机启动时” → 操作选“启动程序” → 程序填写 glances.exe 的完整路径参数填-C C:\Users\你的用户名\.config\glances\glances.conf -w。设置里勾上“不存储密码”在“无论用户是否登录都要运行”的模式下启动。也可以直接命令行注册schtasks /create /tn Glances /tr C:\Python312\Scripts\glances.exe -w -p 61208 /sc onstart /ru SYSTEM /rl HIGHEST注意 /tr 里的参数如果包含空格整个命令要用引号包裹路径里不要带中文。任务计划方式比把快捷方式丢进启动文件夹干净启动文件夹方式会在用户登录时弹出一个控制台窗口体验很差而且不登录就没法跑。6. 可选进阶Docker 跑 Glances 的适用边界6.1 Docker 方案在 Windows 上的取舍如果你已经装了 Docker Desktop也可以直接用官方镜像跑docker run -d --restartalways -p 61208:61208 -e GLANCES_OPT-w nicolargo/glances:latest这个命令本身没问题问题在于 Windows 上容器默认看到的是容器自己的资源视图而不是 Windows 宿主机的。想拿到宿主机的 CPU/内存数据Docker 需要额外挂载宿主信息在 Windows 下配置比较绕远不如 Linux 上直接使用 host 网络模式方便。所以我的判断是如果你主要目的是监控 Windows 宿主机本体原生 pip 方式优先如果你已经有一个 Docker 环境想额外起一个监控容器来看容器自身的运行状态或者想快速体验 GlancesDocker 方式可以玩一玩。想用它替代原生方式监控 Windows 宿主机性价比不高。6.2 Docker 方式的具体用法和坑用 Docker 跑时注意 -e GLANCES_OPT-w 这个环境变量会把启动参数传给容器内的 glances不传的话容器默认进入终端模式而容器终端模式下没有前台交互界面日志里会一直刷错误看起来像卡死了一样。数据卷方面如果想把配置文件挂进去可以这样docker run -d --restartalways -v /path/to/glances.conf:/etc/glances/glances.conf -p 61208:61208 -e GLANCES_OPT-w -C /etc/glances/glances.conf nicolargo/glances:latest这里 /path/to/glances.conf 要换成你本机的实际路径。挂载配置文件后镜像内部的默认配置会被你这份覆盖这种做法在 Linux 服务器上我比较常用Windows 的 Docker Desktop 下同样适用只是路径写法要注意 Windows 的盘符映射规则。6.3 原生与 Docker 的选择建议维度原生 pip 方式Docker 方式安装体积小大需要 Docker 运行环境监控对象直接监控 Windows 宿主机默认监控容器自身需额外配置资源占用低较高开机自启任务计划程序即可Docker 设置 restartalways适合场景Windows 主机长期监控已有 Docker 环境时的快速体验就我个人的实际体验来说在 Windows 上监控这台机器本身选原生方式比 Docker 省心得多。Docker 方案更适合作为 Linux 服务器上的监控组件或者当你已经建好一套容器编排体系、想统一管理监控服务时再用。Windows 场景下老老实实 pip 安装、配置文件固化参数、任务计划自启这套组合拳已经足够稳。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门