atop命令使用

atop命令安装

阿里地址: https://help.aliyun.com/zh/ecs/how-to-use-the-linux-system-atop-monitoring-tools#51eeccf4e1uww

yum install atop
systemctl start netatop

分析atop日志

atop -r /var/log/atop/atop_2023XXXX

打开日志文件后,您可以使用以下命令筛选数据。

  • c:按照进程CPU使用率进行降序筛选。

  • m:按照进程内存使用率进行降序筛选。

  • d:按照进程磁盘使用率进行降序筛选。

  • a:按照进程资源综合使用率进行降序筛选。

  • n:按照进程网络使用率进行降序筛选。

  • t:跳转到下一个监控采集点。

  • T:跳转到上一个监控采集点。

  • b:指定时间点,格式为YYYYMMDDhhmm。

参数说明

ATOP行

主机名、信息采样日期和时间点。

PRC行

进程整体运行情况。

  • sys、user:分别代表进程在内核态和用户态的运行时间。
  • #proc:进程总数。
  • #trun:处于running状态进程数。
  • #tslpi:处于sleeping interruptible状态的进程数。
  • #tslpu:处于sleeping uninterruptible状态的进程数。
  • #zombie:僵死进程的数量。
  • #exit:atop采样周期内退出的进程数。

CPU行

CPU整体的使用情况,即多核CPU作为一个整体CPU资源的使用情况。CPU行各个字段数字相加结果为N*100%,其中N为CPU的核数。

  • sys、user:CPU在用于处理进程时,进程在内核态及用户态所占CPU的时间比例。
  • irq:CPU用于处理中断的时间比例。
  • idle:CPU处在完全空闲状态的时间比例。
  • wait:CPU处在进程等待磁盘IO导致CPU空闲状态的时间比例。

CPL行

CPU负载情况。

  • avg1、avg5和avg15:分别代表过去1分钟、5分钟和15分钟内运行队列中的平均进程数量。
  • csw:上下文切换次数。
  • intr:中断发生次数。

MEM行

内存的使用情况。

  • tot:物理内存总量。
  • free:空闲内存的大小。
  • cache:用于页缓存的内存大小。
  • buff:用于文件缓存的内存大小。
  • slab:系统内核占用的内存大小。

SWP行

交换空间的使用情况。

  • tot:交换区总量。
  • free:空闲交换空间大小。

PAG行

虚拟内存分页情况。

swin、swout:分别代表换入和换出内存页数。

DSK行

磁盘使用情况,每一个磁盘设备对应一列,如果有vdb设备,那么将会增加一行DSK信息。

  • vda:磁盘设备标识。
  • busy:磁盘处于busy状态的时间比例。
  • read、write:分别代表读、写请求数量。

NET行

多列NET展示了网络状况,包括传输层TCP和UDP、IP层以及各活动的网口信息。

  • ****i:各层或活动网口接手包大小。
  • ****o:各层或活动网口发送包大小。

atop安装网络监控

  • Centos
yum install kernel-devel-$(uname -r)
yum install elfutils-libelf-devel
wget https://www.atoptool.nl/download/netatop-3.1.tar.gz --no-check-certificate
tar -zxvf netatop-3.1.tar.gz
cd netatop-3.1
make && make install
systemctl start netatop
  • ubuntu
apt install zlib1g-dev
wget https://www.atoptool.nl/download/netatop-3.1.tar.gz --no-check-certificate
tar -zxvf netatop-3.1.tar.gz
cd netatop-3.1
make && make install
systemctl start netatop

atop配置文件

vim /etc/sysconfig/atop

修改以下配置。

LOGINTERVAL:监控周期,建议将默认的监控周期600s修改为30s。

LOGGENERATIONS:日志保留时间,为避免atop长时间运行占用太多磁盘空间,建议将默认的日志保留时间28天修改为7天。

LOGOPTS=""
LOGINTERVAL=30
LOGGENERATIONS=7
LOGPATH=/var/log/atop

我们到底该不该启用交换分区

开启交换分区容易导致IO异常:

当Linux系统的内存不足时,会导致系统频繁进行内存交换(swap),即将内存中的数据移出到磁盘上的交换空间(swap space),以释放内存供其他进程使用。这就会导致磁盘IO操作的增加,从而导致IO高的问题。

其他atop总结

atop:改行列出了服务器的host、当前时间、信息收集的频率

PRC:该列展示整个系统的性能状况;

sys:过去10s所有的进程在内核态运行的时间总和
usr:过去10s所有的进程在用户态的运行时间总和
#proc:进程总数
#trun:过去10s转换的进程数
#zombie:过去10s僵死进程的数量
#exit:在10s采样周期期间退出的进程数量
CPU: cpu列展示了服务器的CPU整体的一个状态信息,包括内核和用户所占的比例、处理中断所占的比例、CPU的处于空闲下比例(这里是100%*cpu核心数,CPU有时候也会因为由于磁盘性能问题出现等待的空闲)

sys:cpu在处理进程时处于内核态的时间所占的比例
usr:cpu在处理进程时处于用户态的时间所占的比例
irq:cpu在处理进程的中断请求所占的实际比例
idle:cpu处于空闲状态下的时间比例(除了本身空闲,还有比如等待磁盘io的情况下也会处于空闲状态)
cpu:每个核心的状态信息,和总的CPU信息一样,每列加起来的总和就是总的CPU的状态信息。

CPL:cpl也反应了服务器整体的性能,展示信息包括进程等待队列数,分别从过去1分钟、5分钟、15分钟的采样信息。

avg1:过去1分钟进程等待队列数
avg5:过去5分钟进程等待队列数
avg15:过去15分钟进程等待队列数
csw(context swapping):上下文交换次数
intr(interrupt):中断发生的次数
numcpu:cpu的核心数
mem:该列主要展示内存的使用信息。

tot:物理内存总量
free:空闲内存的大小(不能单单从这个字段就判断内存不足,还需要参考free -m中的-/+ buffers/cache:free因为这块的内容随时就可以拿过来使用,还可以从是否有使用Swap来判断是否内存不足)
cache:用于页缓存的内存大小
dirty:内存中的脏页大小
buff:用于文件缓存的内存大小
slab:系统内核占用的内存大小
SWP:交换空间使用情况

tot:交换空间总量
free:交换空间剩余空间总量
PAG列:虚拟内存分页情况

swin:换入内存页数
swout:换出内存页数
LVM/DSK:每个分区信息以一列来进行展示

busy:磁盘忙时所占比例
read、KiB/r 、MBr/s:每秒读的请求数和请求的kb、mb数
write、KiB/w 、MBr/w:每秒写的请求数和请求的kb、mb数
avq:磁盘平均队列长度(根据实际的监控该列好像是磁盘平均请求数avgrq)
avio:磁盘的平均io时间

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

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是一样的

进程列

进程列展示了每个进程在过去10S内的数据

m模式:内存状态模式

SYSCPU:过去10s内进程处于内核模式占用的CPU时间

USRCPU:过去10S进程处于用户模式占用的CPU时间

VSIZE:过去10S进程占用的虚拟空间大小

RSIZE:过去10S进程占用的内存空间大小

PSIZE:过去10S进程占用的页大小

VGROW:过去10S进程增长的虚拟空间大小

RGROW:过去10S进程增长的内存大小

SWAPSZ:过去10S进程使用交换空间的大小。

MEM:过去10S进程占用内存百分比

d模式:磁盘状态模式

WRDSK:过去10S进程写磁盘的数据量

DSK:过去10S进程所占磁盘的百分比

CMD:进程名

p模式:进程状态模式,同一个名称的进程显示一列,根据进程名进行分组显示

NPROCS:相同名称的进程数量

其它的参数上面已经有列出

v模式:线程状态模式

u模式:用户模式

根据用户进行分组显示

g模式:标准模式

s:进程当前的状态,包括:s(sleeping),R(runing)等

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 -r atop_20160510 -b 13:00 -e 17:00
atop产生的日志文件信息是10分钟一个采样周期进行记录,可以通过修改/etc/atop/atop.daily文件进行修改。

atop的其它参数:

Usage: atop [-flags] [interval [samples]]
or
Usage: atop -w file [-S] [-a] [interval [samples]]
atop -r [file] [-b hh:mm] [-e hh:mm] [-flags]

generic flags:
  -a  show or log all processes (i.s.o. active processes only)
  -R  calculate proportional set size (PSS) per process
  -P  generate parseable output for specified label(s)
  -L  alternate line length (default 80) in case of non-screen output
  -f  show fixed number of lines with system statistics
  -F  suppress sorting of system resources
  -G  suppress exited processes in output
  -l  show limited number of lines for certain resources
  -y  show individual threads
  -1  show average-per-second i.s.o. total values

  -x  no colors in case of high occupation
  -g  show general process-info (default)
  -m  show memory-related process-info
  -d  show disk-related process-info
  -n  show network-related process-info
  -s  show scheduling-related process-info
  -v  show various process-info (ppid, user/group, date/time)
  -c  show command line per process
  -o  show own defined process-info
  -u  show cumulated process-info per user
  -p  show cumulated process-info per program (i.e. same name)

  -C  sort processes in order of cpu-consumption (default)
  -M  sort processes in order of memory-consumption
  -D  sort processes in order of disk-activity
  -N  sort processes in order of network-activity
  -A  sort processes in order of most active resource (auto mode)

specific flags for raw logfiles:
  -w  write raw data to   file (compressed)
  -r  read  raw data from file (compressed)
      special file: y[y...] for yesterday (repeated)
  -S  finish atop automatically before midnight (i.s.o. #samples)
  -b  begin showing data from specified time
  -e  finish showing data after specified time