glances —— 一个界面看全部,还能远程集中看

运维工具手册 01-系统监控与性能 4.2 KB 原文

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. 常见坑

  1. pip 安装后命令找不到:装到了 ~/.local/bin,加 PATH 或用 python3 -m glances。
  2. Web 模式打不开:默认只监听 127.0.0.1 以外需确认防火墙;容器模式必须 --net host 才能看到宿主网卡。
  3. 容器里数据是容器的:不加 --pid host --net host 只能看到容器自身。
  4. glances -s 与 -w 端口冲突:默认 61208(web)/ 61209(server),同机跑要改端口。
  5. 磁盘使用率显示的是所有挂载点,容器/overlay 会刷屏,用 --disable-plugin fs 或配置白名单。
  6. 老版本缺模块:Debian 仓库版本可能没有 docker/gpu 插件,用 pip 或容器镜像 :full。
  7. --export 需要额外依赖:influxdb 要 influxdb-client,csv 内置。
  8. 不是监控系统:无历史存储、无告警收敛、无多租户,别拿它替代 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