atop 使用
机器经常oom 与夯死,但没有进程监控,找不到哪个用的资源比较多,觉得试试 atop,没想到完美解决问题
atop是一款用于监控Linux系统资源与进程的工具,能够报告所有进程的活动。其以一定的频率记录系统和进程活动,采集的数据包含CPU、内存、磁盘、网络的资源使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中。对于每个进程,会显示CPU使用率、内存增长、磁盘使用率、优先级、用户名、状态和退出码等。当机器出现问题后,您可以获取相应的atop日志文件进行分析。本文介绍如何在Linux实例中安装、配置并使用atop监控工具。
1 安装atop
1.1 执行如下命令,安装atop。
yum 安装的 atop 版本是2.7的,日志分割失效,建议从官网下载 rpm 包安装
可以点击这里下载对应的 rpm 包,注意系统版本,我这里用的 rocky 8
还有个日志保存天数问题,默认加 2,注意下
1 | sudo yum install https://www.atoptool.nl/download/atop-2.10.0-1.el8.x86_64.rpm |
2 配置并启动atop
- LOGOPTS:用于控制日志文件记录选项,可以自定义日志文件的保存路径、命名规则、滚动周期以及其他与日志记录相关的选项。为空
""
表示不使用任何额外选项。 - LOGINTERVAL:监控周期,建议将默认的监控周期600s修改为30s。
- LOGGENERATIONS:日志保留时间,为避免atop长时间运行占用太多磁盘空间,建议将默认的日志保留时间28天修改为 5天。 这里用的
find . -mtim +5
来进行删除, 表示查找 5 天前修改的日志,不包括第五天,然后生成的日志最新时间是第二天 0 点,所以 写 5 是删除一周以前的日志 - LOGPATH:指定atop日志文件的路径。默认值为/var/log/atop。
1 | vim /etc/sysconfig/atop |
2.1 启动atop服务。
1 | sudo systemctl restart atop |
3 分析atop日志
atop启动后,会将采集记录存放在
/var/log/atop
目录下的日志文件中。执行如下命令,查看日志文件。
1 | atop -r /var/log/atop/atop_20240716 -l -b 13:00 -e 17:00 |
3.1 atop常用命令
打开日志文件后,您可以使用以下命令筛选数据。
- g:切换回默认的综合输出视图。
- c:显示进程列完整命令行。
- l: 简化显示
- m:按照进程内存使用率进行降序筛选。
- d:按照进程磁盘使用率进行降序筛选。
- a:按照进程资源综合使用率进行降序筛选。
- n:按照进程网络使用率进行降序筛选。
- j: 每个容器的总资源消耗
- t:跳转到下一个监控采集点。
- T:跳转到上一个监控采集点。
- b:指定时间点,格式为YYYYMMDDhhmm。
- e: 指定时间区间,与-b 配合
3.2 系统资源监控字段含义
下图为部分监控字段以及数值,具体数值根据采样周期有所不同。下图仅供参考,具体数据以您实际数据为准。
1 | ATOP - 10-1-1-1 2024/07/16 14:02:27 ----------------- 80d22h2m18s elapsed |
主要参数说明如下:
参数 | 说明 |
---|---|
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:空闲交换空间大小。 | |
LVM行 | LVM情况。 |
rl-root,vg+lv对应名称,剩下信息与DSK行一样。 | |
DSK行 | 磁盘使用情况,每一个磁盘设备对应一列,如果有vdb设备,那么将会增加一行dsk信息。 |
sdb:磁盘设备标识。 | |
Busy:磁盘处于busy状态的时间比例。 | |
Read、write:分别代表读、写请求数量。 | |
NFM行 | nfs 挂载信息 |
NET行 | 多列net展示了网络状况,包括传输层tcp和udp、ip层以及各活动的网口信息。 |
si:各层或活动网口接收包大小。 | |
so: 各层或活动网口发送包大小。 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 云原生基站!
评论