atop 是一个功能非常强大的linux服务器监控工具,它的数据采集主要包括:CPU、内存、磁盘、网络、进程等,并且内容非常的详细,特别是当那一部分存在压力它会以特殊的颜色进行展示,如果颜色是红色那么说明已经非常严重了。
注意:所有的信息都是反映过去10s的状态信息
安装
1 | 1.官网:http://www.atoptool.nl/downloadatop.php找下载链接 |
资源监控字段含义
上图中列出了不少字段以及数值,各字段的含义是什么?我们应该怎么看?以上每个字段的含义都是相对采样周期而言的,下面我们先来关注上图显示的上半部分。
ATOP列:该列显示了主机名、信息采样日期和时间点
PRC列:该列显示进程整体运行情况
- sys:过去10s所有的进程在内核态运行的时间总和
- usr:过去10s所有的进程在用户态的运行时间总和
- #proc:进程总数
- #trun:过去10s转换的进程数
- #zombie:过去10s僵死进程的数量
- #exit:在10s采样周期期间退出的进程数量
CPU列:该列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况,我们知道CPU可被用于执行进程、处理中断,也可处于空闲状态(空闲状态分两种,一种是活动进程等待磁盘IO导致CPU空闲,另一种是完全空闲)
- sys:cpu在处理进程时处于内核态的时间所占的比例
- usr: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(context swapping)
:上下文交换次数intr(interrupt)
:中断发生次数- numcpu:cpu的核心数
MEM列:列主要展示内存的使用信息
- tot:物理内存总量
- free:空闲内存的大小
- cache:用于页缓存的内存大小
- buff:用于文件缓存的内存大小
- slab:系统内核占用的内存大小
- dirty:内存中的脏页大小
SWP列:该列指示交换空间的使用情况
- tot:交换区总量
- free:空闲交换空间大小
PAG列:该列指示虚拟内存分页情况
- swin:换入内存页数
- swout:换出内存页数
LVM/DSK列:该列指示磁盘使用情况,每一个磁盘设备对应一列,如果有sdb设备,那么增多一列DSK信息
- sda字段:磁盘设备标识
- busy:磁盘忙时所占比例
- read、KiB/r 、MBr/s:每秒读的请求数和请求的kb、mb数
- write、KiB/w 、MBr/w:每秒写的请求数和请求的kb、mb数
- avq:磁盘平均队列长度(根据实际的监控该列好像是磁盘平均请求数avgrq)
- avio:磁盘的平均io时间
NET列:多列NET展示了传输层(TCP/UDP)、网络层(ip)、网络接口的网络传输信息。
- XXXi 字段指示各层或活动网口收包数目
- XXXo 字段指示各层或活动网口发包数目
transport:传输层(TCP/UDP)的数据输入输出的展示,例如在服务器的内部进程之间的数据传输就是在传输层展示,以为还不需要往下通过网络进行传输。
network:网络层(ip)的数据输入输出的展示;
eth0:默认的网络接口的数据输入输出的展示,也就是通过etho的ip的数据传输的展示,
- sp:网卡的带宽(1000M)
- pcki:传入的数据包的大小
- pcko:传出的数据包的大小
- si:每秒传入的数据大小
- so:每秒传出的数据大小
- coll(collisions):每秒的冲突数
- mlti(MULTICAST):每秒的多路广播的数量
- erri/erro:每秒输入输出的错误数
- drpi/drpo:每秒的输入输出的丢包数
lo:通过127.0.0.1网络接口的数据传输的数据展示,参数和上面的eth0是一样的
视图切换
- g:默认视图
- m:内存视图
- c:命令视图
默认视图(g)
按g键可以从其他视图跳到默认视图
从上图中,我们可以看到PID为3061的find进程在退出前在
内核模式下占用了3.43秒CPU时间,
在用户模式下占用了0.96秒CPU时间,共使用CPU时间为4.39秒,相对10分钟采样周期,CPU时间占用比例为1%,
ST列表示进程状态,N表示该进程是前一个采样周期新生成的进程,E表示该进程已退出,
EXC列指示进程的退出码。从进程名在“<>”符号中,我们亦可知该进程已退出。
内存视图(m)
内存视图展示了进程使用内存情况,按m键可进入内存视图。
SYSCPU:过去10s内进程处于内核模式占用的CPU时间
USRCPU:过去10s进程处于用户模式占用的CPU时间
VSIZE:过去10s 进程占用的虚拟空间大小
RSIZE:过去10s 进程占用的内存空间大小
PSIZE:过去10s 进程占用的页大小
VGROW:过去10s 进程增长的虚拟空间大小
RGROW:过去10s 进程增长的内存大小
SWAPSZ:过去10s 进程使用交换空间的大小。
MEM:过去10s 进程占用内存百分比
磁盘状态模式(d)
RDDSK:过去10S进程读磁盘的数据量
WRDSK:过去10S进程写磁盘的数据量
DSK:过去10S进程所占磁盘的百分比
CMD:进程名
进程状态模式(p)
同一个名称的进程显示一列,根据进程名进行分组显示
NPROCS:相同名称的进程数量
其它的参数上面已经有列出
线程状态模式(v)
用户模式(u)
根据用户进行分组显示
命令视图模式(c)
按c键我们可以进入命令视图,该视图展示了与每个进程相对应的命令。
有时我们某位“马大哈”同事执行了某个脚本或命令,使得系统资源占用率异常飙高,这时,我们可以很容易地通过atop的命令视图找到导致异常的命令。
atop的相关文件
/etc/atop:目录保存的是atop的配置文件
/etc/rc.d/init.d/atop:atop的启动文件
/etc/cron.d/atop:atop的定时任务文件,默认是每天0点开始
/var/log/atop:atop日志文件,默认是每天0点开始会产生当天的一个日志文件,然后可以通过atop -r file 查看信息,但是没有找到自动播放的的功能,只能通过输入b显示一个指定的时间的信息,可以写个循环来实现
/usr/bin/atop:atop命令目录
atop日志
每个时间点采样页面组合起来就形成了一个atop日志文件,我们可以使用”atop -r XXX”命令对日志文件进行查看。那以什么形式保存atop日志文件呢?
对于atop日志文件的保存方式,我们可以这样:
- 每天保存一个atop日志文件,该日志文件记录当天信息
- 日志文件以”atop_YYYYMMDD”的方式命名
- 设定日志失效期限,自动删除一段时间前的日志文件
其实atop开发者已经提供了以上日志保存方式,相应的atop.daily脚本可以在源码目录下找到。在atop.daily脚本中,我们可以通过修改INTERVAL变量改变atop信息采样周期(默认为10分钟);通过修改以下命令中的数值改变日志保存天数(默认为28天):
1 | (sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \; )& |