Glances 备忘清单
这是开始使用 Glances 系统监控工具的快速参考备忘单,可以帮助用户监视系统的各种性能指标
入门
功能特点
跨平台支持
- Glances支持多种操作系统,包括 Linux、Windows、macOS 和 FreeBSD。
多种输出方式
- 命令行界面(CLI):通过终端查看系统监控数据。
- Web 界面:通过浏览器访问并查看系统性能指标。
- API 输出:可以将数据通过 REST API 或者 MQTT 传输到其他系统或服务。
详细的系统监控
- CPU:实时显示 CPU 的使用率、每个核心的负载情况。
- 内存:显示总内存、已用内存、缓存和交换分区的使用情况。
- 磁盘 I/O:显示磁盘的读写速度和 I/O 操作数。
- 网络带宽:显示网络接口的上传和下载速度。
- 文件系统:显示各个挂载点的使用情况。
- 传感器:显示系统温度、风扇速度等传感器数据(需要支持的硬件和驱动)。
扩展功能
- 插件系统:支持通过插件扩展功能,可以自定义监控指标。
- 导出数据:支持将监控数据导出为 CSV、JSON 等格式。
- 报警系统:可以设置报警,当某些指标超过设定阈值时触发通知。
安装
通过 pip 安装
pip install glances
通过包管理器安装
Debian/Ubuntu:
sudo apt-get install glances
Fedora:
sudo dnf install glances
macOS (使用 Homebrew):
brew install glances
配置文件
Glances 的配置文件位于 ~/.config/glances/glances.conf。通过编辑这个文件,可以自定义 Glances 的显示和行为。
例子配置文件
[global]
refresh=2      # 设置刷新间隔(以秒为单位)
[cpu]
enable=true    # 显示 CPU 负载平均值
[mem]
enable=true    # 显示内存使用情况
[disk]
enable=true    # 显示磁盘 I/O 信息
[network]
enable=true    # 显示网络带宽使用情况
Web 访问
# 使用 Glances 的 API:
glances -w
# 访问 API:
curl http://<your_ip>:61208/api/3/all
使用 Docker 部署 Glances:
docker run --rm \
   -v /var/run/docker.sock:/var/run/docker.sock:ro \
   -v /glances/conf:/glances/conf:ro \
   -v /glances/data:/glances/data:rw \
   -p 61208-61209:61208-61209 \
   --name glances nicolargo/glances
使用方法
启动命令行界面
glances
启动 Web 界面
glances -w
启动后,通过浏览器访问 http://<your_ip>:61208 查看系统监控数据。
启动以特定模式输出
glances --export json  # JSON 输出
glances --export csv   # CSV 输出
命令行选项
命令行选项
| :- | :- | 
|---|---|
| -h,--help | 显示此帮助信息并退出 | 
| -V,--version | 显示程序版本号并退出 | 
| -d,--debug | 启用调试模式 | 
| -C CONF_FILE,--config CONF_FILE | 配置文件的路径 | 
| --modules-list | 显示模块(插件和导出)列表并退出 | 
| --stdout PLUGINS_STATS | 显示插件统计信息到标准输出(用逗号分隔的插件/插件属性列表) | 
禁用启用选项
| :- | :- | 
|---|---|
| --disable-plugin PLUGIN | 禁用插件(用逗号分隔的列表) | 
| --enable-plugin PLUGIN | 启用插件(用逗号分隔的列表) | 
| --disable-process | 禁用进程模块(减少Glances的CPU消耗) | 
| --disable-webui | 禁用Web界面(仅响应RESTful API) | 
| --enable-history | 启用历史模式 | 
| --disable-bold | 禁用终端中的粗体模式 | 
| --disable-bg | 禁用终端中的背景颜色 | 
| --enable-process-extended | 启用顶级进程的扩展统计 | 
| --disable-check-update | 禁用在线Glances版本检查 | 
| --disable-autodiscover | 禁用自动发现功能 | 
| --light,--enable-light | Curses UI的轻量模式(仅启用顶部菜单) | 
| -q,--quiet | 不显示 curses 界面 | 
SNMP
| :- | :- | 
|---|---|
| --snmp-community SNMP_COMMUNITY | SNMP社区 | 
| --snmp-port SNMP_PORT | SNMP端口 | 
| --snmp-version SNMP_VERSION | SNMP版本(1, 2c 或 3) | 
| --snmp-user SNMP_USER | SNMP用户名(仅适用于SNMPv3) | 
| --snmp-auth SNMP_AUTH | SNMP认证密钥(仅适用于SNMPv3) | 
| --snmp-force | 强制SNMP模式 | 
命令行选项
| :- | :- | 
|---|---|
| --export EXPORT | 启用导出模块(用逗号分隔的列表) | 
| --export-csv-file EXPORT_CSV_FILE | CSV导出文件路径 | 
| --export-json-file EXPORT_JSON_FILE | JSON导出文件路径 | 
命令行选项
| :- | :- | 
|---|---|
| -0,--disable-irix | 任务的CPU使用率将按CPU总数进行划分 | 
| -1,--percpu | 以每个CPU模式启动Glances | 
| -2,--disable-left-sidebar | 禁用网络、磁盘I/O、文件系统和传感器模块 | 
| -3,--disable-quicklook | 禁用快速查看模块 | 
| -4,--full-quicklook | 仅启用快速查看和负载模块 | 
| -5,--disable-top | 禁用顶部菜单(快速查看、CPU、内存、交换区和负载) | 
| -6,--meangpu | 以平均GPU模式启动Glances | 
命令行选项
| :- | :- | 
|---|---|
| -c CLIENT,--client CLIENT | 通过IPv4/IPv6地址、主机名或主机名:端口连接到Glances服务器 | 
| -s,--server | 以服务器模式运行Glances | 
| --browser | 启动客户端浏览器(服务器列表) | 
| -p PORT,--port PORT | 定义客户端/服务器TCP端口 [默认:61209] | 
| -B BIND_ADDRESS,--bind BIND_ADDRESS | 将服务器绑定到给定的IPv4/IPv6地址或主机名 | 
| --username | 定义客户端/服务器用户名 | 
| --password | 定义客户端/服务器密码 | 
命令行选项
| :- | :- | 
|---|---|
| -t TIME,--time TIME | 设置刷新时间(秒)[默认:3秒] | 
| -w,--webserver | 以Web服务器模式运行Glances(需要bottle库) | 
| --cached-time CACHED_TIME | 设置服务器缓存时间 [默认:1秒] | 
| --open-web-browser | 尝试在默认的 Web 浏览器中打开Web界面 | 
| -f PROCESS_FILTER,--process-filter PROCESS_FILTER | 设置进程过滤模式(正则表达式) | 
| --process-short-name | 强制使用进程名称的短名称 | 
| --hide-kernel-threads | 在进程列表中隐藏内核线程(Windows不可用) | 
命令行选项
| :- | :- | 
|---|---|
| -b,--byte | 以每秒字节数显示网络速率 | 
| --diskio-show-ramfs | 在 DiskIO 插件中显示RAM文件系统 | 
| --diskio-iops | 在 DiskIO 插件中显示每秒I/O操作数 | 
| --fahrenheit | 以华氏度显示温度(默认是摄氏度) | 
| --fs-free-space | 显示文件系统的可用空间而非已用空间 | 
| --theme-white | 优化显示颜色以适应白色背景 | 
键盘快捷键
快捷键
| 快捷键 | 功能 | 
|---|---|
| ENTER | 设置进程过滤器 | 
| a | 自动排序进程列表 | 
| A | 启用/禁用应用程序监控进程 | 
| b | 在网络I/O中切换比特/秒或字节/秒 | 
| B | 查看每秒磁盘I/O计数器 | 
| c | 按CPU使用率排序进程 | 
| C | 启用/禁用云统计 | 
| d | 显示/隐藏磁盘I/O统计 | 
| D | 启用/禁用Docker统计 | 
| e | 启用/禁用顶级扩展统计 | 
| E | 清除当前进程过滤器 | 
| f | 显示/隐藏文件系统和文件夹监控统计 | 
| F | 在文件系统使用和可用空间之间切换 | 
| g | 为当前历史生成图表 | 
| G | 启用/禁用GPU统计 | 
| h | 显示/隐藏帮助屏幕 | 
| i | 按I/O速率排序进程 | 
| I | 显示/隐藏IP模块 | 
| + | 增加选定进程的nice值/降低优先级(需要权限)- 仅在独立模式下 | 
| - | 减少选定进程的nice值/提高优先级(需要权限)- 仅在独立模式下 | 
| k | 终止选定进程(需要权限)- 仅在独立模式下 | 
快捷键
| 快捷键 | 功能 | 
|---|---|
| K | 显示/隐藏TCP连接 | 
| l | 显示/隐藏日志消息 | 
| m | 按内存使用率排序进程 | 
| M | 重置进程摘要的最小/最大值 | 
| n | 显示/隐藏网络统计 | 
| N | 显示/隐藏当前时间 | 
| p | 按名称排序进程 | 
| P | 启用/禁用端口统计 | 
| q|ESC|CTRL-C | 退出当前Glances会话 | 
| Q | 显示/隐藏IRQ模块 | 
| r | 重置历史记录 | 
| R | 显示/隐藏RAID插件 | 
| s | 显示/隐藏传感器统计 | 
| S | 启用/禁用微小曲线图 | 
| t | 按CPU时间排序进程(TIME+) | 
| T | 以组合方式查看网络I/O | 
| u | 按用户排序进程 | 
| U | 查看累积网络I/O | 
| w | 删除已完成的警告日志消息 | 
| W | 显示/隐藏Wifi模块 | 
| x | 删除已完成的警告和严重日志消息 | 
| z | 显示/隐藏进程统计 | 
快捷键
| 快捷键 | 功能 | 
|---|---|
| 0 | 启用/禁用Irix/Solaris模式。任务的CPU使用率将按CPU总数进行划分 | 
| 1 | 在全局CPU和每个CPU统计之间切换 | 
| 2 | 启用/禁用左侧边栏 | 
| 3 | 启用/禁用快速查看模块 | 
| 4 | 启用/禁用除快速查看和负载模块外的所有模块 | 
| 5 | 启用/禁用顶部菜单(快速查看、CPU、内存、交换区和负载) | 
| 6 | 启用/禁用平均GPU模式 | 
| 9 | 在黑白主题之间切换UI主题 | 
| / | 在进程命令行或命令名称之间切换 | 
| F5 | 刷新curses用户界面的统计数据 | 
| LEFT | 向左导航进程排序 | 
| RIGHT | 向右导航进程排序 | 
| UP | 在进程列表中向上 | 
| DOWN | 在进程列表中向下。在Glances客户端浏览器中(通过 --browser命令行参数访问): | 
| ENTER | 运行选定的服务器 | 
| UP | 在服务器列表中向上 | 
| DOWN | 在服务器列表中向下 | 
| q|ESC | 退出Glances | 
配置
位置
您可以将自己的 glances.conf 文件放在以下位置:
| :-- | -- | -- | 
|---|---|---|
| Linux,SunOS | ~/.config/glances/, /etc/glances/, /usr/share/docs/glances/ | |
| *BSD | ~/.config/glances/, /usr/local/etc/glances/, /usr/share/docs/glances/ | |
| macOS | ~/Library/Application Support/glances/, /usr/local/etc/glances/, /usr/share/docs/glances/ | |
| Windows | %APPDATA%\glances\glances.conf | 
- 在 Windows XP 上,%APPDATA% 为:C:\Documents and Settings\<USERNAME>\Application Data
- 在 Windows Vista 及更高版本上:C:\Users\<用户名>\AppData\Roaming
语法
[global]
# 刷新率(默认为至少 2 秒)
# 可以通过 -t <sec> 选项覆盖
# 也可以在每个插件部分覆盖它
refresh=2
# Glances 是否应该检查 PyPI 上是否有更新的版本?
check_update=false
# 历史大小(最大值数)
# 默认值为28800:1天,每3秒1分
history_size=28800
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 选项
# https://influxdb.com/
host=localhost
port=8086
user=root
password=root
db=glances
prefix=localhost
#tags=foo:bar,spam:eggs
Nginx AMP
[amp_nginx]
# 应启用 Nginx 状态页面 
# https://easyengine.io/tutorials/nginx/status-page/
enable=true
regex=\/usr\/sbin\/nginx
refresh=60
one_line=false
status_url=http://localhost/nginx_status
导出统计服务
CSV
$ glances --export csv \
   --export-csv-file /tmp/glances.csv \
   --quiet
可以将统计数据导出到 CSV 文件
JSON
$ glances --export json \
   --export-json-file /tmp/glances.json
可以将统计信息导出到 JSON 文件
Cassandra
您可以将统计数据导出到 Cassandra 或 Scylla 服务器
[cassandra]
host=localhost
port=9042
protocol_version=3
keyspace=glances
replication_factor=2
table=localhost
并运行 Glances:
$ glances --export cassandra
数据模型如下:
CREATE TABLE <table> (plugin text, time timeuuid, stat map<text,float>, PRIMARY KEY (plugin, time))
Graph
[graph]
# --export graph 选项的配置
# 设置创建图形(.svg 文件)的路径
# 可以通过 --graph-path 命令行选项覆盖
path=/tmp
# 可以通过设置自动生成图表
# generate_every 为一个非零值,对应于之间的秒数
# 两代。将其设置为 0 以禁用图形自动生成。
generate_every=60
# 请参阅 Pygal lib 文档中的以下配置键定义
# http://pygal.org/en/stable/documentation/index.html
width=800
height=600
style=DarkStyle
并运行 Glances:
$ glances --export graph \
      --export-graph-path /tmp
CouchDB
您可以将统计数据导出到 CouchDB 服务器
[mongodb]
host=localhost
port=27017
db=glances
user=root
password=example
并运行 Glances:
$ glances --export mongodb
InfluxDB
您可以将统计数据导出到 InfluxDB 服务器(时间序列服务器)
| 测量 | 字段 | 标签 | 
|---|---|---|
| cpu | user system iowait… | hostname | 
| network | read_bytes write_bytes time_since_update… | hostname disk_name | 
| diskio | rx tx time_since_update… | hostname interface_name | 
| docker | cpu_percent memory_usage… | hostname name | 
| gpu | proc mem temperature… | hostname gpu_id | 
InfluxDB (最高版本 1.7.x)
[influxdb]
host=localhost
port=8086
protocol=http
user=root
password=root
db=glances
# 所有测量名称都会添加前缀
# Ex: prefix=foo
#     => foo.cpu
#     => foo.mem
# 您还可以使用动态值
#prefix=foo
# 将为所有测量添加以下标签
# 您还可以使用动态值
# 注意:主机名始终作为标签添加
#tags=foo:bar,spam:eggs,domain:`domainname`
并运行 Glances:
$ glances --export influxdb
InfluxDB v2(来自 InfluxDB v1.8.x/Flux 和 InfluxDB v2.x)
[influxdb2]
host=localhost
port=8086
protocol=http
org=nicolargo
bucket=glances
token=EjFUTWe8U-MIseEAkaVIgVnej_TrUpDy==
# 设置两个导出之间的间隔(以秒为单位)
# 如果时间间隔设置为 0,
# 则使用 Glances 刷新时间(默认行为)
#interval=0
# 将为所有测量名称添加前缀
# Ex: prefix=foo
#     => foo.cpu
#     => foo.mem
# 您还可以使用动态值
#prefix=foo
# 将为所有测量添加以下标签
# 您还可以使用动态值.
# 注意:主机名始终作为标签添加
#tags=foo:bar,spam:eggs,domain:`domainname`
并运行 Glances:
$ glances --export influxdb2
Elasticsearch
可以将统计数据导出到 Elasticsearch 服务器
[elasticsearch]
host=localhost
port=9200
index=glances
并运行 Glances:
$ glances --export elasticsearch
MQTT
您可以将统计信息导出到 MQTT 服务器
[mqtt]
host=localhost
port=883
tls=true
user=glances
password=glances
topic=glances
topic_structure=per-metric
并运行 Glances:
$ glances --export mqtt
MongoDB
[couchdb]
host=localhost
port=
user=root
password=example
db=glances
并运行 Glances:
$ glances --export couchdb
OpenTSDB
[opentsdb]
host=localhost
port=4242
prefix=glances
tags=foo:bar,spam:eggs
并运行 Glances:
$ glances --export opentsdb
Kafka
您可以将统计信息导出到 Kafka 服务器
[kafka]
host=localhost
port=9092
topic=glances
#compression=gzip
# Tags will be added for all events
#tags=foo:bar,spam:eggs
# You can also use dynamic values
#tags=hostname:`hostname -f`
并运行 Glances:
$ glances --export kafka
内存插件的记录示例:
ConsumerRecord(topic=u'glances', partition=0, offset=1305, timestamp=1490460592248, timestamp_type=0, key='mem', value=u'{"available": 2094710784, "used": 5777428480, "cached": 2513543168, "mem_careful": 50.0, "percent": 73.4, "free": 2094710784, "mem_critical": 90.0, "inactive": 2361626624, "shared": 475504640, "history_size": 28800.0, "mem_warning": 70.0, "total": 7872139264, "active": 4834361344, "buffers": 160112640}', checksum=214895201, serialized_key_size=3, serialized_value_size=303)
使用 Kafka Glances 插件的 Python 代码示例:
from kafka import KafkaConsumer
import json
consumer = KafkaConsumer('glances', value_deserializer=json.loads)
for s in consumer:
  print(s)
Prometheus
[prometheus]
host=localhost
port=9091
prefix=glances
labels=src:glances
并运行 Glances:
$ glances --export prometheus
RabbitMQ
[rabbitmq]
host=localhost
port=5672
user=glances
password=glances
queue=glances_queue
#protocol=amqps
并运行 Glances:
$ glances --export rabbitmq
RESTful
[restful]
# --export-restful 选项的配置
# 例如,导出到 http://localhost:6789/
host=localhost
port=6789
protocol=http
path=/
URL语法
http://localhost:6789/
|      |         |   |
|      |         |   path
|      |         port
|      host
protocol
并运行 Glances
$ glances --export restful
ZeroMQ
[zeromq]
host=127.0.0.1
port=5678
prefix=G
并运行 Glances
$ glances --export zeromq
以下是订阅 Glances 统计数据的简单 Python 客户端:
import json
import zmq
context = zmq.Context()
subscriber = context.socket(zmq.SUB)
subscriber.setsockopt(zmq.SUBSCRIBE, 'G')
subscriber.connect("tcp://127.0.0.1:5678")
while True:
    _, plugin, data_raw = subscriber.recv_multipart()
    data = json.loads(data_raw)
    print('{} => {}'.format(plugin, data))
subscriber.close()
context.term()
Riemann
[riemann]
host=localhost
port=5555
并运行 Glances
$ glances --export riemann
StatsD
[statsd]
host=localhost
port=8125
prefix=glances
并运行 Glances
$ glances --export statsd
另见
- Glances 官方文档 nicolargo.github.io