作为系统管理员,经常需要处理由于高CPU/内存/网络利用率导致应用程序缓慢或无响应的事件。如果服务器只有一个进程,那么很容易找出进程何时消耗所有资源。想象一下运行多个服务的共享服务器,如何找到哪个进程占用了大量的资源?哪个姿势是正确的打开方式?
有许多开箱即用的监控软件可以使用,但是很多是一些付费的软件。下面介绍一些当你没有那些监控软件的前提下,一些基于命令的解决方案。
top
你可以通过查看top或者htop的结果来查看各个进程的概况。
看下面的图,它把所有进程的利用路都给你展现了出来。拿第一条记录来看,那么得到的结果是nodejs占用了3.9%的内存和0.3%的CPU资源。
top命令几乎在所有的linux发行版本上都自带了,可以方便的使用。
当你定位到了哪个进程占用了较多的资源,那么你可以通过top命令带上一些参数来进行进一步的监控。
加入你知道对应的进程ID(PID),那么你可以用下面这个命令来查看
top -p $pid
当然,你也可以在top命令后面使用grep参数,下面图片是检测rabbitmq进程的例子。
htop
htop命令和top类似,但是带有更多的信息,看下图,结果中带有command列,标识出了每个进程所在的路径。
本人比较喜欢这个工具。直观,能看到每个独立的core。
htop命令不是系统自带的,可以用过apt-get或者yum直接安装htop这个包。
官网http://hisham.hm/htop/
glances
通过glances,你能在一个屏幕上显示出所有的按照系统利用率排名的清单。
atop
和上一个glances展示的类似,但是它有一个很实用的功能,就是把所有的输出记录到指定的文件,以便后期查看。比如,你可以配合crontab进行定期执行并记录到文件,这样方便做一个长时间的监控,又不需要盯着屏幕。
输出到文件命令
atop -w filename
回放命令
atop -r filename
atop支持多个参数,比如interval,samples等,我们强烈推荐去百度看下对应命令手册,肯定会有收获。
如果你只是需要进行实时的故障诊断,那么直接输入atop,就能看到如下的内容。
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.0root@sr-master-us:~#
nmon
nmon是一种交互式命令行工具,用于监测CPU,内存,磁盘,网络,NFS和虚拟内存的使用情况。可以通过执行nmon命令同时按下t键就可以看到按使用率排名的进程清单。
Monit
Monit是一个基于web的命令行开源解决方案,用于监视服务器资源比如 daemons, files, directory, file systems,等。
Monitorix
轻量级的开源linux服务器监控软件。Monitorix基于HTTP,所以可以利用它来分析检测网络利用率和一些其他的基于web的指标参数。比如
-
内核/温度
-
文件系统和系统I/O
-
网络流量
-
Apache/Mail/FTP/Nginx/MySQL/Varnish/Memcached/
Monitorix还提供主动报警功能,它将会是一个非常棒的主动监控解决方案,特别是应用于各类云平台服务器。
Netdata
Netdata是一个事实性能监测工具,它可以用于系统资源、应用程序,web服务器,数据库,DNS,邮件系统,硬件资源等,能非常强大。同时,它是一个开源系统,使用起来也比较简单。整个工具是交互式的,每秒读取,并将其保存下来,为运维提供很大的便利性。
为Linux运维人员简单介绍了一些工具,大家可以一个个去试试,每一个工具都有它亮点。熟练掌握工具,这样你就有时间喝咖啡,刷抖音!~
内容源于网络,如有侵权或违规我们会尽快整改