監(jiān)控 Linux 性能的 18 個命令行工具
對于系統(tǒng)和網(wǎng)絡(luò)管理員來說每天監(jiān)控和調(diào)試Linux系統(tǒng)的性能問題是一項(xiàng)繁重的工作。在IT領(lǐng)域作為一名Linux系統(tǒng)的管理員工作5年后,我逐漸認(rèn)識到監(jiān)控和保持系統(tǒng)啟動并運(yùn)行是多么的不容易?;诖嗽?,我們已編寫了最常使用的18個命令行工具列表,這些工具將有助于每個Linux/Unix 系統(tǒng)管理員的工作。這些命令行工具可以在各種Linux系統(tǒng)下使用,可以用于監(jiān)控和查找產(chǎn)生性能問題的原因。這個命令行工具列表提供了足夠的工具,您可以挑選適用于您的監(jiān)控場景的工具。
1.Top-Linux進(jìn)程監(jiān)控
Linux下的Top命令是一個性能監(jiān)控程序,許多系統(tǒng)管理員常常用它來監(jiān)控Linux性能,在許多Linux或者類Unix操作系統(tǒng)里都有這個命令。Top命令用于按一定的順序顯示所有正在運(yùn)行而且處于活動狀態(tài)的實(shí)時進(jìn)程,而且會定期更新顯示結(jié)果。這條命令顯示了CPU的使用率、內(nèi)存使用率、交換內(nèi)存使用大小、高速緩存使用大小、緩沖區(qū)使用大小,進(jìn)程PID、所使用命令以及其他。它還可以顯示正在運(yùn)行進(jìn)程的內(nèi)存和CPU占用多的情況。對系統(tǒng)管理員來說,top命令式是一個非常有用的,它可用于監(jiān)控系統(tǒng)并在需要的時候采取正確的處理動作。讓我們看看實(shí)際中的top命令。
# top
Top命令舉例
有關(guān)Top命令更多的例子,請閱讀:Linux下12個使用Top命令的例子。
2. VmStat – 虛擬內(nèi)存統(tǒng)計
Linux 的 VmStat 命令用于顯示虛擬內(nèi)存、內(nèi)核線程、磁盤、系統(tǒng)進(jìn)程、I/O 塊、中斷、CPU 活動 等的統(tǒng)計信息。缺省情況下, vmstat 命令在 Linux 系統(tǒng)下不可用,你需要安裝一個包含了 vmstat 程序的 sysstat 軟件包。命令格式的常見用法是:
# vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free inact active si so bi bo in cs us sy id wa st 1 0 0 810420 97380 70628 0 0 115 4 89 79 1 6 90 3 0
更多的 vmstat 例子,請閱讀 : 6 Linux 下的 Vmstat 命令實(shí)例
3.Lsof-列出打開的文件
在許多Linux或者類Unix系統(tǒng)里都有l(wèi)sof命令,它常用于以列表的形式顯示所有打開的文件和進(jìn)程。打開的文件包括磁盤文件、網(wǎng)絡(luò)套接字、管道、設(shè)備和進(jìn)程。使用這條命令的主要情形之一就是在無法掛載磁盤和顯示正在使用或者打開某個文件的錯誤信息的時候。使用這條命令,你可以很容易地看到正在使用哪個文件。這條命令最常用的格式如下:
# lsof COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME init 1 root cwd DIR 104,2 4096 2 / init 1 root rtd DIR 104,2 4096 2 / init 1 root txt REG 104,2 38652 17710339 /sbin/init init 1 root mem REG 104,2 129900 196453 /lib/ld-2.5.so init 1 root mem REG 104,2 1693812 196454 /lib/libc-2.5.so init 1 root mem REG 104,2 20668 196479 /lib/libdl-2.5.so init 1 root mem REG 104,2 245376 196419 /lib/libsepol.so.1 init 1 root mem REG 104,2 93508 196431 /lib/libselinux.so.1 init 1 root 10u FIFO 0,17 953 /dev/initctl
有關(guān)lsof命令的用法和例子的更多信息,請參考: Linux下10個使用lsof命令的例子。
4.Tcpdump-網(wǎng)絡(luò)包分析器
Tcpdump是最廣泛使用的網(wǎng)絡(luò)包分析器或者包監(jiān)控程序之一,它用于捕捉或者過濾網(wǎng)絡(luò)上指定接口上接收或者傳輸?shù)腡CP/IP包。它還有一個選項(xiàng)用于把捕捉到的包保存到文件里,以便以后進(jìn)行分析。在幾乎所有主要的Linux發(fā)布里,tcpdump都可以使用。
# tcpdump -i eth0tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 22:08:59.617628 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 2532133365:2532133481(116) ack 3561562349 win 9648 22:09:07.653466 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 116:232(116) ack 1 win 9648 22:08:59.617916 IP 115.113.134.3.static-mumbai.vsnl.net.in.28472 > tecmint.com.ssh: . ack 116 win 64347
要想獲得更多有關(guān)tcpdump用法的信息,請參閱: Linux下12個使用Tcpdump命令的例子。
5.Netstat-網(wǎng)絡(luò)狀態(tài)統(tǒng)計
Netstat是一個用于監(jiān)控進(jìn)出網(wǎng)絡(luò)的包和網(wǎng)絡(luò)接口統(tǒng)計的命令行工具。它是一個非常有用的工具,系統(tǒng)管理員可以用來監(jiān)控網(wǎng)絡(luò)性能,定位并解決網(wǎng)絡(luò)相關(guān)問題。
# netstat -a | moreActive Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:mysql *:* LISTEN tcp 0 0 *:sunrpc *:* LISTEN tcp 0 0 *:realm-rusd *:* LISTEN tcp 0 0 *:ftp *:* LISTEN tcp 0 0 localhost.localdomain:ipp *:* LISTEN tcp 0 0 localhost.localdomain:smtp *:* LISTEN tcp 0 0 localhost.localdomain:smtp localhost.localdomain:42709 TIME_WAIT tcp 0 0 localhost.localdomain:smtp localhost.localdomain:42710 TIME_WAIT tcp 0 0 *:http *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 *:https *:* LISTEN
有關(guān)Netstat更多的例子,請參閱: Linux下20個使用Netstat命令的例子。
6. Htop – Linux進(jìn)程監(jiān)控
Htop 是一個非常高級的交互式的實(shí)時linux進(jìn)程監(jiān)控工具。 它和top命令十分相似,但是它具有更豐富的特性,例如用戶可以友好地管理進(jìn)程,快捷鍵,垂直和水平方式顯示進(jìn)程等等。 Htop是一個第三方工具,它不包含在linux系統(tǒng)中,你需要使用YUM包管理工具去安裝它。 關(guān)于安裝的更多信息,請閱讀下文.
# htop
Htop 命令示例截圖
對于Htop的安裝,請讀 : 在Linux安裝Htop(Linux進(jìn)程監(jiān)控)
7.Iotop-監(jiān)控Linux磁盤I/O
Iotop命令同樣也非常類似于top命令和Htop程序,不過它具有監(jiān)控并顯示實(shí)時磁盤I/O和進(jìn)程的統(tǒng)計功能。在查找具體進(jìn)程和大量使用磁盤讀寫進(jìn)程的時候,這個工具就非常有用。
# iotop
Iotop命令舉例的截圖 有關(guān)如何安裝和使用iotop的信息,請閱讀: 在Linux下安裝Iotop。
8.Iostat-輸入/輸出統(tǒng)計
Iostat是一個用于收集顯示系統(tǒng)存儲設(shè)備輸入和輸出狀態(tài)統(tǒng)計的簡單工具。這個工具常常用來追蹤存儲設(shè)備的性能問題,其中存儲設(shè)備包括設(shè)備、本地磁盤,以及諸如使用NFS等的遠(yuǎn)端磁盤。
# iostat Linux 2.6.18-238.9.1.el5 (tecmint.com) 09/13/2012 avg-cpu: %user %nice %system %iowait %steal %idle 2.60 3.65 1.04 4.29 0.00 88.42 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn cciss/c0d0 17.79 545.80 256.52 855159769 401914750 cciss/c0d0p1 0.00 0.00 0.00 5459 3518 cciss/c0d0p2 16.45 533.97 245.18 836631746 384153384 cciss/c0d0p3 0.63 5.58 3.97 8737650 6215544 cciss/c0d0p4 0.00 0.00 0.00 8 0 cciss/c0d0p5 0.63 3.79 5.03 5936778 7882528 cciss/c0d0p6 0.08 2.46 2.34 3847771 3659776
有關(guān)iostat用法和舉例的更多信息,請?jiān)L問: Linux下6個使用iostat命令的例子。
9.IPTraf-實(shí)時局域網(wǎng)IP監(jiān)控
IPTraf是一個在Linux控制臺運(yùn)行的、開放源代碼的實(shí)時網(wǎng)絡(luò)(局域網(wǎng))監(jiān)控應(yīng)用。它采集了大量信息,比如通過網(wǎng)絡(luò)的IP流量監(jiān)控,包括TCP標(biāo)記、ICMP詳細(xì)信息、TCP/UDP流量分離、TCP連接包和字節(jié)數(shù)。同時還采集有關(guān)接口狀態(tài)的常見信息和詳細(xì)信息:TCP、UDP、IP、ICMP、非IP,IP校驗(yàn)和錯誤,接口活動等。
IP流量監(jiān)控
有關(guān)IPTraf工具用法以及其他更多信息,請?jiān)L問: IPTraf網(wǎng)絡(luò)監(jiān)控工具。
10. psacct 或者 acct - 監(jiān)視用戶活動
psacct或者acct工具用于監(jiān)視系統(tǒng)里每個用戶的活動狀況。這兩個服務(wù)進(jìn)程運(yùn)行在后臺,它們對系統(tǒng)上運(yùn)行的每個用戶的所有活動進(jìn)行近距離監(jiān)視,同時還監(jiān)視這些活動所使用的資源情況。
系統(tǒng)管理員可以使用這兩個工具跟蹤每個用戶的活動,比如用戶正在做什么,他們提交了那些命令,他們使用了多少資源,他們在系統(tǒng)上持續(xù)了多長時間等等。
有關(guān)這些命令的安裝和用法舉例信息,請參閱文章:使用psacct或者acct監(jiān)視用戶活動。
11.Monit - Linux進(jìn)程和服務(wù)監(jiān)控工具
Monit是一個免費(fèi)的開源軟件,也是一個基于網(wǎng)絡(luò)的進(jìn)程監(jiān)控工具。它能自動監(jiān)控和管理系統(tǒng)進(jìn)程,程序,文件,文件夾,權(quán)限,總和驗(yàn)證碼和文件系統(tǒng)。
這個軟件能監(jiān)控像Apache, MySQL, Mail, FTP, ProFTP, Nginx, SSH這樣的服務(wù)。你可以通過命令行或者這個軟件提供的網(wǎng)絡(luò)借口來查看系統(tǒng)狀態(tài)。
Monit Linux系統(tǒng)監(jiān)控
更多內(nèi)容請參閱:用Monit監(jiān)控Linux進(jìn)程
12.NetHogs-監(jiān)視每個進(jìn)程使用的網(wǎng)絡(luò)帶寬
NetHogs是一個開放源源代碼的很小程序(與Linux下的top命令很相似),它密切監(jiān)視著系統(tǒng)上每個進(jìn)程的網(wǎng)絡(luò)活動。同時還追蹤著每個程序或者應(yīng)用所使用的實(shí)時網(wǎng)絡(luò)帶寬。
NetHogs:Linux下的帶寬監(jiān)視
更多信息請參閱: 使用NetHogs監(jiān)視Linux的網(wǎng)絡(luò)帶寬使用狀況。
13.iftop-監(jiān)視網(wǎng)絡(luò)帶寬
iftop是另一個在控制臺運(yùn)行的開放源代碼系統(tǒng)監(jiān)控應(yīng)用,它顯示了系統(tǒng)上通過網(wǎng)絡(luò)接口的應(yīng)用網(wǎng)絡(luò)帶寬使用(源主機(jī)或者目的主機(jī))的列表,這個列表定期更新。iftop用于監(jiān)視網(wǎng)絡(luò)的使用情況,而'top'用于監(jiān)視CPU的使用情況。iftop是'top'工具系列中的一員,它用于監(jiān)視所選接口,并顯示兩個主機(jī)間當(dāng)前網(wǎng)絡(luò)帶寬的使用情況。
iftop-監(jiān)視網(wǎng)絡(luò)帶寬
更多信息請參閱:iftop-監(jiān)視網(wǎng)絡(luò)帶寬的使用情況。
14 Monitorix-系統(tǒng)和網(wǎng)絡(luò)監(jiān)控
Monitorix 是一個免費(fèi)的輕量級應(yīng)用工具,它的設(shè)計初衷是運(yùn)行和監(jiān)控Linux/Unix服務(wù)器系統(tǒng)和資源等。它有一個HTTP 網(wǎng)絡(luò)服務(wù)器,這個服務(wù)器有規(guī)律的收集系統(tǒng)和網(wǎng)絡(luò)的信息并以圖形化的形式展示出來。它監(jiān)控系統(tǒng)的平均負(fù)載和使用,內(nèi)存分配、磁盤健康狀況、系統(tǒng)服務(wù)、網(wǎng)絡(luò)端口、郵件統(tǒng)計(Sendmail,Postfix,Dovecot等),MySQL統(tǒng)計,等等。它就是用來監(jiān)控系統(tǒng)的總體性能,幫助發(fā)現(xiàn)失誤、瓶頸和異?;顒拥摹?/p>
15. Arpwatch – 以太網(wǎng)活動監(jiān)視器
Arpwatch被設(shè)計用來監(jiān)控Linux上的以太網(wǎng)地址解析 (MAC和IP地址的變化)。他在一段時間內(nèi)持續(xù)監(jiān)控以太網(wǎng)活動并輸出IP和MAC地址配對變動的日志。它還可以向管理員發(fā)送郵件通知,對地址配對的增改發(fā)出警告。這對于檢測網(wǎng)絡(luò)上的ARP攻擊很有用。
更多信息請參閱 : Arpwatch to Monitor Ethernet Activity
16. Suricata – 網(wǎng)絡(luò)安全監(jiān)控
Suricata 是一個開源的高性能網(wǎng)絡(luò)安全、入侵檢測和反監(jiān)測工具,可以運(yùn)行Linux、FreeBSD和Windows上。非營利組織OISF (Open Information Security Foundation)開發(fā)并擁有其版權(quán)。
更多信息請參閱 : Suricata – A Network Intrusion Detection and Prevention System
17. VnStat PHP – 網(wǎng)絡(luò)流量監(jiān)控
VnStat PHP 是流行網(wǎng)絡(luò)工具"vnstat"的基于web的前端呈現(xiàn)。VnStat PHP 將網(wǎng)絡(luò)使用情況呈現(xiàn)在漂亮的圖形界面中。他可以顯示以小時、日、月計的上傳和下載流量并輸出總結(jié)報告。
更多信息請參閱 : VnStat PHP – Monitoring Network Bandwidth
18. Nagios – 網(wǎng)絡(luò)/服務(wù)器監(jiān)控
Nagios是領(lǐng)先而強(qiáng)大的開源監(jiān)控系統(tǒng),他可以讓網(wǎng)絡(luò)/系統(tǒng)管理員在問題影響到正常的業(yè)務(wù)之前發(fā)現(xiàn)并解決它們。有了Nagios系統(tǒng),管理員可以在單個窗口內(nèi)遠(yuǎn)程檢測Linux、Windows、開關(guān)、路由器和打印機(jī)。它可以危險警告并指出系統(tǒng)/服務(wù)器是否有異常,這可以間接幫助你在問題發(fā)生之前采取搶救措施。
更多信息請參閱 : Install Nagios Monitoring System to Monitor Remote Linux/Windows Hosts
我們想知道:你在用什么監(jiān)控程序來監(jiān)控Linux服務(wù)器的性能呢?如果我們在上面錯過了你認(rèn)為重要的工具,請?jiān)谠u論中告訴我們,不要忘了分享它!
英文原文:18 Command Line Tools to Monitor Linux Performance
譯文鏈接:http://www.oschina.net/translate/command-line-tools-to-monitor-linux-performance