
atop
监控 Linux 系统资源与进程的工具
补充说明
atop 命令 是一款开源的系统监控工具,它以一定的频率记录系统的运行状态,采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中。服务器出现问题后,我们可获取相应的 atop 日志文件进行分析。atop 是一款开源软件,我们可以从这里获得其源码和rpm 安装包。
语法
shell
atop [选项] [参数]说明
ATOP 列
该列显示了主机名、信息采样日期和时间点。
PRC 列
该列显示进程整体运行情况:
- sys、usr 字段分别指示进程在内核态和用户态的运行时间
- #proc 字段指示进程总数
- #zombie 字段指示僵尸进程的数量
- #exit 字段指示 atop 采样周期期间退出的进程数量
CPU 列
该列显示 CPU 整体(即多核 CPU 作为一个整体 CPU 资源)的使用情况:
- sys、usr 字段指示 CPU 被用于处理进程时,进程在内核态、用户态所占 CPU 的时间比例
- irq 字段指示 CPU 被用于处理中断的时间比例
- idle 字段指示 CPU 处在完全空闲状态的时间比例
- wait 字段指示 CPU 处在“进程等待磁盘 IO 导致 CPU 空闲”状态的时间比例
CPU 列各个字段指示值相加结果为 N00%,其中 N 为 cpu 核数。
cpu 列
该列显示某一核 cpu 的使用情况,各字段含义可参照 CPU 列,各字段值相加结果为 100%。
CPL 列
该列显示 CPU 负载情况:
- avg1、avg5 和 avg15 字段:过去 1 分钟、5 分钟和 15 分钟内运行队列中的平均进程数量
- csw 字段指示上下文交换次数
- intr 字段指示中断发生次数
MEM 列
该列指示内存的使用情况:
- tot 字段指示物理内存总量
- free 字段指示空闲内存的大小
- cache 字段指示用于页缓存的内存大小
- buff 字段指示用于文件缓存的内存大小
- slab 字段指示系统内核占用的内存大小
SWP 列
该列指示交换空间的使用情况:
- tot 字段指示交换区总量
- free 字段指示空闲交换空间大小
PAG 列
该列指示虚拟内存分页情况:
- swin、swout 字段:换入和换出内存页数
DSK 列
该列指示磁盘使用情况,每一个磁盘设备对应一列,如果有 sdb 设备,那么增多一列 DSK 信息:
- sda 字段:磁盘设备标识
- busy 字段:磁盘忙时比例
- read、write 字段:读、写请求数量
NET 列
多列 NET 展示了网络状况,包括传输层(TCP 和 UDP)、IP 层以及各活动的网口信息:
- XXXi 字段指示各层或活动网口收包数目
- XXXo 字段指示各层或活动网口发包数目
atop 日志
每个时间点采样页面组合起来就形成了一个 atop 日志文件,我们可以使用atop -r XXX命令对日志文件进行查看。日志文件的保存方式如下:
- 每天保存一个 atop 日志文件,该日志文件记录当天信息
- 日志文件以
atop_YYYYMMDD的方式命名 - 设定日志失效期限,自动删除一段时间前的日志文件
atop 开发者提供了以上日志保存方式,相应的atop.daily脚本可以在源码目录下找到。在atop.daily脚本中,我们可以通过修改INTERVAL变量改变 atop 信息采样周期(默认为 10 分钟);通过修改以下命令中的数值改变日志保存天数(默认为 28 天):
shell
(sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \; )&最后,我们修改 cron 文件,每天凌晨执行atop.daily脚本:
shell
0 0 * * * root /etc/cron.daily/atop.daily
