使用atop工具监控Linux系统指标

使用atop工具监控Linux系统指标


链接:使用atop监控与分析Linux系统性能指标-云服务器 ECS-阿里云 (aliyun.com)

更新时间:2025-10-16 15:13:45产品详情我的收藏

atop允许用户通过交互界面即时洞察系统状态,还能作为后台服务运行,以指定频率记录系统与进程的活动快照,并将其保存为二进制日志,帮助用户精确回溯并诊断系统问题。

安装atop

  1. 使用Workbench登录Linux实例

  2. 安装atop。

    Alibaba Cloud Linux 3/2、CentOS 7/8、FedoraUbuntu / DebianCentOS Stream 9、Rocky Linux 9openSUSE
     
    # 更新软件包 sudo yum update -y # 安装 atop sudo yum install atop -y
  3. 启动 atop 服务。

     

    sudo systemctl start atop
  4. 验证atop是否启动成功。

    执行sudo systemctl status atop查看服务状态,若回执信息包含active(running),表示启动成功。

使用atop查看实时指标

  1. 执行atop [采样间隔秒数] [采样次数]命令进入交互模式。

     

    # 以默认配置查看(10秒刷新一次)。 atop  # 每5秒查看一次系统指标。 atop 5  # 以10秒为间隔,采集30次系统指标。 atop 10 30  # 以30秒为间隔,采集10次,并结果写入文件。 atop 30 10 > /tmp/atop.mem
    • 系统资源概览:汇总了CPU、内存、交换空间、磁盘I/O和网络的整体使用情况。

      image

    • 进程级详情:展示了各个进程的资源消耗详情。

      image

  2. 在交互模式下,可使用单个字母键切换视图或者排序。




    按键

    功能

    用途

    c

    显示完整命令行

    查看进程启动的具体参数。

    g

    通用视图(默认)

    综合查看 CPU、内存增长、磁盘 I/O。

    m/M

    内存视图/按内存排序

    用于分析内存使用、页错误,排查内存泄漏。

    d/D

    磁盘视图/按磁盘排序

    用于分析磁盘 I/O,定位磁盘读写高的进程。

    n/N

    网络视图/按网络排序(需安装并加载netatop内核模块

    用于分析网络流量,定位网络流量大的进程。

    a

    聚合视图

    将一个程序的所有线程/进程资源消耗聚合在一起。

    C

    按 CPU 排序

    快速定位消耗 CPU 最多的进程。

    h

    显示帮助

    查看更多快捷键。

    q

    退出

    退出交互模式。

使用atop查看历史指标

atop服务成功运行后,会定期在/var/log/atop/目录下生成以atop_YYYYMMDD格式命名的二进制日志文件。

atop 的日志是二进制文件,使用catlessvim等文本编辑器打开会显示乱码。

读取历史日志

  1. 读取历史日志文件。

    使用atop -r <日志文件>命令加载指定的日志文件。

     

    # 查看当天的日志,atop会自动查找当天的日志文件 atop -r # 查看指定日期的日志 atop -r /var/log/atop/atop_YYYYMMDD
  2. 在日志中跳转到指定时间点。

    加载日志后,界面显示的是该日志文件的第一个时间点快照。

    1. 按 t 键:向后跳转到下一个时间点的快照。

    2. 按 T 键(大写):向前跳转到上一个时间点的快照。

    3. 按 b 键:输入具体时间(格式 HH:MM),直接跳转到该时间点。

优化 atop 日志记录行为

在分析历史日志时,若发现默认的日志记录频率(10分钟一次)对于某些问题来说太过宽泛,或者默认的28天保留时长不能满足监控需求,可通过修改 atop 的配置文件来调整其后台日志的记录频率、保留天数和存储路径。

  1. 使用vim或其他文本编辑器打开配置文件。

    • RHEL 及其衍生版(Alibaba Cloud Linux,CentOS,Fedora,Rocky Linux)。

       

      sudo vim /etc/sysconfig/atop
    • Debian 及其衍生版(Ubuntu, Debian),openSUSE。

       

      sudo vim /etc/default/atop
  2. 默认配置文件的内容如下:

     

    LOGOPTS="" LOGINTERVAL=600 LOGGENERATIONS=28 LOGPATH=/var/log/atop
    • LOGOPTS:额外的日志记录选项。例如,设置-L可在日志轮转时创建一个指向最新日志的符号链接 /var/log/atop/atop_current,方便快速访问。

    • LOGINTERVAL:日志记录的采样间隔,单位是秒。默认值通常是 600(即10分钟),表示每10分钟记录一次系统快照。

    • LOGGENERATIONS:日志文件的生命周期,单位是天。默认值通常是 28,表示 atop 会自动删除28天前的旧日志文件。

    • LOGPATH:日志文件存储路径,默认为/var/log/atop

      如果修改此路径,请确保新目录已存在且 atop 进程有写入权限。
  3. 配置修改后,需重启atop服务让配置生效。

     

    sudo systemctl restart atop

生成指标报告

atopsar是atop工具包中的一个非交互式的命令行工具,用于从atop记录的二进制日志文件中提取数据并生成系统性能报告。

使用示例

  • 查看当前系统在 1 分钟内(12 次,间隔 5 秒)的CPU使用率指标报告。

     

    atopsar -c 5 12
  • 查看当天指定时间段的内存指标报告。

     

    # 查看当天18:00至18:01的内存指标报告 atopsar -m -b 18:00 -e 18:01
  • 查看指定日期内,指定时间段的内存指标报告。

     

    # 查看2025年8月15日 18:00至18:01的内存指标报告。 atopsar -m -r /var/log/atop/atop_20250815 -b 18:00 -e 18:01

atopsar命令基本语法

 
atopsar [options] [interval] [count]
  • [options]:用于指定报告类型的标志,例如-c(CPU),-m(内存),-d(磁盘)。

  • [interval]:指定输出报告的时间间隔,单位为秒。

  • [count]:指定输出报告的次数。

指标解读

系统资源概览





<td rowspan="5" colspan="1" style="box-sizing:                                        

指标类别

指标

详细说明

单位

ATOP

主机名, 日期

显示当前主机名、采样日期和时间。

-

采样间隔

显示两次采样之间的时间间隔。

PRC(进程总体情况)

sys

在采样间隔内,所有进程在内核模式下消耗的CPU总时间。

user

在采样间隔内,所有进程在用户模式下消耗的CPU总时间。

#proc

系统当前的总进程数量。

#trun

处于运行中状态的平均线程数。

#tslpi

处于可中断睡眠状态的线程数。

#tslpu

处于不可中断睡眠状态的线程数。

#zombie

僵尸进程的数量。

clones

在采样间隔内,通过clone系统调用创建的新进程/线程数。

个/秒

#exit

在采样间隔内,退出的进程数量。

个/秒

CPU/cpu(CPU整体/单个CPU核心)

sys%

CPU在内核模式下花费的时间百分比。

%

user%

CPU在用户模式下花费的时间百分比。

%

irq%

CPU处理硬件中断(irq)和软件中断(softirq)的时间百分比。

%

idle%

CPU处于完全空闲状态的时间百分比。

%

wait%

CPU因等待磁盘I/O完成而处于空闲状态的时间百分比。

%

steal%

虚拟CPU等待物理CPU时间的百分比(被宿主机或其他虚拟机占用的时间)。

%

guest%

运行虚拟机所花费的CPU时间的百分比。

%

freq%

CPU的平均运行频率,相对于其最大频率的百分比。

%

CPL(CPU负载)

avg1/avg5/avg15

过去1分钟/5分钟/15分钟的系统平均负载。

-

csw

在采样间隔内,上下文切换的次数。

次/秒

intr

在采样间隔内,发生的中断总次数。

次/秒

MEM(物理内存)

tot

系统物理内存总量。

GiB/MiB

free

完全未被使用的空闲内存量。

GiB/MiB

cache

用作页面缓存的内存量,用于缓存文件数据。

GiB/MiB

dirty

在页面缓存中,已被修改但尚未写回磁盘的脏页大小。

MiB

buff

用作缓冲区缓存的内存量,用于缓存块设备元数据。

MiB

slab

内核用于自身数据结构(slab分配器)的内存量。

MiB

shmem

共享内存(包括tmpfs)的大小。

MiB

vmbal