概述
你是否有过这种经历:SSH 连上服务器,想看看 CPU 和内存使用情况,结果 top 界面密密麻麻全是数字,看得眼花?
Glances 就是来解决这个问题的。它是一个跨平台的系统监控工具,既能用命令行显示,也能启动一个 Web 服务,让你在任何设备的浏览器里查看服务器状态。
相比 Netdata 的重型面板,Glances 更轻量;相比 top/htop,它多了 Web 界面和 API 接口。而且它能通过 BeautifulSoup 抓取其他服务器的数据,实现一台机器监控多台。
今天教你用 Docker 快速部署 Glances,5 分钟搞定。
准备工作
你需要这些:
- 一台运行 Ubuntu/Debian 的 VPS(1GB 内存以上)
- Docker 和 Docker Compose 已安装
- 能访问外网(拉取镜像用)
如果还没装 Docker,跑一下:
curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker
确认 Docker 就绪:
docker --version
docker compose version
看到版本号就 OK。
步骤
第一步:创建项目目录
mkdir -p ~/glances && cd ~/glances
第二步:编写 docker-compose.yml
Glances 官方提供了 Docker 镜像,配置很简单:
version: "3.8"
services:
glances:
image: nicolargo/glances:latest-full
container_name: glances
restart: unless-stopped
pid: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /tmp/glances:/tmp/glances
environment:
- GLANCES_OPT=-w
- GLANCES_PASSWORD=your_password_here
- TZ=Asia/Shanghai
ports:
- "61208:61208"
network_mode: host
几个关键参数说明:
pid: host:让 Glances 能看到宿主机的所有进程/var/run/docker.sock:挂载 Docker socket,可以监控容器状态GLANCES_OPT=-w:启动 Web 模式TZ=Asia/Shanghai:设置时区为北京时间
注意:把
your_password_here换成你自己的密码,不然任何人都能连进来查看。
第三步:启动 Glances
docker compose up -d
等几秒,检查容器是否正常运行:
docker ps | grep glances
看到 Up 状态就说明成功了。
第四步:浏览器访问
打开浏览器,输入:
http://你的VPS_IP:61208
第一次登录需要输入用户名和密码。默认用户名是 admin,密码就是你刚才设置的。
登录后你会看到一个类似这样的界面:
- 左上角:CPU、内存、磁盘使用率
- 右上角:网络流量、负载
- 中间:进程列表,按 CPU/内存排序
- 底部:系统信息、传感器数据
颜色编码很直观:绿色正常,黄色警告,红色危险。
验证
部署完成后,跑几个检查确认一切正常:
# 1. 容器运行状态
docker ps | grep glances
# 2. 端口是否监听
ss -tlnp | grep 61208
# 3. API 接口测试(返回 JSON 格式的系统数据)
curl http://localhost:61208/api/3/cpu
# 4. Web 界面访问
# 浏览器打开 http://你的VPS_IP:61208
第 3 步会返回类似这样的 JSON:
{
"percent": 12.5,
"cpucore": 2,
"cpuUser": 5.2,
"cpuSystem": 3.1,
...
}
能看到数据就说明 API 也正常工作了。
进阶用法
监控 Docker 容器
因为挂载了 Docker socket,Glances 会自动识别容器。在 Web 界面点击 “Docker” 标签页,可以看到每个容器的 CPU、内存、网络使用情况。
作为客户端监控其他服务器
Glances 支持客户端 - 服务端模式。你可以在本地电脑运行:
docker run --rm -it nicolargo/glances:latest \
-C http://你的VPS_IP:61208 \
--client
这样本地终端就能实时看到远程服务器的监控数据,不需要 SSH。
配合 InfluxDB 存储历史数据
如果你想保存历史监控数据,可以加一个 InfluxDB 容器:
influxdb:
image: influxdb:1.8
container_name: influxdb
volumes:
- ./influxdb:/var/lib/influxdb2
environment:
- INFLUXDB_DB=glances
- INFLUXDB_ADMIN_USER=admin
- INFLUXDB_ADMIN_PASSWORD=admin123
glances:
# ... 上面的配置
depends_on:
- influxdb
environment:
- GLANCES_OPT=-w --export-influxdb
- INFLUXDB_HOST=influxdb
- INFLUXDB_PORT=8086
- INFLUXDB_USER=admin
- INFLUXDB_PASS=admin123
- INFLUXDB_DB=glances
这样每次访问 Glances 时,数据会自动写入 InfluxDB,之后可以用 Grafana 做长期趋势分析。
常见问题
访问 61208 端口超时?
检查防火墙是否开放了该端口:
sudo ufw allow 61208/tcp
sudo ufw status
如果是阿里云/腾讯云等云厂商,还要在安全组里放行 61208 端口。
Web 界面加载很慢?
可能是服务器配置太低。Glances 默认每秒刷新一次,对于 512MB 内存的 VPS 来说有点吃力。可以在 docker-compose.yml 里加个环境变量降低刷新频率:
environment:
- GLANCES_OPT=-w --refresh 5
这样每 5 秒刷新一次,资源占用会低很多。
忘记密码怎么办?
重启容器,进入容器修改密码:
docker exec -it glances bash
echo "新密码" | glances-client --password
exit
docker restart glances
或者删掉配置文件重建:
docker rm -f glances
docker compose up -d
容器一直重启?
查看日志找原因:
docker logs glances --tail 50
常见原因是端口被占用。换另一个端口试试:
ports:
- "61209:61208"
怎么升级 Glances?
cd ~/glances
docker compose pull
docker compose up -d
一行命令拉取最新版并重启。
Glances 适合那些想要快速看到服务器状态、又不想折腾复杂监控栈的人。装好 Docker 镜像,开浏览器就能用,比翻 top 舒服多了。
你的服务器上现在跑得怎么样?打开浏览器看一眼就知道了。