Linux命令之atop

天涯浪子 提交于 2019-12-11 18:31:40

atop

介绍

atop是一个功能非常强大的linux服务器监控工具,所采集的数据包含系统CPU、内存、磁盘、网络的资源使用情况和进程运行情况,并且内容非常的详细,可以以日志文件的方式保存在磁盘中,服务器出现问题后,可获取相应的atop日志文件进行分析。

安装

安装非常简单
centos服务器:

[root@localhost ~]# yum -y  install atop 

image.png

ubantu服务器使用以下命令安装

apt-get install atop -y

启动

[root@localhost ~]# systemctl start atop
[root@localhost ~]# systemctl enable atop
Created symlink from /etc/systemd/system/multi-user.target.wants/atop.service to /usr/lib/systemd/system/atop.service.
[root@localhost ~]# ps -ef |grep atop
root     23340     1  0 14:57 ?        00:00:00 /usr/bin/atop -R -w /var/log/atop/atop_20191204 600
root     23635 22353  0 14:59 pts/0    00:00:00 grep --color=auto atop

配置

atop安装完成后有几个配置文件和目录

/etc/sysconfig/atop:配置文件

指定atop的相关信息

[root@localhost ~]# cat /etc/sysconfig/atop  
# sysconfig atop
#
# Current Day format
CURDAY=`date +%Y%m%d`
# Log files path
LOGPATH=/var/log/atop
# Binaries path
BINPATH=/usr/bin
# PID File
PIDFILE=/var/run/atop.pid
# interval (default 10 minutes) 默认600s采集一次数据
LOGINTERVAL=600

/etc/cron.d/atop:计划任务文件

内容如下
[root@localhost ~]# cat /etc/cron.d/atop

daily restart of atop at midnight

0 0 * * * root systemctl try-restart atop

/var/log/atop:日志目录

[root@localhost ~]# ls /var/log/atop
atop_20191204  daily.log
执行以下命令分析日志
[root@localhost ~]# atop -r /var/log/atop/atop_20191204

分析

atop常用指令如下所示。

  • c:按照进程CPU使用率进行降序筛选。
  • m:按照进程内存使用率进行降序筛选。
  • d:按照进程磁盘使用率进行降序筛选。
  • a:按照进程资源综合使用率进行降序筛选。
  • n:按照进程网络使用率进行降序筛选,需要额外安装内核模块才支持,默认不支持。
  • t:跳转到下一个监控采集点。
  • T:跳转到上一个监控采集点。
  • B:指定时间点,格式为hh:mm:ss。

使用

直接在终端上敲atop
image.png

系统资源监控

接下来我们先来详细看下上半部分每行参数意义。
**ATOP:**改行列出了服务器的host、当前时间、信息收集的频率
**PRC:**该行展示整个系统的性能状况;

  1. sys:过去10s所有的进程在内核态运行的时间总和
  2. usr:过去10s所有的进程在用户态的运行时间总和
  3. #proc:进程总数
  4. #tslpi:中断状态的睡眠线程
  5. #tslpu:不可中断睡眠线程
  6. #zombie:过去10s僵死进程的数量
  7. #exit:在10s采样周期期间退出的进程数量

**CPU: **cpu列展示了服务器的CPU整体的一个状态信息,包括内核和用户所占的比例、处理中断所占的比例、CPU的处于空闲下比例(这里是100%*cpu核心数,CPU有时候也会因为由于磁盘性能问题出现等待的空闲)

  1. sys:cpu在处理进程时处于内核态的时间所占的比例
  2. user:cpu在处理进程时处于用户态的时间所占的比例
  3. irq:cpu在处理进程的中断请求所占的实际比例
  4. idle:cpu处于空闲状态下的时间比例(除了本身空闲,还有比如等待磁盘io的情况下也会处于空闲状态)
  5. wait:cpu处在“进程等待磁盘IO导致CPU空闲”状态的时间比例

cpu:每个核心的状态信息,和总的CPU信息一样,每列加起来的总和就是总的CPU的状态信息。
**CPL:**cpl也反应了服务器整体的性能,展示信息包括进程等待队列数,分别从过去1分钟、5分钟、15分钟的采样信息。

  1. avg1:过去1分钟进程等待队列数
  2. avg5:过去5分钟进程等待队列数
  3. avg15:过去15分钟进程等待队列数
  4. csw(context swapping):上下文交换次数
  5. intr(interrupt):中断发生的次数
  6. numcpu:cpu的核心数

mem:该列主要展示内存的使用信息。

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

SWP:交换空间使用情况

  1. tot:交换空间总量
  2. free:交换空间剩余空间总量

**LVM/DSK:**每个分区信息以一列来进行展示

  1. busy:磁盘忙时所占比例
  2. read、KiB/r 、MBr/s:每秒读的请求数和请求的kb、mb数
  3. write、KiB/w 、MBr/w:每秒写的请求数和请求的kb、mb数
  4. avio:磁盘的平均io时间

NET:展示了传输层(TCP/UDP)、网络层(ip)、网络接口的网络传输信息。
**transport:**传输层(TCP/UDP)的数据输入输出的展示,例如在服务器的内部进程之间的数据传输就是在传输层展示,以为还不需要往下通过网络进行传输。
**network:**网络层(ip)的数据输入输出的展示;
**eth0:**默认的网络接口的数据输入输出的展示,也就是通过etho的ip的数据传输的展示,

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

进程监控

进程列展示了每个进程在过去10s内的数据
默认视图
image.png
从上图中,我们可以看到PID为1527的yum进程在内核模式下占用了0.27秒CPU时间,在用户模式下占用了0.89秒CPU时间,共使用CPU时间为1.16秒,相对10分钟采样周期,CPU时间占用比例为12%。

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

m模式:内存状态模式
image.png
VSIZE:过去10S进程占用的虚拟空间大小
RSIZE:过去10S进程占用的内存空间大小
PSIZE:过去10S进程占用的页大小
VGROW:过去10S进程增长的虚拟空间大小
RGROW:过去10S进程增长的内存大小
SWAPSZ:过去10S进程使用交换空间的大小。
MEM:过去10S进程占用内存百分比
d模式:磁盘状态模式
image.png
RDDSK:过去10S进程读磁盘的数据量
WRDSK:过去10S进程写磁盘的数据量
DSK:过去10S进程所占磁盘的百分比
CMD:进程名
**p模式:**进程状态模式,同一个名称的进程显示一列,根据进程名进行分组显示
image.png

v模式:线程状态模式
image.png
u模式:用户模式
根据用户进行分组显示
image.png

丰富的查看方式

进程视图
       'g'  - generic info (default)  #通用信息(默认)
       'm'  - memory details         #内存详细信息
       'd'  - disk details                #磁盘详细信息
       'n'  - network details          #网络详细信息
       'e'  - GPU details                #GPU详细信息
       's'  - scheduling and thread-group info   #调度和线程详细信息
       'v'  - various info (ppid, user/group, date/time, status, exitcode)  #其他详细信息(PPID、用户/组、日期/时间、状态、退出代码)
       'c'  - full command line per process              #每个进程的命令详细信息
       'o'  - use own output line definition             #自定义
按以下顺序对进程列表排序:
       'C'  - cpu activity        #CPU
       'M'  - memory consumption #内存
       'D'  - disk activity  #磁盘
       'N'  - network activity  #网络
       'E'  - GPU activity   #GPU
       'A'  - most active system resource (auto mode)  #最活跃的系统资源(自动模式)
累计:
       'u'  - total resource consumption per user  #每个用户的总资源消耗
       'p'  - total resource consumption per program (i.e. same process name) #每个程序的总资源消耗(即相同的进程名)
       'j'  - total resource consumption per container #每个容器的总资源消耗
进程选择 (标题行中显示的键):
       'U'  - focus on specific user name              #(正则表达式) 特定的用户名
       'P'  - focus on specific program name        #(正则表达式) 特定的程序
       'J'  - focus on specific contained id (CID)   # 特定的ID
       '/'  - focus on specific command line string #(正则表达式) 特定的命令行
       'I'  - focus on specific process id (PID) #特定的PID

小结

本文对Linux监控工具atop做了介绍,讲解了atop的安装、启动、配置,对atop使用中的部分信息做了详细解释,简单介绍了几种视图,最后讲解了下其他丰富的atop查看方式,大家可以根据自己的需要去查看相应的条件。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!