简介
atop是一款用于监控Linux系统资源与进程的工具,它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析,更好的进行问题定位.
安装及使用
yum install -y atop
/usr/bin/atop -R -w /var/log/atop/atop_20201216 30 每30秒采集一次数据,
也可以执行atop.daily(可通过find查找),atop.daily内容如下:
#!/bin/bash
LOGOPTS="-R" # default options
LOGINTERVAL=30 # default interval in seconds
LOGGENERATIONS=28 # default number of days
# allow administrator to overrule the variables
# defined above
#
DEFAULTSFILE=/etc/sysconfig/atop # possibility to overrule vars
if [ -e "$DEFAULTSFILE" ]
then
. "$DEFAULTSFILE"
# validate overruled variables
# (LOGOPTS and LOGINTERVAL are implicitly by atop)
#
case "$LOGGENERATIONS" in
''|*[!0-9]*)
echo non-numerical value for LOGGENERATIONS >&2
exit 1;;
esac
fi
CURDAY=`date +%Y%m%d`
LOGPATH=/var/log/atop
BINPATH=/usr/bin
PIDFILE=/var/run/atop.pid
# verify if atop still runs for daily logging
#
if [ -e "$PIDFILE" ] && ps -p `cat "$PIDFILE"` | grep 'atop$' > /dev/null
then
kill -USR2 `cat "$PIDFILE"` # final sample and terminate
CNT=0
while ps -p `cat "$PIDFILE"` > /dev/null
do
let CNT+=1
if [ $CNT -gt 5 ]
then
break;
fi
sleep 1
done
rm "$PIDFILE"
fi
# delete logfiles older than N days (configurable)
# start a child shell that activates another child shell in
# the background to avoid a zombie
#
( (sleep 3; find "$LOGPATH" -name 'atop_*' -mtime +"$LOGGENERATIONS" -exec rm {} \;)& )
# activate atop with an interval of S seconds (configurable),
# replacing the current shell
#
echo $$ > $PIDFILE
exec $BINPATH/atop $LOGOPTS -w "$LOGPATH"/atop_"$CURDAY" "$LOGINTERVAL" > "$LOGPATH/daily.log" 2>&1
字段解释
- ATOP: 该列显示了主机名,当前展示log信息采样具体日期和时间点
- 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列,各字段值相加结果为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 字段指示各层或活动网口发包数目
1. 日常使用
进入atop日志 atop -r /path/to/atop_log
前进翻页 t
后退翻页 T
进程列表前进翻页: ctrl + f
进程列表后退翻页: ctrl + b
按时间跳转 b,再通过输入指定的时间,跳转
1. 切换视图:
d 磁盘视图,查看每个进程占用io的情况
c 命令行视图,查看每个进程具体的执行命令
m 内存视图,查看每个进程占用内存的情况
g 默认视图
n 网络视图
u 查看对应用户的资源使用情况
p 显示每个进程所有占用情况
评论区