Linux上如何监控CPU和内存指标

作为系统管理员,经常需要处理由于高CPU/内存/网络利用率导致应用程序缓慢或无响应的事件。如果服务器只有一个进程,那么很容易找出进程何时消耗所有资源。想象一下运行多个服务的共享服务器,如何找到哪个进程占用了大量的资源?哪个姿势是正确的打开方式?

有许多开箱即用的监控软件可以使用,但是很多是一些付费的软件。下面介绍一些当你没有那些监控软件的前提下,一些基于命令的解决方案。


top

你可以通过查看top或者htop的结果来查看各个进程的概况。

看下面的图,它把所有进程的利用路都给你展现了出来。拿第一条记录来看,那么得到的结果是nodejs占用了3.9%的内存和0.3%的CPU资源。

top-output.png

top命令几乎在所有的linux发行版本上都自带了,可以方便的使用。

当你定位到了哪个进程占用了较多的资源,那么你可以通过top命令带上一些参数来进行进一步的监控。

加入你知道对应的进程ID(PID),那么你可以用下面这个命令来查看

top -p $pid

TOP-sigle-pid.png

当然,你也可以在top命令后面使用grep参数,下面图片是检测rabbitmq进程的例子。

rabbitmq.png


htop

htop命令和top类似,但是带有更多的信息,看下图,结果中带有command列,标识出了每个进程所在的路径。

本人比较喜欢这个工具。直观,能看到每个独立的core。

htop-output.png

htop命令不是系统自带的,可以用过apt-get或者yum直接安装htop这个包。

官网http://hisham.hm/htop/


glances

通过glances,你能在一个屏幕上显示出所有的按照系统利用率排名的清单。

glances.png


atop

和上一个glances展示的类似,但是它有一个很实用的功能,就是把所有的输出记录到指定的文件,以便后期查看。比如,你可以配合crontab进行定期执行并记录到文件,这样方便做一个长时间的监控,又不需要盯着屏幕。

输出到文件命令

atop -w filename

回放命令

atop -r filename

atop支持多个参数,比如interval,samples等,我们强烈推荐去百度看下对应命令手册,肯定会有收获。

如果你只是需要进行实时的故障诊断,那么直接输入atop,就能看到如下的内容。

atop.png


ps

下面我们来看下ps命令

我们可以利用ps命令带上PID参数来进行打印CPU和内存的使用情况。

ps -p $PID -o %cpu,%mem

你会得到如下结果

root@sr-master-us:~# ps -p 1048 -o %cpu,%mem
%CPU %MEM
 0.2  3.0
root@sr-master-us:~#


nmon

nmon是一种交互式命令行工具,用于监测CPU,内存,磁盘,网络,NFS和虚拟内存的使用情况。可以通过执行nmon命令同时按下t键就可以看到按使用率排名的进程清单。

nmon.png


Monit

Monit是一个基于web的命令行开源解决方案,用于监视服务器资源比如 daemons, files, directory, file systems,等。

monit.png


Monitorix

轻量级的开源linux服务器监控软件。Monitorix基于HTTP,所以可以利用它来分析检测网络利用率和一些其他的基于web的指标参数。比如

  • 内核/温度

  • 文件系统和系统I/O

  • 网络流量

  • Apache/Mail/FTP/Nginx/MySQL/Varnish/Memcached/

Monitorix还提供主动报警功能,它将会是一个非常棒的主动监控解决方案,特别是应用于各类云平台服务器。


Netdata

Netdata是一个事实性能监测工具,它可以用于系统资源、应用程序,web服务器,数据库,DNS,邮件系统,硬件资源等,能非常强大。同时,它是一个开源系统,使用起来也比较简单。整个工具是交互式的,每秒读取,并将其保存下来,为运维提供很大的便利性。

netdata.png


为Linux运维人员简单介绍了一些工具,大家可以一个个去试试,每一个工具都有它亮点。熟练掌握工具,这样你就有时间喝咖啡,刷抖音!~


企业信息化,智慧云计算

无锡伟致信息技术有限公司为您助力

本文链接:https://www.wzcoder.com/blog/35.html