【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat

目录:
(一)htop命令
(二)vmstat命令
(三)pmap命令
(四)glances命令
(五)dstat命令html


(一)htop命令
(1.1)EPEL(Extra Packages for Enterprise Linux)是由Fedora社区打造,为RHEL及衍生发行版如CentOS等提供高质量软件包的项目。装上了EPEL,就像在Fedora上同样,能够经过yum install的方式安装,便可安装不少之前须要编译安装的软件、经常使用的软件或一些比较流行的软件,好比如今流行的nginx、htop、ncdu、vnstat等等,均可以使用EPEL很方便的安装更新。
(1.2)在管理进程时一般要借助一些工具,比较经常使用的就是ps和top了,不过CentOS还为咱们提供了一个更增强大的工具htop,htop是一个Linux下的交互式的进程浏览器,能够用来替换Linux下的top命令。咱们使用CentOS 7系统,并经过aliyun下载epel源,按照以下的操做方式进行。
# cd /etc/yum.repos.d/---进入到/etc/yum.repos.d/目录
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup---将CentOS-Base.repo重命名为CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ---下载Centos-7.repo的源
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/epel-7.repo ---下载epel-7的源
注意:咱们也可使用163的源https://mirrors.163.com/.help/ ,或者直接经过官方源安装:# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(1.3)而后将缓存清理一下,并从新创建缓存。此时咱们经过“# yum repolist”能够查看当前系统的YUM源的状况。
# yum clean all---将缓存清理一下
# yum makecache---从新创建缓存
# yum repolist---查看当前系统的YUM源的状况
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(1.4)CPU在实现查看其分配和利用率的过程当中主要有以下的一些关键指标:其中第一个us表示用户空间占用CPU百分比,第二个sy表示的是内核空间占用CPU百分比,第三个ni表示的是用户进程空间内改变过优先级的进程占用CPU百分比,第四个id表示的是空闲CPU百分比,第五个hi表示的是硬件中断百分比,第六个si表示的是软件中断百分比,第七个cs表示处理上下文切换百分比,第八个st表示的是被虚拟化分走所占用的百分比,第九个wa表示的是等待输入输出的CPU时间百分比。
对于内存Memory衡量的关键指标主要有:第一个VSZ表示虚拟内存集,第二个RSS表示常驻内存集,第三个SHM表示共享内存集。
(1.5)接着咱们在系统中安装htop软件包。
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(1.6)咱们在命令行输入“# htop”直接打开进入到一个浏览器的界面,在图中将输出的界面划分红了四个区域,其中上左区:显示了每颗CPU、物理内存和交换分区的信息;上右区:显示了任务数量、线程数量、平均负载和链接运行时间等信息;进程区域:显示出当前系统中的全部进程;操做提示区:显示了当前界面中F1至F10功能键中定义的快捷功能。
# htop
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(1.7)界面支持鼠标操做,咱们在键盘上按F1或者在屏幕上进行点击,能够显示帮助信息,其中CPU usage bar即CPU显示当中low-priority表示低优先级,normal表示正常,kernel表示内核的,virtualiz表示被虚拟化拿走的时间。而Memory bar中绿色used表示使用的内存,紫色buffers表示缓冲,橙色cache表示缓存。Status状态部分中:R表示运行,S表示睡眠,T表示被跟踪或者中止状态,Z表示僵尸态,D表示不可中断的睡眠。
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(1.8)其中在htop主界面中咱们可使用以下的按键进行操做
按键u:显示指定用户的进程
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
按键q:退出,能够最后退出htop程序
按键Esc:退回到前一步
按键H:隐藏用户线程
按键K:隐藏内核线程
按键F:跟踪光标所在的线程
按键M:按照内存使用百分比排序,对应MEM%列
按键P:按照CPU使用百分比排序,对应CPU%列
按键T:按照进程运行的时间排序,对应TIME+列
按键c:可以标记处一个进程以及这个进程的子进程来
按键a:可以设置CPU的亲和性
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
按键U:取消全部选中的进程
按键l:可以显示光标所在进程的文件列表(小写字母L)
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
按键s:显示光标所在进程执行的全部系统调用,按F8键能够自动滚屏刷新当前系统新生成的系统调用。
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
按键T或者F5键:能够以进程树的形式展示出各进程之间的父子关系。
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
按键F2:配置界面中的显示信息
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(1.9)htop命令的选项参数以下:
# htop -d 2---设置刷新时间,单位为秒
# htop -u root---显示指定用户的进程
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
# htop -s TIME---以指定的列排序
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
# htop -C---设置界面为无颜色
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstatnode


(二)vmstat命令
(2.1)vmstat命令是用来报告虚拟内存的统计数据的,vmstat命令报告关于内核线程、虚拟内存、磁盘、陷阱和CPU活动的统计信息。由vmstat命令生成的报告能够用于平衡系统负载活动,系统范围内的这些统计信息都计算出以百分比表示的平均值,或者计算其总和。
(2.2)咱们执行vmstat命令后会发现产生了五列的内容,主要包括procs进程,memory内存,swap交换分区,io为块级别的io,system系统包括中断和上下文切换,cpu主要包括用户空间、内核空间、空闲百分比、等待输入输出百分比、被虚拟化分走的百分比。
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(2.3)若是咱们但愿当前的输出数据可以每2秒动态输出一次,此时咱们可使用“# vmstat 2”命令。而若是咱们但愿输出数据可以每2秒动态输出一次,而且总共显示3次,此时咱们可使用“# vmstat 2 3”
# vmstat 2---输出数据可以每2秒动态输出一次
# vmstat 2 3---输出数据可以每2秒动态输出一次,而且总共显示3次
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(2.4)每一列的详细含义
(2.4.1)procs进程,若是这个队列很是长,那么等待io的时间很长,io的能力有限。
r:等待运行的进程的个数;CPU上等待运行的任务队列的长度
b:处于不可中断睡眠态的进程个数;被阻塞的任务队列的长度
(2.4.2)memory内存
swap:交换内存使用量,0表示没有启用交换内存,实际使用的是硬盘容量
free:空闲的物理内存总量
buffer:用于buffer的内存总量
cache:用于cache的内存总量
(2.4.3)swap交换分区,若是咱们发现系统有大量的交换分区的使用换进,可是换出的频率不是很频繁那么对咱们系统的影响还不是很大,可是若是咱们大量的交换分区在换进换出操做,即si与so之间活动的速率很是频繁,这也就意味着咱们的物理内存过小,须要扩充内存。
si:数据进入swap中的数据速率(kb/s)
so:数据离开swap的速率(kb/s)
(2.4.4)io
bi:从块设备读入数据到系统的速度(kb/s)
bo:保存数据至块设备的速率(kb/s)
(2.4.5)system
in:interrupts,中断速率
cs:context switch,上下文切换的速率,若是上下文切换的速率过高说明须要运行的进程太多,CPU的性能太弱
(2.4.6)CPU
us:user space,用户空间
sy:system,内核空间
id:idle,空闲CPU百分比
wa:wait,等待输入输出的CPU时间百分比
st:stolen,被虚拟化分走所占用的百分比
(2.5)若是咱们须要显示内存统计数据
# vmstat -s
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(2.6)若是咱们但愿将执行的5行结果保存到test文件中,咱们可使用以下的方式操做。
# vmstat 5 >> test &
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstatpython


(三)pmap命令
(3.1)pmap命令用于报告进程的内存映射关系,是Linux调试及运维的一个很好的工具。命令的语法为“pmap (选项) (参数)”,其中参数通常有以下的种类:
-x:显示扩展格式
-d:显示设备格式
-q:不显示头尾行
-V:显示指定版本
(3.2)咱们若是想要查看1号systemd进程的内存映射关系,能够按照以下的方式操做。其中anon表示的是匿名页,stack表示的栈。
# pmap 1---显示systemd进程的内存映射关系
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(3.3)若是咱们须要显示更详细的信息,可使用-x的参数,其中多出来了3列数据,其中RSS表示长度内存集,Dirty表示的是脏数据。固然咱们也能够经过查看内核的信息方式实现详细信息的提取,
# pmap -x 1---显示详细格式信息
# cat /proc/1/maps---经过内核查看详细内存映射信息
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstatios


(四)glances命令
(4.1)glances工具能够在用户的终端上实时显示重要的系统信息,并动态地对其进行更新。这个高效的工具能够工做于任何终端屏幕。另外它并不会消耗大量的CPU资源,一般低于百分之二。glances在屏幕上对数据进行显示,而且每隔两秒钟对其进行更新。你也能够本身将这个时间间隔更改成更长或更短的数值,glances工具还能够捕获到一个文件,便于之后对报告进行分析和绘制图形,输出文件能够是电子表格的格式(.csv)或者html格式。
(4.2)咱们首先将glances命令安装起来。
# yum install glances -y
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(4.3)咱们运行glances命令后发现,其中系统中第1个表示的是CPU的相关参数,第2个表示的是内存相关的参数信息,第3个表示的是交换分区的参数信息,第4个表示的是系统在一分钟、五分钟、十五分钟的平均负载状况,第5个表示的是网络的相关交换速率,其中Rx表示接收的,Tx表示发送的,第6个表示的是磁盘的读写速率信息,第7个表示的是挂载的文件系统,其中Used表示的是医用的空间大小,Total表示总的空间大小,其中第8个中VIRT标示的是虚拟内存集、RES表示的是常驻内存集、NI表示nice值、S表示的是状态、“TIME+”表示的是累计时间、IOR/s表示的io读每秒的速率、IOW/s表示的是io写每秒的速率、Command表示的是进程名称
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(4.4)咱们须要了解glances命令的帮助信息,咱们可使用按键h获取帮助
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(4.5)glances经常使用选项
-b:以Byte为单位显示网上数据速率
-d:关闭磁盘I/O模块
-m:关闭mount模块
-n:关闭network模块
-C file:设置配置文件默认是/etc/glances/glances.conf
-e:显示传感器温度
-p PORT:设置运行端口默认是61209
-P password:设置客户端/服务器密码
-t sec:设置屏幕刷新的时间间隔,单位为秒,默认值为2秒,数值许可范围:1~32767
-s:设置glances运行模式为服务器
-h:显示帮助信息
-v:显示版本信息
# glances -1---表示每一个CPU都单独显示出来
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(4.6)若是咱们但愿将输出的文本信息保存到一个咱们指定的文件中,则可使用以下的操做方式,咱们须要先安装python-jinja2软件包,而后在指定glances将输出的文本指定到对应的文件中。
# yum install python-jinja2 -y---安装python-jinja2软件包
# glances -f /tmp/ -o HTML---指定glances会输出到/tmp/目录下html格式的文件
# glances -f /tmp/ --export-csv CSV---指定glances会输出到/tmp/目录下csv格式的文件
# yum whatprovides */libreoffice---安装libreoffice的calc工具
# libreoffice --calc %U /tmp/CSV---使用libreoffice的calc工具打开csv格式文件
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(4.7)咱们还可使用C/S模式运行glances命令,其中服务端模式为“glances -s -B IPADDR”,其中IPADDR为本机的某地址用于监听(图3-9),而在客户端模式为“glances -c IPADDR”,其中IPADDR是远程服务器的地址(图3-10)。咱们在vms001主机上链接CentOS 7主机后,发现能够正常的显示CentOS 7主机上的glances信息。
# glances -s -B 192.168.26.131---在CentOS 7服务器端主机上执行
# glances -c 192.168.26.131---在vms001客户端主机上执行
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstatnginx


(五)dstat命令
(5.1)dstat是一个能够取代vmstat、iostat、netstat和ifstat这些命令的多功能产品。dstat克服了这些命令的局限并增长了一些额外的功能,增长了监控项,也变得更灵活了。dstat能够很方便监控系统运行情况并用于基准测试和排除故障,dstat可让你实时的看到全部系统资源,例如,你可以经过统计IDE控制器当前状态来比较磁盘利用率,或者直接经过网络带宽数值来比较磁盘的吞吐率(在相同的时间间隔内)。dstat将以列表的形式为你提供选项信息并清晰地告诉你是在何种幅度和单位显示输出,这样更好地避免了信息混乱和误报。更重要的是,它可让你更容易编写插件来收集你想要的数据信息,以从未有过的方式进行扩展。dstat的默认输出是专门为人们实时查看而设计的,不过你也能够将详细信息经过CSV输出到一个文件,并导入到Excel生成表格。
(5.2)咱们打开dstat命令后,会以动态的效果一直在屏幕上滚动刷新。若是咱们但愿每隔两秒显示一个批次,一共显示五次,则可使用下面的方式进行显示。默认状况下dstat的参数自动含有“-cdngy”的参数,分别表示的是“total-cpu-usage”、“dsk/total”、“net/total”、“paging”、“system”。
# dstat 2 5
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(5.3)其中第一个“total-cpu-usage”表示CPU状态,CPU的使用率,这项报告更有趣的部分是显示了用户、系统和空闲部分,这更好的分析了CPU当前的使用情况。若是你看到“wait”一栏中,CPU的状态是一个高使用率值,那说明系统存在一些其它问题。当CPU的状态处于“waits”时,那是由于它正在等待I/O设备(例如内存,磁盘或者网络)的响应并且尚未收到。第二个“dsk/total”表示的是磁盘统计,磁盘的读写操做,这一栏显示磁盘的读、写总数。第三个“net/total”表示的是网络统计,网络设备发送和接收的数据,这一栏显示的网络收、发数据总数。第四个“paging”表示分页统计,系统的分页活动,分页指的是一种内存管理技术用于查找系统场景,一个较大的分页代表系统正在使用大量的交换空间,或者说内存很是分散,大多数状况下你都但愿看到page in和page out的值是0。第五个“system”这一项显示的是中断(int)和上下文切换(csw)。这项统计仅在有比较极限时才有意义,这一栏中较高的统计值一般表示大量的进程形成拥塞,须要对CPU进行关注,你的服务器通常状况下都会运行一些程序,因此这项老是显示一些数值。
(5.4)dstat命令可跟的经常使用选项:
-c,--cpu:显示cpu相关信息
# dstat -C 1---显示1号cpu的信息
# dstat -C total---显示全部cpu的信息
-d,--disk:显示磁盘的相关信息
# dstat -D total---显示系统总的磁盘信息
-g:显示page相关的速率数据
-m:Memory的相关统计数据
-n:Interface的相关统计数据
-p:显示process的相关统计数据
-r:显示io请求的相关的统计数据
-s:显示swapped的相关统计数据
-l:显示负载统计量
-t:将当前时间显示在第一行
--tcp:显示tcp状态的统计数据
--udp:显示udp状态的统计数据
--socket:显示网络统计数据
--ipc:进程间通讯的相关数据
--top-cpu:显示最占用CPU的进程
--top-mem:显示最占用内存的进程
--top-lantency:显示延迟最大的进程
--fs:显示文件系通通计数据(包括文件总数量和inodes值)
--nocolor:不现实颜色(有时候会用)
--disk-util:显示某一时间磁盘的忙碌情况
--freespace:显示当前磁盘空间使用率
--proc-count:显示正在运行的程序数量
--top-bio:指出块I/O最大的进程
--top-cpu:图形化显示CPU占用最大的进程
--top-io:显示正常I/O最大的进程
--top-mem:显示占用最多内存的进程
(5.5)示例:查看所有内存都有谁在占用
# dstat -g -l -m -s --top-mem
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat
(5.6)示例:显示一些关于CPU资源损耗的数据
# dstat -c -y -l --proc-count --top-cpu
【讲清楚,说明白!】资源管理三板斧之--htop、vmstat、dstat浏览器

—————— 本文至此结束,感谢阅读 ——————缓存

相关文章
相关标签/搜索