Linux系统与程序监控工具atop教程

标签: linux 系统 程序 | 发表时间:2011-12-23 02:03 | 作者:bangerlee
出处:http://www.cnblogs.com/

引言

Linux以其稳定性,越来越多地被用作服务器的操作系统(当然,有人会较真地说一句:Linux只是操作系统内核:)。但使用了Linux作为底层的操作系统,是否我们就能保证我们的服务做到7*24地稳定呢?非也,要知道业务功能是由系统上跑的程序实现的,要实现业务功能的稳定性,选择Linux只是迈出的第一步,我们更多地工作是不让业务程序成为稳定性的短板。

当我们的服务器出现问题的时候,外在的表现是业务功能不能正常提供,内在的原因,从程序的角度看,可能是业务程序的问题(程序自身的bug),也可能是服务器上人为的误操作(不当地执行脚本或命令);从系统资源的角度看,可能是CPU抢占、内存泄漏、磁盘IO读写异常、网络异常等。出现问题后,面对各种各样可能的原因,我们应如何着手进行分析?我们有什么工具进行问题定位吗?


atop简介

本文要介绍的atop就是一款用于监控Linux系统资源与进程的工具,它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析。atop是一款开源软件,我们可以从 这里获得其源码和rpm安装包。


atop使用方法

在安装atop之后,我们在命令行下敲入”atop"命令即可看到系统当前的运行情况:

atop默认视图


系统资源监控字段含义

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

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

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

  1. sys、usr字段分别指示进程在内核态和用户态的运行时间
  2. #proc字段指示进程总数
  3. #zombie字段指示僵死进程的数量
  4. #exit字段指示atop采样周期期间退出的进程数量

CPU列:该列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况,我们知道CPU可被用于执行进程、处理中断,也可处于空闲状态(空闲状态分两种,一种是活动进程等待磁盘IO导致CPU空闲,另一种是完全空闲)

  1. sys、usr字段指示CPU被用于处理进程时,进程在内核态、用户态所占CPU的时间比例
  2. irq字段指示CPU被用于处理中断的时间比例
  3. idle字段指示CPU处在完全空闲状态的时间比例
  4. wait字段指示CPU处在“进程等待磁盘IO导致CPU空闲”状态的时间比例

CPU列各个字段指示值相加结果为N00%,其中N为cpu核数。

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

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

  1. avg1、avg5和avg15字段:过去1分钟、5分钟和15分钟内运行队列中的平均进程数量
  2. csw字段指示上下文交换次数
  3. intr字段指示中断发生次数

MEM列:该列指示内存的使用情况

  1. tot字段指示物理内存总量
  2. free字段指示空闲内存的大小
  3. cache字段指示用于页缓存的内存大小
  4. buff字段指示用于文件缓存的内存大小
  5. slab字段指示系统内核占用的内存大小

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

  1. tot字段指示交换区总量
  2. free字段指示空闲交换空间大小

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

swin、swout字段:换入和换出内存页数

DSK列:该列指示磁盘使用情况,每一个磁盘设备对应一列,如果有sdb设备,那么增多一列DSK信息

  1. sda字段:磁盘设备标识
  2. busy字段:磁盘忙时比例
  3. read、write字段:读、写请求数量

NET列:多列NET展示了网络状况,包括传输层(TCP和UDP)、IP层以及各活动的网口信息

  1. XXXi  字段指示各层或活动网口收包数目
  2. XXXo 字段指示各层或活动网口发包数目


进程视图

为了更全面地展示进程信息,atop提供了多种进程视图。

默认视图(Generic information)

进入atop信息界面,我们看到的就是进程信息的默认视图(上图下半部分),按g键可以从其他视图跳到默认视图。

atop默认视图

从上图中,我们可以看到PID为3061的find进程在退出前在内核模式下占用了3.43秒CPU时间,在用户模式下占用了0.96秒CPU时间,共使用CPU时间为4.39秒,相对10分钟采样周期,CPU时间占用比例为1%,ST列表示进程状态,N表示该进程是前一个采样周期新生成的进程,E表示该进程已退出,EXC列指示进程的退出码。从进程名在“<>”符号中,我们亦可知该进程已退出。

内存视图(Memory consumption)

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

atop内存视图

上图下半部分展示了每个进程占用的虚拟内存空间(VSIZE)、内存空间(RSIZE)大小,以及在上一个采样周期中虚拟内存和物理内存增长大小(VGROW、RGROW),MEM列指示进程所占物理内存大小。

从上图的PAG列的信息,我们可以知道此时系统内存负载较高,出现页换出情况,从进程视图中VGROW和RGROW列可看出VirtualBox进程占用内存量大量增长,部分进程占用的内存减少(VGROW或RGROW字段为负值),为VirtualBox进程腾出空间。

命令视图(Command line)

按c键我们可以进入命令视图,该视图展示了与每个进程相对应的命令。

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 {} \; )&

最后,我们修改cron文件,每天凌晨执行atop.daily脚本:

0 0 * * * /etc/cron.daily/atop.daily


小结

本文对Linux系统资源及进程监控工具atop进行了介绍,对atop所记录信息中的部分字段的含义以及进程视图进行了分析,最后讲述了atop日志文件的保存方式。

atop工具会根据终端界面的大小调整所显示的字段,因此你使用atop时看到的部分字段可能与以上截图不相同。若想更深入地了解atop工具中字段含义和各种进程视图,请猛击Reference链接。

Reference:  atoptool.nl

        man atop

本文链接

相关 [linux 系统 程序] 推荐:

Linux系统与程序监控工具atop教程

- - 博客园_首页
Linux以其稳定性,越来越多地被用作服务器的操作系统(当然,有人会较真地说一句:Linux只是操作系统内核:). 但使用了Linux作为底层的操作系统,是否我们就能保证我们的服务做到7*24地稳定呢. 非也,要知道业务功能是由系统上跑的程序实现的,要实现业务功能的稳定性,选择Linux只是迈出的第一步,我们更多地工作是不让业务程序成为稳定性的短板.

Linux程序调试

- - C++博客-首页原创精华区
Linux下的段错误产生的原因及调试方法    原文地址: http://www.upsdn.net/html/2006-11/775.html .    参考地址: http://www.cnblogs.com/khler/archive/2010/09/16/1828349.html .

Linux系统监控

- - CSDN博客系统运维推荐文章
查看所有的进程和端口使用情况:. 查看nginx并发(连接数)进程数:. 查看当网络连接状态中,已建立连接的数量:. 查看系统tcp连接中各个状态的连接数. 输出每个ip的连接数,以及总的各个状态的连接数. df -hl 查看磁盘使用情况 . df -hl 查看磁盘剩余空间. df -h 查看每个根路径的分区大小.

Linux 开源车载系统 Automotive Grade Linux

- - 开源中国社区最新新闻
Google、苹果以及微软相继宣布为汽车中控台推出车载系统,近日Linux基金会宣布推出可定制,开源的车载系统平台 Automotive Grade Linux. 旨在成为未来车载系统开源标准平台. 目前早期版本的AGL已提供下载. Automotive Grade Linux系统支持的汽车厂商以及品牌有捷豹、路虎、本田、日产等,同时也支持ATS、富士通、哈曼、英特尔、LG、NEC、松下三星等科技企业的车内产品.

加速Linux程序编译

- jin - 李凡希的Blog
  项目越来越大,每次需要重新编译整个项目都是一件很浪费时间的事情. Research了一下,找到以下可以帮助提高速度的方法,总结一下.   有人说在Windows下用了RAMDisk把一个项目编译时间从4.5小时减少到了5分钟,也许这个数字是有点夸张了,不过粗想想,把文件放到内存上做编译应该是比在磁盘上快多了吧,尤其如果编译器需要生成很多临时文件的话.

理解Linux系统负荷

- Adam - 阮一峰的网络日志
如果你的电脑很慢,你或许想查看一下,它的工作量是否太大了. 在Linux系统中,我们一般使用uptime命令查看(w命令和top命令也行). (另外,它们在苹果公司的Mac电脑上也适用. 你在终端窗口键入uptime,系统会返回一行信息. 这行信息的后半部分,显示"load average",它的意思是"系统的平均负荷",里面有三个数字,我们可以从中判断系统负荷是大还是小.

Linux系统启动流程

- - CSDN博客推荐文章
Linux系统启动流程(以CentOS为例):. 加载BIOS,获得主机的硬件信息并进行开机自检,然后根据设置取得第一个可启动的设备(如硬盘). 执行第一个可启动设备内MBR(主引导分区)的Boot Loader(如grub). 根据Boot Loader的设置加载kernel和initrd(虚拟文件系统),kernel开始检测硬件并加载驱动程序.

linux 系统性能指标

- - 非技术 - ITeye博客
近段时间,再忙着找实习,经常被问到的,关于linux系统性能的指标,比如对于一台linux机器来说,怎么监控它的CPU,内存,负载等情况;怎样算高负载,具体的依据是什么. 等等这类问题,下面就好好总结一下这方面知识吧~. 由于能力有限,可能总结的不是很全面,不是很正确,有错漏的,欢迎大家帮忙指出,谢谢.

Linux 系统安全检查

- -
对linux系统进行安全检查的方法. 1、充分利用Linux和Unix系统中内置的检查命令来检测系统. Linux和Unix系统中就很有用处: . -who,查看谁登陆到系统中; . -w,查看谁登陆到系统中,且在做什么操作; . -last,显示系统曾经被登陆的用户和TTYS; . -history,显示系统过去被运行的命令; .