linux atop详解



atop 是一个功能非常强大的linux服务器监控工具,它的数据采集主要包括:CPU、内存、磁盘、网络、进程等,并且内容非常的详细,特别是当那一部分存在压力它会以特殊的颜色进行展示,如果颜色是红色那么说明已经非常严重了。

注意:所有的信息都是反映过去10s的状态信息


安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#1.官网:http://www.atoptool.nl/downloadatop.php找下载链接
#2.下载解压编译
wget http://www.atoptool.nl/download/atop-2.2-3.tar.gz
tar xvf atop-2.2-3.tar.gz
cd atop-2.2-3
make prefix=/usr/local/atop install
#3.(报错rawlog.c:154:18: fatal error: zlib.h: No such file or directory,yum -y install zlib未解决,因为只安装lib没有头文件,提示需要zlib头文件)

#4.解决方案:标准安装zlib
#官网: http://www.zlib.net/
#找下载链接:http://zlib.net/zlib-1.2.8.tar.gz 或者:http://iweb.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz
cd ../
wget http://zlib.net/zlib-1.2.8.tar.gz
tar xzf zlib-1.2.8.tar.gz
cd zlib-1.2.8
#创建动态库
./configure --shared
make test
make install
cp zutil.h /usr/local/include
cp zutil.c /usr/local/include

#5.重新编译
cd atop-2.2-3
make clean
make install
#提示Choose either 'make systemdinstall' or 'make sysvinstall' #关于采用哪种方式安装可以参考这里:http://www.linuxdiyf.com/linux/10711.html
make systemdimstall
#6.运行
atop
#7.退出
q
参考:http://my.oschina.net/nox/blog/221014
http://blog.sina.com.cn/s/blog_714dacd10102v6et.html

资源监控字段含义

上图中列出了不少字段以及数值,各字段的含义是什么?我们应该怎么看?以上每个字段的含义都是相对采样周期而言的,下面我们先来关注上图显示的上半部分。

ATOP列:该列显示了主机名、信息采样日期和时间点

PRC列:该列显示进程整体运行情况

  1. sys:过去10s所有的进程在内核态运行的时间总和
  2. usr:过去10s所有的进程在用户态的运行时间总和
  3. #proc:进程总数
  4. #trun:过去10s转换的进程数
  5. #zombie:过去10s僵死进程的数量
  6. #exit:在10s采样周期期间退出的进程数量

CPU列:该列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况,我们知道CPU可被用于执行进程、处理中断,也可处于空闲状态(空闲状态分两种,一种是活动进程等待磁盘IO导致CPU空闲,另一种是完全空闲)

  1. sys:cpu在处理进程时处于内核态的时间所占的比例
  2. usr:cpu在处理进程时处于用户态的时间所占的比例
  3. irq:cpu在处理进程的中断请求所占的实际比例
  4. idle:CPU处在完全空闲状态的时间比例
  5. wait:CPU处在“进程等待磁盘IO导致CPU空闲”状态的时间比例

CPU列各个字段指示值相加结果为N00%,其中N为cpu核数。

cpu列:该列显示某一核cpu的使用情况,各字段含义可参照CPU列,各字段值相加结果为100%

CPL列:该列显示CPU负载情况

  1. avg1、avg5和avg15字段:过去1分钟、5分钟和15分钟内运行队列中的平均进程数量
  2. csw(context swapping)上下文交换次数
  3. intr(interrupt)中断发生次数
  4. numcpu:cpu的核心数

MEM列:列主要展示内存的使用信息

  1. tot:物理内存总量
  2. free:空闲内存的大小
  3. cache:用于页缓存的内存大小
  4. buff:用于文件缓存的内存大小
  5. slab:系统内核占用的内存大小
  6. dirty:内存中的脏页大小

SWP列:该列指示交换空间的使用情况

  1. tot:交换区总量
  2. free:空闲交换空间大小

PAG列:该列指示虚拟内存分页情况

  1. swin:换入内存页数
  2. swout:换出内存页数

LVM/DSK列:该列指示磁盘使用情况,每一个磁盘设备对应一列,如果有sdb设备,那么增多一列DSK信息

  1. sda字段:磁盘设备标识
  2. busy:磁盘忙时所占比例
  3. read、KiB/r 、MBr/s:每秒读的请求数和请求的kb、mb数
  4. write、KiB/w 、MBr/w:每秒写的请求数和请求的kb、mb数
  5. avq:磁盘平均队列长度(根据实际的监控该列好像是磁盘平均请求数avgrq)
  6. avio:磁盘的平均io时间

NET列:多列NET展示了传输层(TCP/UDP)、网络层(ip)、网络接口的网络传输信息。

  1. XXXi 字段指示各层或活动网口收包数
  2. XXXo 字段指示各层或活动网口发包数

transport:传输层(TCP/UDP)的数据输入输出的展示,例如在服务器的内部进程之间的数据传输就是在传输层展示,以为还不需要往下通过网络进行传输。

network:网络层(ip)的数据输入输出的展示;

eth0:默认的网络接口的数据输入输出的展示,也就是通过etho的ip的数据传输的展示,

  1. sp:网卡的带宽(1000M)
  2. pcki:传入的数据包的大小
  3. pcko:传出的数据包的大小
  4. si:每秒传入的数据大小
  5. so:每秒传出的数据大小
  6. coll(collisions):每秒的冲突数
  7. mlti(MULTICAST):每秒的多路广播的数量
  8. erri/erro:每秒输入输出的错误数
  9. drpi/drpo:每秒的输入输出的丢包数

lo:通过127.0.0.1网络接口的数据传输的数据展示,参数和上面的eth0是一样的

视图切换

  1. g:默认视图
  2. m:内存视图
  3. 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日志文件的保存方式,我们可以这样:

  1. 每天保存一个atop日志文件,该日志文件记录当天信息
  2. 日志文件以”atop_YYYYMMDD”的方式命名
  3. 设定日志失效期限,自动删除一段时间前的日志文件

其实atop开发者已经提供了以上日志保存方式,相应的atop.daily脚本可以在源码目录下找到。在atop.daily脚本中,我们可以通过修改INTERVAL变量改变atop信息采样周期(默认为10分钟);通过修改以下命令中的数值改变日志保存天数(默认为28天):

1
(sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \; )&