atop用法_Linux atop监控工具部署

atop用法_Linux atop监控工具部署一 atop 简介 atop 是一款用于监控 Linux 系统资源与进程的工具 它以一定的频率记录系统的运行状态 所采集的数据包含系统资源 CPU 内存 磁盘和网络 使用情况和进程运行情况 并能以日志文件的方式保存在磁盘中 服务器出现问题后 我们可获取相应的 atop 日志文件进行分析 其比较强大的地方是其支持我们分析数据时进行排序 视图切换 正则匹配等处理 atop 是一款开源软件 我们可以从这里获得其源码和 r

一、atop简介

atop是一款用于监控Linux系统资源与进程的工具,它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析,其比较强大的地方是其支持我们分析数据时进行排序、视图切换、正则匹配等处理。atop是一款开源软件,我们可以从这里获得其源码和rpm安装包。

atop用法_Linux atop监控工具部署

需要注意的是,这里如果想查看网络的详细视图,还需要安装netatop包,该包安装时,需要linux下有kernel 的相关编译环境,需要编译出一个.ko文件,在内核中加载后才可以使用,netatop不安装 ,不影响CPU、mem、disk、io的性能监控。

二、atop数据存储及配置

/etc/init.d/atop start启动atop后,atop默认采集到的数据文件存放在/var/log/atop目录下。日志文件按天进行保存,默认以”atop_YYYYMMDD”的方式命名、每10分钟采集一次数据、保留最近28天的数据 。以上内容是在配置文件/etc/atop/atop.daily 中进行控制的,如下:

[root@localhost ~]# cat /etc/atop/atop.daily

#!/bin/bash

CURDAY=`date +%Y%m%d` #保留的文件名,可以进行自定义修改,如:加上主机名

LOGPATH=/var/log/atop

BINPATH=/usr/bin

PIDFILE=/var/run/atop.pid

INTERVAL=600 # interval 10 minutes ,此处可以修改为30秒或1分钟采集一次

# 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 four weeks

# start a child shell that activates another child shell in

# the background to avoid a zombie

#

( (sleep 3; find $LOGPATH -name ‘atop_*’ -mtime +28 -exec rm {} \;)& ) #保留最近28天的数据,可以修改为最近一周的

# activate atop with interval of 10 minutes, replacing the current shell

#

echo $$ > $PIDFILE

exec $BINPATH/atop -a -R -w $LOGPATH/atop_$CURDAY $INTERVAL > $LOGPATH/daily.log 2>&1

三、监控字段的含义

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列,各字段值相加结果为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、默认视图(Generic information)

进入atop信息界面,我们看到的就是进程信息的默认视图(上图下半部分),按g键可以从其他视图跳到默认视图。以简介里的截图为例,我们可以看到PID为31085的find进程在退出前在内核模式下占用了0.45秒CPU时间,在用户模式下占用了0.10秒CPU时间,相对10分钟采样周期,CPU时间占用比例为3%,ST列表示进程状态,N表示该进程是前一个采样周期新生成的进程,E表示该进程已退出,EXC列指示进程的退出码。从进程名在“<>”符号中,我们亦可知该进程已退出。

2、内存视图(Memory consumption)

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

atop用法_Linux atop监控工具部署

上图下半部分展示了每个进程占用的虚拟内存空间(VSIZE)、内存空间(RSIZE)大小,以及在上一个采样周期中虚拟内存和物理内存增长大小(VGROW、RGROW),MEM列指示进程所占物理内存大小。从上图的PAG列的信息,我们可以知道此时系统内存负载较高,页交换比较频繁,而且可以看出物理内存几乎完全不可用,swap分区也比较繁忙,从进程视图中VGROW和RGROW列可看出 lekker 进程占用内存量大量增长,部分进程占用的内存减少(VGROW或RGROW字段为负值),为lekker进程腾出空间。

3、命令视图(Command line)

这个对于查看具体某个命令的详细参数,很容易通过该模式下查看到。比如,我们有多个java程序,普通视图下,可能看到的只显示为java ,但通过命令模式,我们可以方便的区分出,到底是哪个java程序占用资源比较高。如下图:

atop用法_Linux atop监控工具部署

4、磁盘视图

通过按键d 可以进入磁盘视图,可以查看每个进程占用IO的情况。

5、快捷键汇总

读取atop日志文件: atop  -r  XXX

前进翻页: t

后退翻页: T

进程列表前进翻页: ctrl + f

进程列表后退翻页: ctrl + b

按时间跳转:

b

Enter new time (format hh:mm):

按hh:mm格式输入时间

进程视图:

g   —— 默认输出

m  —— 内存相关输出

d   —— 磁盘相关输出

n   —— 网络相关输出

c   —— 命令行输出

u  查看对应的用户资源使用情况

p  显示所有每个进程的所有信息占用情况(disk、mem、io)

P(大写) 正则匹配,显示所有匹配到的进程

退出atop:q

五、atopsar 及其他

atopsar是一个类似于sar 的工具,其可以实时获取数据,也可以通过读取历史文件获取主机的 cpu、load 、io、mem等信息,不过该命令查看到的是全局信息,不是会显示具体某个进程的占用信息(O G D N 几个参数可以显示占用最高的前三个进程),具体用法如下:

SUSEt:/var/log/atop # atopsar –help

atopsar: invalid option — ‘-‘

Usage: atopsar [-flags] [-r file|date] [-R cnt] [-b hh:mm] [-e hh:mm]

or

Usage: atopsar [-flags] interval [samples]

Today’s atop logfile is used by default!

Generic flags:

-r read statistical data from specific atop logfile

(pathname, or date in format YYYYMMDD, or y[y..])

-R summarize samples into one sample

-b begin showing data from specified time

-e finish showing data after specified time

-S print timestamp on every line in case of more resources

-x never use colors to indicate overload (default: only if tty)

-C always use colors to indicate overload (default: only if tty)

-M use markers to indicate overload (* = critical, + = almost)

-H repeat report headers (in case of tty: depending on screen lines)

-a print all resources, even when inactive

Specific flags to select reports:

-A print all available reports

-c cpu utilization

-p process(or) load

-P processes & threads

-m memory & swapspace

-s swap rate

-l logical volume activity

-f multiple device activity

-d disk activity

-n NFS client mounts

-j NFS client activity

-J NFS server activity

-i net-interf (general)

-I net-interf (errors)

-w ip v4 (general)

-W ip v4 (errors)

-y icmp v4 (general)

-Y icmp v4 (per type)

-u udp v4

-z ip v6 (general)

-Z ip v6 (errors)

-k icmp v6 (general)

-K icmp v6 (per type)

-U udp v6

-t tcp (general)

-T tcp (errors)

-O top-3 processes cpu

-G top-3 processes memory

-D top-3 processes disk

-N top-3 processes network

1、实时显示

如下为显示,每60s 刷新一次结果,共显示5次,如下官方的示例中,只有一个cpu ,如果有多个CPU,会显示每个core的占用情况。$ atopsar -c 60 5

myhost 2.6.18.3up #7 Wed May 30 13:57:06 CEST 2009 i686 2009/08/17

————————– analysis date: 2009/08/17 ————————–

14:22:11 cpu %usr %nice %sys %irq %softirq %steal %wait %idle _cpu_

14:23:11 all 2 0 8 1 1 0 88 0

14:24:11 all 32 0 38 1 1 0 28 0

14:25:11 all 43 0 45 2 1 0 0 9

14:26:11 all 2 0 2 1 1 0 15 79

14:27:11 all 2 0 1 0 0 0 11 86

2、读取文件,指定范围

下面的示例中,指定了读取哪一天的数据文件,并指定起止时间,-A 参数是输出所有项$ atopsar -A -b 13:00 -e 13:35 -r atop_

myhost 2.6.18.3up #7 Wed May 30 13:57:06 CEST 2009 i686 2009/08/17

————————– analysis date: 2009/08/17 ————————–

13:00:01 cpu %usr %nice %sys %irq %softirq %steal %wait %idle _cpu_

13:10:01 all 6 0 8 4 4 0 54 24

13:20:01 all 10 0 12 4 4 0 56 15

13:30:01 all 31 0 9 3 3 0 35 19

13:00:01 pswch/s devintr/s clones/s loadavg1 loadavg5 loadavg15 _load_

13:10:01 8042 6256 0.33 1.12 0.99 0.51

13:20:01 8575 5806 0.34 1.31 1.28 0.89

13:30:01 6594 4397 0.39 1.29 1.54 1.22

13:00:01 clones/s pexit/s curproc curzomb thrrun thrslpi thrslpu _procthr_

13:10:01 0.33 0.33 150 0 1 167 0

13:20:01 0.28 0.26 151 0 1 163 0

13:30:01 0.71 0.72 143 0 2 173 0

13:00:01 memtotal memfree buffers cached slabmem swptotal swpfree _mem_

13:10:01 995M 12M 48M 718M 56M 1983M 1895M

13:20:01 995M 13M 60M 705M 57M 1983M 1895M

13:30:01 995M 13M 62M 702M 57M 1983M 1895M

………………输出太多,省略

3、其他

atop启动后,除了atop 进程本身外,还会启动一个atopacctd 进程,该进程是一个计数进程,其数据文件存放在如下路径:

/var/run/pacct_source

/var/run/pacct_shadow.d/current

/var/run/pacct_shadow.d/N.paf

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222546.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午3:33
下一篇 2026年3月17日 下午3:33


相关推荐

  • Hash一致算法_一致性hash是如何做数据迁移

    Hash一致算法_一致性hash是如何做数据迁移概述这里存在一种场景,当一个服务由多个服务器组共同提供时,key应该路由到哪一个服务.这里假如采用最通用的方式key%N(N为服务器数目),这里乍一看没什么问题,但是当服务器数目发送增加或减少时,分配方式则变为key%(N+1)或key%(N-1).这里将会有大量的key失效迁移,如果后端key对应的是有状态的存储数据,那么毫无疑问,这种做法将导致服务器间大量的数据迁移,从而照成

    2026年4月15日
    7
  • CollectGarbage函数–JS清理垃圾,内存释放

    CollectGarbage函数–JS清理垃圾,内存释放首先看一个内存释放的实例 nbsp lt SCRIPTLANGUA JavaScript gt lt strTest 1 for vari 0 i lt 25 i strTest strTest alert strTest deletestrTes CollectGarba gt

    2026年3月20日
    2
  • jsessionid是什么意思(请求头jsessionid)

    (1)这是一个保险措施因为Session默认是需要Cookie支持的但有些客户浏览器是关闭Cookie的这个时候就需要在URL中指定服务器上的session标识,也就是5F4771183629C9834F8382E23BE13C4C用一个方法(忘了方法的名字)处理URL串就可以得到这个东西这个方法会判断你的浏览器是否开启了Cookie,如果他认为应该加他就会加上去(2)

    2022年4月14日
    143
  • 机房收费系统—详细设计说明书

    机房收费系统—详细设计说明书详细设计说明书1引言1.1编写目的说明编写这份详细设计说明书的目的,指出预期的读者。该文档是在概要设计的基础上,进一步的细化系统结构,展示了软件结构的图表,物理设计,数据结构设计,以及算法设计,详细的介绍了系统各个模块是如何实现的,包括涉及到的算法,逻辑流程等,为下一步系统的实现和测试做准备。 预期读者:编码人员,项目负责人1.2背景A.软件名称:机房收费系统B

    2022年5月8日
    68
  • js 保留2位小数

    js 保留2位小数Math floor 15 7784514000 100 100 输出结果为 15 77https www jb51 net article 134067 htm

    2026年3月18日
    2
  • ICMP数据包分析_Wireshark数据包分析实战

    ICMP数据包分析_Wireshark数据包分析实战一.实验目的1.学习和掌握ICMP协议的基本作用和报文格式2.理解ICMP协议与IP协议的封装关系3.学习和掌握ICMP协议的应用和报文格式4.理解tracertoute工作过程二.实验拓扑三.实验工具GNS3和Wireshark抓包分析软件四.ICMP协议的封装格式(1)Type类型值,标识ICMP分组类型(2)Code代码值,标识ICMP分组类型的某一种具体分组(3)Checksum校验和,用于检验数据包是否完整或是否被修改(4)Identifier标识符,标识本进程

    2025年8月26日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号