Glances 跨平台系统监控工具:TUI、Web、API 与 MCP 多形态监控指南
【免费下载链接】glancesGlances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, macOS and Windows operating systems.项目地址: https://gitcode.com/gh_mirrors/gl/glances
Glances 是一款跨平台系统监控工具,目标是在最小空间内呈现最大信息量,通过 curses 终端界面或 Web 界面提供实时系统指标,并支持客户端/服务端远程监控、数据导出、Python/RESTful API 集成以及面向 AI 助手的 MCP 服务器。本文基于项目官方文档与源码,带你全面掌握 Glances 的安装、运行模式、配置体系与二次开发能力。
Glances 是什么:设计目标与核心能力
Glances 以 "An eye on your system" 为理念,是一款面向 GNU/Linux、BSD、macOS 和 Windows 的跨平台监控工具(见 docs/index.rst)。其核心设计目标可以概括为四点:
- 信息密度与自适应显示:通过 curses 或 Web 界面呈现系统状态,并根据终端大小动态调整显示内容——终端越小,展示的信息越精简;终端越宽,展示的插件越多。
- 远程监控:支持客户端/服务端模式,远程监控可通过终端、Web 界面或 API(XMLRPC 与 RESTful)完成。
- 数据出口丰富:统计数据可导出到文件或外部数据库(详见 Gateway 文档)。
- 可编程接入:可在 Python 脚本中通过 Glances Python API 使用,任何应用也可通过 RESTful API 消费数据;AI 助手(Claude、Cursor 等)还能通过 MCP(Model Context Protocol)服务器 直接查询 Glances。
Glances 的所有功能模块均以插件(plugin)形式组织,仓库源码位于 glances/plugins,从 CPU、内存、磁盘、网络到容器(Docker/Podman/LXD)、GPU、NPU、传感器、WiFi、虚拟机等一应俱全。
快速上手:四种运行模式
Glances 提供 Standalone、Client/Server、Web server、Fetch 四种模式(见 docs/quickstart.rst)。
独立模式(Standalone)
在终端直接运行即可监控本机,按q或ESC退出:
$ glances独立模式还支持把原生 Python 统计直接输出到 stdout,便于脚本消费:
$ glances --stdout cpu.user,mem.used,load,network.wlp2s0.bytes_all cpu.user: 30.7 mem.used: 3278204928 load: {'cpucore': 4, 'min1': 0.21, 'min5': 0.4, 'min15': 0.27} network.wlp2s0.bytes_all: 13479也可以用 CSV 格式(此模式下不支持 key):
$ glances --stdout-csv now,cpu.user,mem.used,load now,cpu.user,mem.used,load.cpucore,load.min1,load.min5,load.min15 2018-12-08 22:04:20 CEST,7.3,5948149760,4,1.04,0.99,1.04或用 JSON 格式(此模式下不支持 attribute):
$ glances --stdout-json cpu,mem cpu: {"total": 29.0, "user": 24.7, "nice": 0.0, "system": 3.8, "idle": 71.4, ...} mem: {"total": 7837949952, "available": 2919079936, "percent": 62.8, "used": 4918870016, ...}注意:每刷新一次,每个统计项输出一行。
客户端/服务端模式(Client/Server)
在服务端机器上启动服务:
server$ glances -s在客户端连接:
client$ glances -c @server其中@server是服务端的 IP 地址或主机名。服务端可用-B ADDRESS指定绑定地址、-p PORT指定监听 TCP 端口;客户端可用-p PORT指定服务端端口。默认绑定地址为0.0.0.0(监听所有可用网卡),默认 TCP 端口为61209。在客户端/服务端模式下,告警阈值(limits)由服务端统一设置。
安全:XML-RPC 的 DNS 重绑定防护
默认情况下,XML-RPC 服务器接受任意 HTTPHost头值,恶意网页可利用 DNS rebinding 从受害者浏览器读取服务器响应(对应安全公告 CVE-2026-46611)。建议开启 Host 校验,在glances.conf的[outputs]段设置xmlrpc_allowed_hosts:
[outputs] xmlrpc_allowed_hosts=localhost,127.0.0.1,myserver.example.com设置后,Host头不匹配列表中任何模式的请求将被拒绝并返回400 Bad Request。通配符遵循 Pythonfnmatch规则——例如*.example.com能匹配foo.example.com,但不能匹配example.com本身。任何部署在非回环接口上的服务都应设置该选项,缺失时 Glances 会输出启动警告。该配置项同样存在于仓库自带的 conf/glances.conf 模板中。
Central Glances Browser(集中浏览器)
使用--browser选项可以集中管理网络中的多个 Glances 服务器,服务器列表可通过配置文件[serverlist]段静态定义:
[serverlist] # 定义要抓取/显示的列(逗号分隔的 <plugin>:<field>:(<key>) 列表) # 默认值为: system:hr_name,load:min5,cpu:total,mem:percent columns=system:hr_name,load:min5,cpu:total,mem:percent,memswap:percent # 定义静态服务器列表 server_1_name=xps server_1_alias=xps server_1_port=61209 server_2_name=win server_2_port=61235启动 TUI 集中浏览器:
client$ glances --browser列表中可用上下键导航,数字键控制排序:1不排序;2升序(ONLINE > SNMP > PROTECTED > OFFLINE > UNKNOWN);3降序(UNKNOWN > OFFLINE > PROTECTED > SNMP > ONLINE)。
Glances 4.3 及以上还支持 WebUI 集中浏览器:
client$ glances --browser -w打开/browserURL 并点击服务器即可查看统计。可用--disable-autodiscover关闭自动发现。此外,Glances 还支持通过 zeroconf 协议自动发现网络中的 Glances 服务器(Windows 上不可用)。
SNMP 与 IPv6
作为实验特性,当客户端无法通过 Glances 协议检测到服务器时,会尝试用 SNMP 抓取统计:
client$ glances -c @snmpserverSNMP 抓取的统计项有限且依赖操作系统,需要预先安装并配置 SNMP 服务器。Glances 兼容 IPv6,使用-B ::即可绑定所有 IPv6 地址。
Web 服务器模式
server$ glances -w然后在任意带浏览器的设备上访问:
http://@server:61208其中@server为服务端 IP 或主机名。在 URL 末尾追加秒数可调整页面刷新周期,例如每 10 秒刷新一次:
http://@server:61208/10Glances Web 界面遵循响应式 Web 设计原则,移动端体验良好。
为服务器/Web 服务器设置登录口令
使用--password设置访问密码,默认用户名为glances,可用--username修改。设置后,SHA 密码会保存在<login>.pwd文件中(存放于配置文件同目录,Linux 下为~/.config/glances/)。下次运行服务器/客户端时将不再询问密码;如需指定用户名,用-u <username>选项。
也可以在配置文件中设置默认密码:
[passwords] # 定义密码列表 # 语法: host=password # 其中: host 为主机名 # password 为明文密码 # 另外(可选)可以定义默认密码 localhost=mylocalhostpassword default=mydefaultpasswordFetch 模式
用--fetch以美观的方式在控制台快速展示当前统计:
$ glances --fetch还支持自定义模板:--fetch-template </path/to/template.jinja>。仓库提供了现成模板 conf/fetch-templates/short.jinja 与 conf/fetch-templates/with-logo.jinja,详细的自定义模板编写方法见 fetch 文档。
命令行与交互操作参考
完整命令参考见 docs/cmds.rst,这里按使用场景精选高频选项:
| 选项 | 作用 |
|---|---|
-h, --help | 显示帮助 |
-V, --version | 显示版本号 |
-d, --debug | 开启调试模式 |
-C CONF_FILE, --config CONF_FILE | 指定配置文件路径 |
-t TIME, --time TIME | 设置刷新时间(秒,默认 3 秒) |
-s, --server | 以服务端模式运行 |
-c CLIENT, --client CLIENT | 连接 Glances 服务器(IPv4/IPv6 地址、主机名或 hostname:port) |
-p PORT, --port PORT | 定义客户端/服务端 TCP 端口(默认 61209) |
-B BIND_ADDRESS, --bind BIND_ADDRESS | 绑定服务器到指定地址 |
-w, --webserver | 以 Web 服务器模式运行(需要 FastAPI) |
-b, --byte | 以字节/秒显示网络速率 |
-1, --percpu | 以每 CPU 模式启动 |
-2, --disable-left-sidebar | 禁用网络、磁盘 I/O、文件系统和传感器模块 |
-3, --disable-quicklook | 禁用 quick look 模块 |
-4, --full-quicklook | 仅保留 quick look 和 load |
-5, --disable-top | 禁用顶部菜单(QuickLook、CPU、MEM、SWAP、LOAD) |
-6, --meangpu | 以平均 GPU 模式启动 |
-0, --disable-irix | 任务 CPU 使用率除以总 CPU 数 |
--stdout PLUGINS_STATS | 输出插件统计到 stdout |
--export EXPORT | 启用导出模块(逗号分隔) |
--disable-process | 禁用进程模块(降低 Glances CPU 占用) |
--process-filter PROCESS_FILTER | 设置进程过滤正则 |
--disable-check-update | 禁用在线版本检查 |
--print-completion | 生成 shell 补全脚本 |
--enable-mcp | 在 Web 服务器旁启用 MCP 服务器(需mcp包) |
交互式按键(curses 界面)
TUI 运行期间支持大量快捷键(详见 docs/cmds.rst),常用包括:
ENTER:设置进程过滤器(正则,如gnome匹配以 gnome 开头的进程,.*gnome.*匹配包含 gnome 的进程;macOS 上用CTRL-H删除过滤器)c/m/i/p/u/t:分别按 CPU、内存、I/O、进程名、用户、CPU 时间排序进程a:自动排序(CPU >70% 按 CPU,MEM >70% 按内存,CPU iowait >60% 按 I/O)d/n/f/s:显示/隐藏磁盘 I/O、网络、文件系统、传感器g:为当前历史生成图表1:全局 CPU 与每 CPU 统计切换9:黑白主题切换+/-/k:提升/降低选中进程优先级、杀死进程(仅独立模式,需要权限)q/ESC/CTRL-C:退出
在--browser集中浏览器中:ENTER运行选中服务器,UP/DOWN上下移动,q/ESC退出。
配置体系:无需配置即可运行,按需深度定制
Glances不强制要求配置文件,但没有配置文件将无法使用更多高级设置(见 docs/config.rst)。
配置文件位置
按操作系统优先级查找glances.conf:
| 平台 | 查找位置 |
|---|---|
| Linux、SunOS | ~/.config/glances/、/etc/glances/、/usr/share/doc/glances/ |
| *BSD | ~/.config/glances/、/usr/local/etc/glances/、/usr/share/doc/glances/ |
| macOS | ~/.config/glances/、~/Library/Application Support/glances/、/usr/local/etc/glances/、/usr/share/doc/glances/ |
| Windows | %APPDATA%\glances\glances.conf |
| 所有平台 | <venv_root_folder>/share/doc/glances/ |
优先级:用户级配置覆盖系统级配置,命令行选项覆盖两者。仓库提供了完整模板 conf/glances.conf 可供参考。
配置语法与常用段落
Glances 使用ini语法。全局段[global]:
[global] # 刷新率(默认最小 2 秒) # 可被 -t <sec> 选项覆盖 # 也可在每个插件段中单独覆盖 refresh=2 # Glances 是否检查 PyPI 上的新版本? check_update=true # 历史记录大小(最大数值个数) # 默认 1200 个值(默认刷新率下约 1 小时) history_size=1200 # 设置 Glances 显示日期的方式(默认 %Y-%m-%d %H:%M:%S %Z) #strftime_format="%Y-%m-%d %H:%M:%S %Z" # 定义加载额外插件的外部目录 #plugin_dir=/home/user/dev/plugins界面相关段[outputs](含 WebUI、CORS、SSL 等):
[outputs] # 所有 UI 通用选项 separator=True # 限制 WebUI 显示的进程数 max_processes_display=25 # WebUI 与 API 的 URL 前缀(必须以 / 结尾) #url_prefix=/glances/ # CORS:允许跨域请求的来源列表,默认 * #cors_origins=* #cors_credentials=True #cors_methods=* #cors_headers=* # 绑定地址的 Host 校验(DNS rebinding 防护) #webui_allowed_hosts=localhost,127.0.0.1,myserver.example.com # XML-RPC 的 Host 校验 #xmlrpc_allowed_hosts=localhost,127.0.0.1,myserver.example.com # SSL 证书配置 #ssl_keyfile=./glances.local+3-key.pem #ssl_certfile=./glances.local+3.pem每个插件、导出模块和 AMP(应用监控进程)都可以有自己的段。以 CPU 插件为例:
[cpu] disable=False refresh=3 user_careful=50 user_warning=70 user_critical=90 iowait_careful=50 iowait_warning=70 iowait_critical=90 system_careful=50 system_warning=70 system_critical=90 steal_careful=50 steal_warning=70 steal_critical=90以 InfluxDB 导出模块为例:
[influxdb] # 用于 --export influxdb 选项的配置 host=localhost port=8086 user=root password=root db=glances prefix=localhost #tags=foo:bar,spam:eggs以 Nginx AMP 为例:
[amp_nginx] # 需要启用 Nginx 状态页 enable=true regex=\/usr\/sbin\/nginx refresh=60 one_line=false status_url=http://localhost/nginx_status动态配置值
Glances 3.0 及以上支持用反引号包裹系统命令作为动态配置值。例如把 InfluxDB 的 prefix 设为当前主机名:
[influxdb] ... prefix=`hostname`或者把操作系统名作为 tag 加入:
[influxdb] ... tags=system:`uname -a`日志配置
Glances 将内部消息写入日志文件;-d选项可输出DEBUG消息;用glances -V可显示日志文件的完整路径;日志超过 1 MB 会自动轮转。如需自定义日志路径与格式,可创建glances.json(JSON 格式的 logging 配置,定义RotatingFileHandler、控制台输出及各 logger 级别),然后启动:
$ LOG_CFG=<path>/glances.json glances数据导出:Gateway to Other Services
Glances 可将统计导出到文件或外部服务(数据库、消息队列等),完整列表见 Gateway 文档。所有导出器共享[export]公共段:
[export] # 所有导出器的公共段 # 不导出的字段(逗号分隔的正则列表) exclude_fields=.*_critical,.*_careful,.*_warning,.*\.key$可用导出目标包括:CSV、JSON、Cassandra、ClickHouse、CouchDB、DuckDB、Elasticsearch、Graphite、InfluxDB、Kafka、MQTT、MongoDB、NATS、OpenTSDB、Prometheus、RabbitMQ、Riemann、StatsD、TimescaleDB、ZeroMQ 等。导出器实现位于仓库 glances/exports,每个目录对应一个导出模块。使用方式为命令行--export <name>,各导出器在glances.conf中拥有独立配置段。
编程接入:Python API 与 RESTful API
Python API(Glances 4.4.0+)
可以在自己的 Python 脚本中直接使用 Glances 插件数据(见 docs/api/python.rst)。核心类GlancesAPI位于 glances/api.py,通过属性访问插件、字典方式访问字段:
>>> from glances import api >>> gl = api.GlancesAPI() >>> gl.cpu {'cpucore': 16, 'ctx_switches': 86881941, 'guest': 0.0, 'idle': 81.4, ...} >>> gl.cpu.get("total") 5.5 >>> gl.mem.get("used") 6218879216 >>> gl.auto_unit(gl.mem.get("used")) 5.79G对于返回列表的插件(如网络接口、进程),可按名称访问:
>>> gl.network.keys() ['wlp0s20f3'] >>> gl.network["wlp0s20f3"] {'alias': None, 'bytes_all': 1204, 'bytes_recv_rate_per_sec': 6969.0, ...}gl.plugins()返回可用插件列表;每个插件暴露limits属性,展示该插件的告警阈值,例如 CPU 插件的阈值(cpu_total_careful/warning/critical等)。文档对每个插件都给出了字段与 limits 的详细说明,涵盖 alert、ports、diskio、containers、processcount、gpu、percpu、system、network、cpu、amps、processlist、load、sensors、uptime、now、fs、wifi、ip 等。这些插件的实现位于 glances/plugins,GlancesAPI即是对这些插件实例的封装。
RESTful/JSON API(API v4)
运行 Web 服务器模式(-w)时 RESTful API 自动启用,也可用-w --disable-webui仅保留 API(见 docs/api/restful.rst)。默认根地址为http://localhost:61208/api/4,绑定地址与端口可通过--bind/--port修改;[outputs]段中的url_prefix可加 URL 前缀(必须以/结尾),例如url_prefix = /glances/后 API 变为http://localhost:61208/glances/api/4。API 内置文档位于http://localhost:61208/docs#/,OpenAPI 规范见 docs/api/openapi.json。
常用端点示例:
# 检查 API 状态 $ curl -I http://localhost:61208/api/4/status # 获取插件列表 $ curl http://localhost:61208/api/4/pluginslist # 获取 CPU 统计 $ curl http://localhost:61208/api/4/cpu # 获取单个字段 $ curl http://localhost:61208/api/4/cpu/total # 获取网络接口中特定项 $ curl http://localhost:61208/api/4/network/interface_name/value/wlp0s20f3 # 清除全部告警事件 $ curl -H "Content-Type: application/json" -X POST http://localhost:61208/api/4/events/clear/allAPI 认证
API 支持 HTTP Basic 与 JWT Bearer 两种认证,用--password开启。生成新的登录凭据:
$ glances -w --username > Enter new username: foo > Enter new password: ******** > Confirm new password: ********JWT 认证需要python-jose库。先向 token 端点请求令牌:
$ curl -X POST http://localhost:61208/api/4/token \ -H "Content-Type: application/json" \ -d '{"username": "your_username", "password": "your_password"}'返回{"access_token": "...", "token_type": "bearer", "expires_in": 3600},随后携带 Bearer 令牌访问受保护端点。JWT 可在配置中定制:
[outputs] # JWT 密钥(不设置则随机生成) jwt_secret_key = your-secret-key-here # JWT 令牌过期时间(分钟,默认 60) jwt_expire_minutes = 60API 安全建议
默认情况下 Glances Web 服务器无认证并绑定所有网络接口(0.0.0.0),任何能到达服务器的客户端都可读取完整 REST API,包括可能含凭据的进程命令行。官方文档给出的防护建议:
- 开启认证:
glances -w --password - 仅绑定回环:
glances -w --bind 127.0.0.1 - 设置
webui_allowed_hosts防 DNS rebinding(行为与 XML-RPC 的xmlrpc_allowed_hosts一致,不匹配返回 400) - 使用反向代理(nginx、Caddy、Apache)加 TLS 与认证,这是生产环境的推荐方案
- CORS 配置:默认
cors_origins=*且cors_credentials=False;如需携带凭据的跨域访问,必须显式列出来源,cors_origins=*与cors_credentials=True的组合不被允许(Glances 会自动禁用凭据并记录警告),例如:
[outputs] cors_origins=https://my-dashboard.internal.example.com cors_credentials=True同一cors_origins键也作用于传统 XML-RPC 服务器(glances -s)。未启用认证或主机过滤时,启动会显示风险警告。
面向 AI 助手的 MCP 服务器
Glances 通过 MCP(Model Context Protocol)服务器向 AI 助手(Claude、Cursor、VS Code Copilot 等)暴露实时监控数据,让它们直接在对话中查询指标并生成结构化分析(见 docs/api/mcp.rst)。MCP 服务器在 Web 服务器启动时加--enable-mcp挂载,使用SSE(Server-Sent Events)作为传输层。
安装与启动:
$ pip install 'glances[mcp]' $ glances -w --enable-mcpMCP 服务器地址为http://localhost:61208/mcp,SSE 端点为http://localhost:61208/mcp/sse;可用--mcp-path修改挂载路径。MCP 端点继承 Web 服务器的认证策略:--password启动时每个 MCP 请求必须携带 Basic Auth 或 JWT Bearer 凭据。
MCP 资源(只读数据源):
| URI | 说明 |
|---|---|
glances://plugins | 所有活动插件名的 JSON 列表 |
glances://stats | 所有插件当前统计的 JSON 对象 |
glances://limits | 所有插件的告警阈值 |
glances://stats/{plugin} | 单个插件的当前统计 |
glances://stats/{plugin}/history | 单个插件的历史时间序列 |
glances://limits/{plugin} | 单个插件的告警阈值 |
MCP 提示(内置分析模板):system_health_summary(CPU/内存/交换/负载/文件系统/网络的总体健康报告)、alert_analysis(活动告警分析,参数level取warning/critical/all)、top_processes_report(CPU 密集型进程报告,参数nb默认 10)、storage_health(磁盘与 I/O 分析)。
连接 Claude Desktop:
{ "mcpServers": { "glances": { "url": "http://localhost:61208/mcp/sse" } } }密码保护时加headers字段携带Authorization: Basic <base64(user:password)>。也可用 Python 的mcp.client.sse.sse_client编程访问,列出资源、读取glances://stats/cpu、运行健康摘要提示。MCP 服务器实现位于 glances/outputs/glances_mcp.py,对应测试见 tests/test_mcp.py 与 tests/HOW_TO_TEST_MCP.md。
Docker 部署
Glances 提供 Docker 镜像,无需在宿主机安装 Python 依赖(见 docs/docker.rst):
$ docker pull nicolargo/glances:latest镜像基于 Alpine 与 Ubuntu,常用标签:latest(Alpine 最新版,最小依赖 + FastAPI & Docker)、latest-full(Alpine 最新版全依赖)、dev(develop 分支全依赖,可能不稳定)及对应的ubuntu-*系列。控制台模式运行:
$ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro \ --pid host --network host -it docker.io/nicolargo/glancesWeb 服务器模式(通过GLANCES_OPT环境变量传参):
$ docker run -d --restart="always" -p 61208-61209:61208-61209 \ -e GLANCES_OPT="-w" \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro \ --pid host docker.io/nicolargo/glances自定义配置可通过挂载glances.conf实现:-v \pwd`/glances.conf:/etc/glances/glances.conf。容器默认显示容器自身 OS 信息,挂载/etc/os-release可显示宿主机 OS。Docker 化的密码保护、NVIDIA GPU 透传(--gpus或 composedeploy` 段)以及完整 docker-compose 示例(含 Traefik 反代)均可参考 docs/docker.rst,仓库还提供了 docker-compose/docker-compose.yml 与 docker-compose/docker-compose-tui.yml。
安装与延伸阅读
通过 PyPI 安装:
$ pip install glances安装所有可选特性(Web 界面、导出模块等):
$ pip install glances[all]升级:pip install --upgrade glances[all](Debian/Ubuntu 需先装python-dev,Fedora/CentOS/RHEL 需python-devel)。Glances 4.3.2+ 支持 shell 补全,例如 Bash:
$ glances --print-completion bash | sudo tee -a /etc/bash_completion.d/glances $ source /etc/bash_completion.d/glances支持 bash、zsh、tcsh。安装细节见 docs/install.rst。
本文所涉主题均有对应的官方文档章节可供深入:安装(docs/install.rst)、快速上手(docs/quickstart.rst)、完整命令参考(docs/cmds.rst)、配置(docs/config.rst)、Fetch 模板(docs/fetch.rst)、插件详解(docs/aoa/index.rst)、数据导出(docs/gw/index.rst)、Python API(docs/api/python.rst)、RESTful API(docs/api/restful.rst)、MCP(docs/api/mcp.rst)、Docker(docs/docker.rst)、FAQ(docs/faq.rst)与支持渠道(docs/support.rst)。
总结
Glances 的价值在于"一套数据、多种出口":同一套插件化采集引擎,同时驱动 curses TUI、响应式 Web UI、XML-RPC/RESTful API、Python 内嵌 API、外部数据库导出以及 MCP 数据服务。无论是单机巡检、远程集群监控、写入时序数据库做告警分析,还是把实时系统指标喂给 LLM 生成运维洞察,Glances 都能以最少的配置成本接入现有工作流。
【免费下载链接】glancesGlances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, macOS and Windows operating systems.项目地址: https://gitcode.com/gh_mirrors/gl/glances
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考