20 Linux System Monitoring Tools Every SysAdmin Should Know

Linux系统本身就有很多支持监控的命令,这些监控指令能够得到系统活动的当前状态,如果用好这些指令,能很容易的发现性能问题点。下面讨论的命令对于分析系统运行状态、调试服务来说是最基本的命令,能够解决:

 

  1.  找到系统瓶颈
  2. 硬盘-存储瓶颈
  3. CPU、内存瓶颈
  4. 网络瓶颈
本文主要依赖于这篇文章,但是不全依赖于该文讲解,可以看看原文,再看看本文。本文主要是将命令的常用选项拉出来做讲解。另外最重要的是在工作中有意识的使用这些命令,并且使用这些命令的某些高级功能,才能熟能生巧。

top - Process Activity Command
  这个命令比较重要,可以见本blog的另外一篇文章:http://isilic.iteye.com/blog/1725135

vmstat - System Activity, Hardware and System Information
 vmstatreports information about processes, memory, paging, block IO, traps, and cpu activity。从描述中可以看出来vmstat命令是获得系统的各种统计信息的。-m=slabinfo and pages-s=event counters and memory stat-d=disk stat-f=fork numbers,支持delaycount参数。另外man一下vmstat,可以看到vmstat的集中命令行使用格式,这个也比较好理解。

w - Find Out Who Is Logged on And What They Are Doing
  找出谁在登陆这台机器,直接用w参数就行,可能会用到的参数是-h,这个是不显示header,实际上就是不显示第一行信息,大家看看第一行信息是什么东西,有没有感觉很熟悉;没错,就是下面的uptime,也是top命令的第一行信息。

uptime - Tell How Long The System Has Been Running
  系统运行状况,包括当前时间、运行时间、用户登录数、load情况,包括一分钟、五分钟、十五分钟时的load

ps - Displays The Processes
  显示进程运行信息,见本blog这篇文章:http://isilic.iteye.com/blog/1724906

free - Memory Usage
 Memorybufferswap space使用情况。能够用-b,-k,-m,-g来调整数据显示情况,-s表示延迟显示,-c表示显示多少次,一般这两个参数一起使用观看一段时间内的内存使用情况。

iostat - Average CPU Load, Disk Activity
 iostat –c-d参数分别使用,可以得到CPUIO统计信息的设备的统计信息。

iostat -d interval countinterval执行iostat –d命令,执行count次,观察一段时间的io统计情况。实际上,统计信息来自于这四个文件/proc/stat/proc/partitions/proc/diskstats/proc/uptime等。在/proc/文件下有很多系统的统计信息,其实可以直接从这里的文件里面找到这些信息。

 

 

sar - Collect, report, or save system activity information.

  sar命令获得系统的运行信息,-b-d-u等参数能够得到系统的paging statblock device statCPU Utilization。同样有intervalcount参数供使用

 

 

mpstat - Multiprocessor Usage

 mpstat –P参数表示选择那几个核心的CPU统计信息。默认是统计all的信息。如果使用mpstat –p ALL则表示统计all和各个cpu的统计。添加intervalcount参数可以观察一段时间内的CPU运行情况,在这点上貌似确实比TOP好用

 

 

pmap - Process Memory Usage

 pmap pid可以得到程序的Memory Used,这个得到的是MemoryMap,得到的貌似是应用用到的各个模块的地址,最后来个total信息。加上-x参数能够得到模块的加载区大小,默认是Kbyte

 

 

netstat and ss - Network Statistics

  这个命令可是个利器,根据man的描述Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships可见该命令的强大之处。-t=tcp-u=udp-w=raw-l=listening-n=numeric-a=all-p=pid-a=all-s=stat,其中-s的信息最全,能够得到TCPUDPLISTENINGIPICMP各种协议的统计信息。这个命令的熟练使用也是linux网络查问题的基本功之一。更详细的统计信息可以参看这里:http://www.thegeekstuff.com/2010/03/netstat-command-examples/或者man一下

ss命令为Display Linux TCP / UDP Network and Socket Information,这个更关注TCPUDP以及Socket信息,参数和netstat类似。

 

 

iptraf - Real-time Network Statistics

 这个命令没有用过,不好说用途,不过看文档的话,是IP LAN 监控信息。细节可以见这里:http://www.linuxcommand.org/man_pages/iptraf8.html

 

tcpdump - Detailed Network Traffic Analysis
 这个又是个重量级的网络命令,及其好用,推荐各位好好的使用这个命令。这个命令可以作为终极的TCP/UDP命令网络监控,几乎能够解决所有的网络问题,包括调试、监控、统计等,凡是使用网络的地方,最后都要走这个命令查看。好吧,这个命令 太过重要,使用的太多反而不知道哪个参数最重要。看下这篇文章吧,多读几遍这个命令的参数,多在工作中使用这个命令,才能最快的掌握。入门可以看下这篇文章,再搜下这个命令的高级用法。

strace - trace system calls and signals
  看看straceman命令是怎么说的,trace system calls and signal,这个是指linux shell命令的执行流程。这个命令倒是新奇,能够观察命令的执行流程,大致得到shell命令和内核的交互方式。对于这个命令感兴趣的可以继续看下ltraceptrace,前者是library trace,后者是process trace

mtr:a network diagnostic tool
  mtr combines the function of traceroute and ping,是一种通过界面操作的网络诊断工具。其实这个命令相当于tracerouteping命令的组合,可以通过界面的方式得到统计结果。统计的内容更多:LDRSNBAWVGJMXI这些参数各有不同的统计,参数太多不多做解释,反正是上面两个命令能统计到的这个命令都能统计,还是以一种连续的方式统计,更加直观

其它关于网络命令的ifconfigethtooliwconfig(无线网卡配置)等,大家可以自行学习。

最后还是那句话,多练习、多使用,熟能生巧才是 学习的正确方法。



 


你可能感兴趣的:(Monitor)