atop 命令安装:
atop 官网:ATopTool.nl
-bash: atop: command not found #Debianapt-get install atop #Ubuntuapt-get install atop #Alpineapk add atop #Arch Linuxpacman -S atop #Kali Linuxapt-get install atop #Fedoradnf install atop #Raspbianapt-get install atop #Dockerdocker run cmd.cat/atop atop
atop 命令补充说明:
它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析。atop是一款开源软件,我们可以从这里获得其源码和rpm安装包。
atop 命令语法:
atop(选项)(参数)
atop 命令选项:
#atop 进程视图: g —— 默认输出m —— 内存相关输出d —— 磁盘相关输出n —— 网络相关输出c —— 命令行输出u 查看对应的用户资源使用情况p 显示所有每个进程的所有信息占用情况(disk、mem、io)P(大写) 正则匹配,显示所有匹配到的进程 退出atop:q
atop 命令运行效果
ATOP - Dev_Test // :: --------- 138d2h18m47s elapsedPRC | sys 42d19h | user 143h00m | #proc | #zombie 0 | #exit 0 |CPU | sys % | user % | irq 0% | idle % | wait % |cpu | sys % | user 0% | irq 0% | idle % | cpu003 w 0% |cpu | sys 2% | user 3% | irq 0% | idle % | cpu000 w % |cpu | sys 3% | user 2% | irq 0% | idle % | cpu001 w 1% |cpu | sys 5% | user 1% | irq 0% | idle % | cpu002 w 1% |cpu | sys 4% | user 1% | irq 0% | idle % | cpu007 w 0% |cpu | sys 4% | user 1% | irq 0% | idle % | cpu006 w 0% |cpu | sys 2% | user 2% | irq 0% | idle % | cpu004 w 2% |cpu | sys 3% | user 1% | irq 0% | idle % | cpu005 w 0% |CPL | avg1 | avg5 | avg15 | csw 482214e5 | intr 18905e6 |MEM | tot .5G | free .8M | cache 2.0G | buff .9M | slab .2M |SWP | tot 8.0G | free 4.1G | | vmcom .3G | vmlim .7G |PAG | scan 16655e6 | steal 1211e7 | stall 2524e3 | swin 27736e3 | swout 2464e4 |DSK | sda | busy % | read 23631e4 | write 1739e5 | avio ms |NET | transport | tcpi 17705e6 | tcpo 15930e6 | udpi | udpo |NET | network | ipi 177079e5 | ipo 159353e5 | ipfrw 0 | deliv 1771e7 |NET | eth0 7% | pcki 36801e5 | pcko 77944e5 | si Kbps | so Kbps |NET | vnet0 0% | pcki | pcko | si 0 Kbps | so 0 Kbps |NET | br0 ---- | pcki 36786e5 | pcko 66666e5 | si Kbps | so Kbps |NET | lo ---- | pcki 14041e6 | pcko 14041e6 | si Kbps | so Kbps | *** system and process activity since boot *** PID SYSCPU USRCPU VGROW RGROW RDDSK WRDSK ST EXC S CPUNR CPU CMD 1/9 990h07m 0.00s 0K 0K 0K 0K N- - S 2 % ksmd15338 347m43s 80h24m .8G 6.9G 4.6T .1G N- - S 0 3% mysqld16879 529m17s 52h12m 3.6G 2260K .3G .8G N- - S 6 2% qemu-kvm 724m50s 455m02s 4.0G 2.9G 4.3G .3T N- - S 6 1% redis-server 114m15s 0.00s 0K 0K 0K .9T N- - S 0 0% jbd2/sda2-8 113m06s 0.00s 0K 0K 0K 2.1T N- - S 5 0% kswapd0 35m39s 41m40s .2M .7M .6M .4G N- - S 6 0% redis-server 38m32s 27m52s .2M 25536K 17820K 16K N- - S 5 0% redis-server 38m48s 27m34s .2M 4100K 2596K 2340K N- - S 6 0% redis-server 38m18s 27m58s .2M 2996K 788K 12K N- - S 3 0% redis-server 64m04s 0.00s 0K 0K .9M 1.6T N- - S 0 0% flush-8: 37m54s 3m13s 16084K 1256K 0K 0K N- - S 1 0% zabbix_agentd 32m53s 0.00s 0K 0K 0K 0K N- - S 0 0% kblockd/0 20m08s 0.00s 0K 0K 0K 0K N- - S 1 0% events/1 16m35s 0.00s 0K 0K 0K 0K N- - S 0 0% events/0 10m14s 0.00s 0K 0K 0K 0K N- - S 4 0% events/ 5m03s 2m24s .0M 1104K 5.4G 24K N- - S 0 0% ksmtuned 6m11s 0.00s 0K 0K 0K 0K N- - S 5 0% events/ 1m45s 4m20s .8M 1072K 8K 4K N- - S 6 0% php-fpm 5m57s 0.00s 0K 0K 0K 0K N- - S 2 0% events/2 5m44s 0.00s 0K 0K 0K 0K N- - S 7 0% events/7 5m25s 0.00s 0K 0K 0K 0K N- - S 6 0% events/ .81s 3m26s .3M 28260K 1520K 0K N- - S 5 0% memcached 4m21s 0.00s 0K 0K 0K 0K N- - S 3 0% events/ 1m54s .87s 16096K 872K 1.2G 8008K N- - S 0 0% zabbix_agentd 1m57s .73s 93156K 704K 37920K 4.1G N- - S 3 0% auditd 2m11s .52s .2M 1020K .8T 4.7T N- - S 0 0% crond28447 .15s .48s 16084K 976K 4.5G 8K N- - S 0 0% zabbix_agentd28449 .57s .60s 16084K 972K 4.7G 16K N- - S 0 0% zabbix_agentd28448 .63s .23s 16084K 1004K 4.5G 16K N- - S 0 0% zabbix_agentd 6.76s 1m49s .6M 9092K 124K 0K N- - S 4 0% php722093 .71s .16s .2M 21520K 39388K 380K N- - S 0 0% php-fpm22079 .72s .51s .4M 22592K 44364K 10648K N- - S 2 0% php-fpm22083 .79s .30s .1M 21528K 42528K 444K N- - S 0 0% php-fpm22098 .42s .63s .2M 22600K 41828K 7200K N- - S 0 0% php-fpm22090 .89s .97s .2M 20752K 48004K 392K N- - S 0 0% php-fpm22087 .15s .94s .1M 22808K 46068K 19560K N- - S 1 0% php-fpm22096 .09s .90s .2M 21952K 32864K 576K N- - S 0 0% php-fpm26832 .60s .15s .2M 22376K 30436K 396K N- - S 0 0% php-fpm22086 .86s .70s .2M 21200K 33388K 392K N- - S 0 0% php-fpm 3 .17s 0.00s 0K 0K 0K 0K N- - S 0 0% migration/ .75s .28s .2M 21860K 37836K 432K N- - S 0 0% php-fpm
ATOP列:该列显示了主机名、信息采样日期和时间点
PRC列:该列显示进程整体运行情况
- sys、usr字段分别指示进程在内核态和用户态的运行时间
- #proc字段指示进程总数
- #zombie字段指示僵死进程的数量
- #exit字段指示atop采样周期期间退出的进程数量
CPU列:该列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况,我们知道CPU可被用于执行进程、处理中断,也可处于空闲状态(空闲状态分两种,一种是活动进程等待磁盘IO导致CPU空闲,另一种是完全空闲)
- sys、usr字段指示CPU被用于处理进程时,进程在内核态、用户态所占CPU的时间比例
- irq字段指示CPU被用于处理中断的时间比例
- idle字段指示CPU处在完全空闲状态的时间比例
- wait字段指示CPU处在“进程等待磁盘IO导致CPU空闲”状态的时间比例
CPU列各个字段指示值相加结果为N00%,其中N为cpu核数。
cpu列:该列显示某一核cpu的使用情况,各字段含义可参照CPU列,各字段值相加结果为%
CPL列:该列显示CPU负载情况
- avg1、avg5和avg15字段:过去1分钟、5分钟和分钟内运行队列中的平均进程数量
- 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日志文件的保存方式,我们可以这样:
- 每天保存一个atop日志文件,该日志文件记录当天信息
- 日志文件以atop_YYYYMMDD的方式命名
- 设定日志失效期限,自动删除一段时间前的日志文件
其实atop开发者已经提供了以上日志保存方式,相应的atop.daily脚本可以在源码目录下找到。在atop.daily脚本中,我们可以通过修改INTERVAL变量改变atop信息采样周期(默认为分钟);通过修改以下命令中的数值改变日志保存天数(默认为天):
(sleep 3; find $LOGPATH -name atop_* -mtime + -exec rm {} \; )&
最后,我们修改cron文件,每天凌晨执行atop.daily脚本:
* * * root /etc/cron.daily/atop.daily