Glances - Linux 上的实时系统监控工具

Glances 是一个跨平台的、基于命令行的系统监控工具,由 Python 语言编写,使用 Python 的 psutil 库来抓取系统数据。可以监控 CPU、负载均衡、内存、网络设备、磁盘 I/O、进程和文件系统使用等。

一、输出信息概览

  • CPU 信息(用户应用、系统核心程序、闲置)
  • 内存信息,包括 RAM、交换空间、闲置内存等
  • CPU 的平均负载(过去 1 分钟、5 分钟、15 分钟)
  • 网络连接的下载 / 上传速率
  • 进程总数(running、sleeping 等)
  • 磁盘 I/O 读写速度
  • 当前已挂载设备的磁盘空间使用
  • 高资源占用的进程,及其 CPU/内存占用、PID、状态等
  • 底部显示当前时间
  • 将资源消耗过高的进程红色高亮显示

glances

二、软件安装

Glances 一般已集成到大多数 Linux 发行版的官方软件源中。可以直接使用系统的包管理器(如 apt-get、yum)安装:
sudo apt-get install glances
当然也可以使用 Python 的包管理器(pip 命令)进行安装:
pip install glances

默认情况下,监控信息的刷新时间为 1 秒钟。可以使用 -t 选项自定义间隔时间:
glances -t 2

Glances 有 4 种颜色标记,分别表示不同的紧急程度:

  • 绿色:OK
  • 蓝色:CAREFUL
  • 紫色:WARNING
  • 红色:CRITICAL

可以在配置文件(默认为 /etc/glances/glances.conf )中自行更改阈值。默认为 careful = 50、warning = 70、critical = 90 。

三、命令选项(热键)

  • a:自动排序进程
  • c:按 CPU 使用率排序进程
  • m:按内存占用排序进程
  • p:按名称排序进程
  • i:按 I/O 速率排序进程
  • d:显示或隐藏磁盘 I/O 统计
  • f:显示或隐藏文件系统使用统计
  • n:显示或隐藏网络流量统计
  • s:显示或隐藏传感器数据统计
  • l:显示或隐藏日志
  • h:显示帮助信息
  • q:退出

glances 命令选项

四、监控远程系统

可以在远程系统中以服务模式运行 glances 程序,再通过客户端上的 glances 连接到远程系统,以监控其状态。
可以使用 -s 选项启用服务器/客户端模式:

1
2
3
4
5
6
$ glances -s --username
Define the Glances server username: starky
Define the Glances server password (starky username):
Password (confirm):
Do you want to save the password? [Yes/No]: Yes
Glances XML-RPC server is running on 0.0.0.0:61209

客户端使用 -c 选项连接:
glances -c ip_address --username
glances -s

WebServer 模式

在 glances 的 WebServer 模式下,客户端只通过浏览器访问就可以获取远程服务器的运行状态。该模式需要额外安装 Python 的 Bottle 模块:
pip install bottle
安装成功后,使用 glances -w 命令即可开启 WebServer 模式。
客户端使用浏览器访问 http://SERVER_IP:61208/ 进入监控界面。
Glances WebServer

将 WebServer 模式配置为系统服务
  1. 创建 Unit 文件
    sudo vim /etc/systemd/system/glancesweb.service
    文件内容如下:

    1
    2
    3
    4
    5
    6
    7
    [Unit]
    Description = Glances in Web Server Mode
    After = network.target
    [Service]
    ExecStart = /usr/bin/glances -w -t 5 # glances路径因安装方法不同根据实际情况确定,可使用 which glances 命令获取
    [Install]
    WantedBy = multi-user.target
  2. 启用 systemd 服务并运行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ sudo systemctl enable glancesweb
    $ sudo systemctl start glancesweb
    $ systemctl status glancesweb
    ● glancesweb.service - Glances in Web Server Mode
    Loaded: loaded (/etc/systemd/system/glancesweb.service; enabled; vendor preset: enabled)
    Active: active (running) since Tue 2018-08-21 00:02:17 CST; 8min ago
    Main PID: 27912 (glances)
    Tasks: 1 (limit: 4915)
    CGroup: /system.slice/glancesweb.service
    └─27912 /home/starky/miniconda3/envs/python2/bin/python /home/starky/miniconda3/envs/python2/bin/glances -w -t 5

    8月 21 00:02:17 starky-ThinkPad-T460 systemd[1]: Started Glances in Web Server Mode.

参考文章

Glances – An Advanced Real Time System Monitoring Tool for Linux
Use Glances to Monitor Remote Linux in Web Server Mode