glances —— 一个界面看全部,还能远程集中看
glances —— 一个界面看全部,还能远程集中看
分类:01 系统监控与性能 适用:Linux / macOS(Python 实现),支持 Web 与 C/S 模式 一句话:把 CPU、内存、磁盘、网络、进程、传感器、容器塞进一屏,适合巡检和轻量集中监控。
1. 它解决什么问题
- 巡检时要开五六个终端分别跑
top、iostat、df、ss,glances一屏搞定。 - 想用浏览器看服务器状态,又不想搭 Prometheus + Grafana 这么重。
- 临时盯几十台机器,起一个
glances -w就够。
不适合:长期留存指标(它不做时序存储)、精细告警。长期监控用 Prometheus/Zabbix。
2. 安装
# 发行版包(版本可能较老)
apt install -y glances
dnf install -y glances
# 推荐:pip 装最新版,功能全
python3 -m pip install --upgrade glances
# 需要 Web 模式
python3 -m pip install bottle
# 容器方式(最省事)
docker run -d --name glances -p 61208:61208 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--pid host --net host nicolargo/glances:latest-full
3. 三种运行模式
3.1 本地 TUI
glances
glances -1 # 每个核单独显示 CPU
glances -t 2 # 2 秒刷新
glances --disable-plugin network,docker # 关掉不关心的模块
glances -s # 只看传感器
3.2 Web 模式(浏览器访问)
glances -w # 监听 0.0.0.0:61208
glances -w -B 127.0.0.1 -p 8080 # 只监听本地、改端口
# 访问 http://<ip>:61208
带密码(需 bottle 与配置文件):
glances -w --password # 交互式设置密码
3.3 C/S 集中模式(一台看多台)
服务端(被监控机):
glances -s -B 0.0.0.0 -p 61209
客户端(运维机):
glances -c <server_ip> -p 61209
多台汇总需要配置 glances.conf 的 [serverlist],或用 Web 模式的 --browser 浏览。
4. 界面模块
| 模块 | 内容 | 关注点 |
|---|---|---|
| CPU | 总体 + 每核 + 用户/系统/IO 等待 | iowait 高 → 磁盘 |
| MEM | 使用率、available、缓存 | 看 available |
| SWAP | swap 使用 | 非 0 结合 si/so |
| LOAD | 1/5/15 分钟负载 | 与核数比 |
| NETWORK | 各网卡 rx/tx 速率 | 找打满的网卡 |
| DISK IO | 各设备读写速率 | |
| FILE SYS | 挂载点使用率 | 按使用率排序 |
| SENSORS | 温度、风扇、电压 | 物理机必看 |
| PROCESS | 进程列表,可排序 | 按 CPU/MEM |
| DOCKER | 容器列表与资源 | 需 docker.sock |
| GPU | 显卡(nvidia-smi) | AI 机器 |
| ALERT | 触发阈值的项高亮 | 红色即异常 |
阈值在 glances.conf 的 [cpu]、[memory]、[fs] 段配置,careful / warning / critical 三级,超阈值条目变黄/红。
5. 常用参数
glances -h # 帮助
glances --version
glances -t 5 # 刷新间隔
glances -1 # 分核
glances --hide-kernel-threads # 隐藏内核线程
glances -f /path/glances.conf # 指定配置
glances --export csv -o /tmp/glances.csv # 导出
glances --export influxdb # 写 InfluxDB
glances --export prometheus # 暴露 /metrics 给 Prometheus
glances --stdout cpu.user,mem.used,load # 结构化输出,喂给脚本
glances --disable-plugin sensors # 虚拟机没传感器时关掉
--stdout 是最被低估的功能,能当轻量采集器用:
glances --stdout cpu.total,mem.percent,load --stop-after 1
# 输出 JSON,直接给 jq
glances --stdout all --stop-after 1 | jq '.cpu.total'
6. 实战场景
6.1 单机快速巡检
glances -1 --disable-plugin docker
一屏内确认:CPU 是否单核打满、内存 available 是否够、磁盘是否有满的挂载点、网卡是否有异常流量、负载是否匹配。
6.2 临时给团队一个状态页
# 在跳板机或监控机上
glances -w -B 0.0.0.0 -p 61208
# 加 nginx 反代 + basic auth 后对内开放
6.3 接入 Prometheus
glances -w --export prometheus
curl -s http://localhost:61208/api/4/all | head
# 或直接用 glances 的 prometheus 导出端点,配置 scrape 即可
6.4 无 agent 的批量取数
for h in web01 web02 db01; do
echo "== $h"
ssh "$h" 'glances --stdout cpu.total,mem.percent,fs./.percent --stop-after 1' \
| jq -c '{cpu, mem, root_fs: .["fs./"]}'
done
7. 常见坑
- pip 安装后命令找不到:装到了
~/.local/bin,加 PATH 或用python3 -m glances。 - Web 模式打不开:默认只监听 127.0.0.1 以外需确认防火墙;容器模式必须
--net host才能看到宿主网卡。 - 容器里数据是容器的:不加
--pid host --net host只能看到容器自身。 glances -s与-w端口冲突:默认 61208(web)/ 61209(server),同机跑要改端口。- 磁盘使用率显示的是所有挂载点,容器/overlay 会刷屏,用
--disable-plugin fs或配置白名单。 - 老版本缺模块:Debian 仓库版本可能没有 docker/gpu 插件,用 pip 或容器镜像
:full。 --export需要额外依赖:influxdb 要influxdb-client,csv 内置。- 不是监控系统:无历史存储、无告警收敛、无多租户,别拿它替代 Zabbix。
8. 速查表
glances # 本地 TUI
glances -1 -t 2 # 分核,2 秒
glances -w # Web :61208
glances -s -B 0.0.0.0 # 服务端 :61209
glances -c <ip> # 客户端连服务端
glances --stdout all --stop-after 1 # JSON 输出
glances --export prometheus # 给 Prometheus 抓
glances --disable-plugin docker,fs # 关模块
# 容器
docker run -d -p 61208:61208 --pid host --net host \
-v /var/run/docker.sock:/var/run/docker.sock:ro nicolargo/glances:latest-full