开源性能监控工具atop【字节跳动版本】的安装与简单使用

原文

img

atop是一款开源的性能监测工具,atop是以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中

服务器出现问题后,我们可获取相应的atop日志文件进行分析支持实时观测的同时、也支持读取历史文件排查问题。

另外一个优点是除提供 CPU、MEM、DISK 等全局指标外,还提供进程、线程级别的各项指标监控数据。

鉴于 atop 的这些优点,字节跳动基于社区的 atop 进行优化,目前已迭代多个版本

本文介绍字节跳动内部 atop 工具rpm包的制作,安装与使用

https://github.com/bytedance/atop

写在前面

可以使用yum的方式安装atop官方的,比较简单;也可以使用包安装字节跳动封装过的,看自己

yum install atop -y

默认配置,默认600s记录一次日志到/var/log/atop

cat /etc/sysconfig/atop

LOGOPTS=""
LOGINTERVAL=600
LOGGENERATIONS=28
LOGPATH=/var/log/atop


CentOS7下编译并生成atop的RPM包,下面为字节跳动atop安装方式

1、准备基础rpm-build基础环境

yum install -y zlib-devel ncurses-devel rpm-build

img

2、下载并修改bytedance版本atop源码包

unzip atop-master.zip
并修改atop.spec文件中里几个参数
mv atop-master atop-2.4.0
cd atop-2.4.0/
vim atop.spec 

img

修改完成后,tar压缩成atop-2.4.0.tar.gz
tar -zcvf atop-2.4.0.tar.gz atop-2.4.0/

img

img

img

img

3、准备atop的rpmbuild相关文件

cp /opt/atop-2.4.0/atop.spec ./
rpmbuild atop.spec 
使用该命令生成rpmbuild的相关目录
cd rpmbuild/
cp /opt/atop-2.4.0/atop.spec SPECS/
cp /opt/atop-2.4.0.tar.gz SOURCES/

img

img

4、rpmbuild生成rpm包

cd /root
rpmbuild -ba  rpmbuild/SPECS/atop.spec

生成的rpm包位于
cd /root/rpmbuild/RPMS/x86_64/

img

img

5、安装atop

yum localinstall atop-2.4.0-RHEL7.x86_64.rpm

img

6、atop的使用

vi /etc/default/atop
修改默认的采集时间为1分钟60

img

启动atop监控服务

systemctl start atop 
atop以服务方式运行在后台监控并记录系统状态

img

7、atop -r 查看历史监控数据

atop -r  /var/log/atop/atop_20220924

使用 atop -r命令读取日志文件。按t键向前翻页,T键向后翻页,b键跳转到指定时间,时间格式为hh:mm

img

8、netatop的安装

wget --no-check-certificate  https://www.atoptool.nl/download/netatop-3.1.tar.gz
tar -zxvf netatop-3.1.tar.gz
make 
make install

img

img

systemctl enable netatop
systemctl start netatop
systemctl status netatop

img

这时再使用atop就可以看到网络流量的数据

img

img

img

9、 atopsar工具

atopsar是一个类似于sar 的工具

atopsar -c -b 18:30 -e 19:03
atopsar -A -b 18:30 -e 19:03

img

关于字节跳动版本atop的特性参考如下链接 https://blog.csdn.net/ByteDanceTech/article/details/122007542


资源监控字段含义

img

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

img

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

img

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

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

img

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核数。

img

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

img

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

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

img

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

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

img

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

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

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

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

img

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时间

img

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键可以从其他视图跳到默认视图

img

从上图中,我们可以看到PID为3061的find进程在退出前在

内核模式下占用了3.43秒CPU时间,

在用户模式下占用了0.96秒CPU时间,共使用CPU时间为4.39秒,相对10分钟采样周期,CPU时间占用比例为1%,

ST列表示进程状态,N表示该进程是前一个采样周期新生成的进程,E表示该进程已退出,

EXC列指示进程的退出码。从进程名在“<>”符号中,我们亦可知该进程已退出。

内存视图(m)

内存视图展示了进程使用内存情况,按m键可进入内存视图。

img

  • 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键我们可以进入命令视图,该视图展示了与每个进程相对应的命令。

img

有时我们某位“马大哈”同事执行了某个脚本或命令,使得系统资源占用率异常飙高,这时,我们可以很容易地通过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天):

(sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \; )&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值