【No.2】监控Linux性能25个命令行工具

接着上一篇博文继续 【No.1】监控Linux性能25个命令行工具

10:mpstat -- 显示每个CPU的占用情况

该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的

mpstat -P ALL 1
Linux 3.13.0-75-generic (lnmp) 	06/25/2016 	_x86_64_	(2 CPU)

02:28:59 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
02:29:00 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:29:00 PM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
02:29:00 PM    1    0.00    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00   99.00


11:pidstat -- 查看进程的CPU占用率

该命令输出进程的CPU占用率,该命令会持续输出,并且不会覆盖之前的数据,可以方便观察系统动态

$ pidstat 1
Linux 3.13.0-75-generic (lnmp) 	06/25/2016 	_x86_64_	(2 CPU)

02:30:20 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
02:30:21 PM     0         9    0.00    0.98    0.00    0.98     1  rcuos/1

02:30:21 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
02:30:22 PM     0       977    1.00    0.00    0.00    1.00     1  redis-server

02:30:22 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
02:30:23 PM  1000     19938    0.00    1.00    0.00    1.00     1  sshd
02:30:23 PM  1000     20909    0.00    1.00    0.00    1.00     0  sshd


12:free -- 查看系统内存的使用情况

free命令可以查看系统内存的使用情况,-m参数表示按照兆字节展示。最后两列分别表示用于IO缓存的内存数,和用于文件系统页缓存的内存数。需要注意的是,第二行-/+ buffers/cache,看上去缓存占用了大量内存空间。这是Linux系统的内存使用策略,尽可能的利用内存,如果应用程序需要内存,这部分内存会立即被回收并分配给应用程序。因此,这部分内存一般也被当成是可用内存。


如果可用内存非常少,系统可能会动用交换区(如果配置了的话),这样会增加IO开销(可以在iostat命令中提现),降低系统性能。

$ free -m
             total       used       free     shared    buffers     cached
Mem:           363        313         50          0          3        104
-/+ buffers/cache:        204        159
Swap:          767        155        612


13:sar -- 查看网络设备的吞吐率

sar命令在这里可以查看网络设备的吞吐率。在排查性能问题时,可以通过网络设备的吞吐量,判断网络设备是否已经饱和。

sar -n DEV 1
Linux 3.13.0-75-generic (lnmp) 	06/25/2016 	_x86_64_	(2 CPU) 
02:33:01 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
02:33:02 PM      eth0     15.84     15.84      0.93      1.69      0.00      0.00      0.00      0.00
02:33:02 PM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:33:02 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00


查看TCP连接状态

$ sar -n TCP,ETCP 1
Linux 3.13.0-75-generic (lnmp) 	06/25/2016 	_x86_64_	(2 CPU)

02:35:21 PM  active/s passive/s    iseg/s    oseg/s
02:35:22 PM      0.00      0.00      8.00      8.00

active/s:每秒本地发起的TCP连接数,既通过connect调用创建的TCP连接

passive/s:每秒远程发起的TCP连接数,即通过accept调用创建的TCP连接

retrans/s:每秒TCP重传数量


14:NetHogs-监视每个进程使用的网络带宽

NetHogs是一个开放源源代码的很小程序(与Linux下的top命令很相似),它密切监视着系统上每个进程的网络活动。同时还追踪着每个程序或者应用所使用的实时网络带宽

$ sudo apt-get install nethogs
$ sudo nethogs

nethogs.jpg


15:iftop-监视网络带宽

iftop是另一个在控制台运行的开放源代码系统监控应用,它显示了系统上通过网络接口的应用网络带宽使用(源主机或者目的主机)的列表,这个列表定期更新。iftop用于监视网络的使用情况,而'top'用于监视CPU的使用情况。iftop是'top'工具系列中的一员,它用于监视所选接口,并显示两个主机间当前网络带宽的使用情况

$ sudo apt-get install iftop
$ sudo iftop

iftop.jpg



工具列表

  • IPTraf

  • psacct 或者 acct

  • Monit

  • Monitorix

  • Arpwatch

  • Suricata

  • VnStat PHP

  • Nagios 

  • Zabbix


1:IPTraf-实时局域网IP监控

IPTraf是一个在Linux控制台运行的、开放源代码的实时网络(局域网)监控应用。它采集了大量信息,比如通过网络的IP流量监控,包括TCP标记、ICMP详细信息、TCP/UDP流量分离、TCP连接包和字节数。同时还采集有关接口状态的常见信息和详细信息:TCP、UDP、IP、ICMP、非IP,IP校验和错误,接口活动等。

有关IPTraf工具用法以及其他更多信息,请访问: IPTraf网络监控工具


2: psacct 或者 acct - 监视用户活动

psacct或者acct工具用于监视系统里每个用户的活动状况。这两个服务进程运行在后台,它们对系统上运行的每个用户的所有活动进行近距离监视,同时还监视这些活动所使用的资源情况。

系统管理员可以使用这两个工具跟踪每个用户的活动,比如用户正在做什么,他们提交了那些命令,他们使用了多少资源,他们在系统上持续了多长时间等等。

有关这些命令的安装和用法举例信息,请参阅文章:使用psacct或者acct监视用户活动


3:Monit - Linux进程和服务监控工具

Monit是一个免费的开源软件,也是一个基于网络的进程监控工具。它能自动监控和管理系统进程,程序,文件,文件夹,权限,总和验证码和文件系统。

这个软件能监控像Apache, MySQL, Mail, FTP, ProFTP, Nginx, SSH这样的服务。你可以通过命令行或者这个软件提供的网络借口来查看系统状态。

更多内容请参阅:用Monit监控Linux进程


4:Monitorix-系统和网络监控

Monitorix 是一个免费的轻量级应用工具,它的设计初衷是运行和监控Linux/Unix服务器系统和资源等。它有一个HTTP 网络服务器,这个服务器有规律的收集系统和网络的信息并以图形化的形式展示出来。它监控系统的平均负载和使用,内存分配、磁盘健康状况、系统服务、网络端口、邮件统计(Sendmail,Postfix,Dovecot等),MySQL统计,等等。它就是用来监控系统的总体性能,帮助发现失误、瓶颈和异常活动的

Monitorix.jpg


5:Arpwatch – 以太网活动监视器

Arpwatch被设计用来监控Linux上的以太网地址解析 (MAC和IP地址的变化)。他在一段时间内持续监控以太网活动并输出IP和MAC地址配对变动的日志。它还可以向管理员发送邮件通知,对地址配对的增改发出警告。这对于检测网络上的ARP攻击很有用。 

更多信息请参阅 : Arpwatch to Monitor Ethernet Activity


6:Suricata – 网络安全监控


Suricata 是一个开源的高性能网络安全、入侵检测和反监测工具,可以运行Linux、FreeBSD和Windows上。非营利组织OISF (Open Information Security Foundation)开发并拥有其版权。

更多信息请参阅 : Suricata – A Network Intrusion Detection and Prevention System


7:VnStat PHP – 网络流量监控

VnStat PHP 是流行网络工具"vnstat"的基于web的前端呈现。VnStat PHP 将网络使用情况呈现在漂亮的图形界面中。他可以显示以小时、日、月计的上传和下载流量并输出总结报告。

更多信息请参阅 : VnStat PHP – Monitoring Network Bandwidth


8:Nagios – 网络/服务器监控

Nagios是领先而强大的开源监控系统,他可以让网络/系统管理员在问题影响到正常的业务之前发现并解决它们。有了Nagios系统,管理员可以在单个窗口内远程检测Linux、Windows、开关、路由器和打印机。它可以危险警告并指出系统/服务器是否有异常,这可以间接帮助你在问题发生之前采取抢救措施。


9:Zabbix 同Nagios