對於系統和網絡管理員來講天天監控和調試Linux系統的性能問題是一項繁重的工做。在IT領域做爲一名Linux系統的管理員工做5年後,我逐漸認識到監控和保持系統啓動並運行是多麼的不容易。基於此緣由,咱們已編寫了最常使用的18個命令行工具列表,這些工具將有助於每一個Linux/Unix 系統管理員的工做。這些命令行工具能夠在各類Linux系統下使用,能夠用於監控和查找產生性能問題的緣由。這個命令行工具列表提供了足夠的工具,您能夠挑選適用於您的監控場景的工具。前端
1.Top-Linux進程監控python
Linux下的Top命令是一個性能監控程序,許多系統管理員經常用它來監控Linux性能,在許多Linux或者類Unix操做系統裏都有這個命令。Top命令用於按必定的順序顯示全部正在運行並且處於活動狀態的實時進程,並且會按期更新顯示結果。這條命令顯示了CPU的使用率、內存使用率、交換內存使用大小、高速緩存使用大小、緩衝區使用大小,進程PID、所使用命令以及其餘。它還能夠顯示正在運行進程的內存和CPU佔用多的狀況。對系統管理員來講,top命令式是一個很是有用的,它可用於監控系統並在須要的時候採起正確的處理動做。讓咱們看看實際中的top命令。mysql
# toplinux
2.VmStat-虛擬內存統計ios
Linux 的 VmStat 命令用於顯示虛擬內存、內核線程、磁盤、系統進程、I/O 塊、中斷、CPU 活動 等的統計信息。缺省狀況下, vmstat 命令在 Linux 系統下不可用,你須要安裝一個包含了 vmstat 程序的 sysstat 軟件包。命令格式的常見用法是:web
# vmstatsql
procs ———–memory———- —swap– —–io—- –system– —–cpu—–ubuntu
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 0centos
3.Lsof-列出打開的文件
在許多Linux或者類Unix系統裏都有lsof命令,它經常使用於以列表的形式顯示全部打開的文件和進程。打開的文件包括磁盤文件、網絡套接字、管道、設備和進程。使用這條命令的主要情形之一就是在沒法掛載磁盤和顯示正在使用或者打開某個文件的錯誤信息的時候。使用這條命令,你能夠很容易地看到正在使用哪一個文件。這條命令最經常使用的格式以下:
# 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
4.Tcpdump-網絡包分析器
Tcpdump是最普遍使用的網絡包分析器或者包監控程序之一,它用於捕捉或者過濾網絡上指定接口上接收或者傳輸的TCP/IP包。它還有一個選項用於把捕捉到的包保存到文件裏,以便之後進行分析。在幾乎全部主要的Linux發佈裏,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
5.Netstat-網絡狀態統計
Netstat是一個用於監控進出網絡的包和網絡接口統計的命令行工具。它是一個很是有用的工具,系統管理員能夠用來監控網絡性能,定位並解決網絡相關問題。
# 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
6. Htop – Linux進程監控
Htop 是一個很是高級的交互式的實時linux進程監控工具。 它和top命令十分類似,可是它具備更豐富的特性,例如用戶能夠友好地管理進程,快捷鍵,垂直和水平方式顯示進程等等。 Htop是一個第三方工具,它不包含在linux系統中,你須要使用YUM包管理工具去安裝它。 關於安裝的更多信息,請閱讀下文.
# htop
7.Iotop-監控Linux磁盤I/O
Iotop命令一樣也很是相似於top命令和Htop程序,不過它具備監控並顯示實時磁盤I/O和進程的統計功能。在查找具體進程和大量使用磁盤讀寫進程的時候,這個工具就很是有用。
8.Iostat-輸入/輸出統計
Iostat是一個用於收集顯示系統存儲設備輸入和輸出狀態統計的簡單工具。這個工具經常用來追蹤存儲設備的性能問題,其中存儲設備包括設備、本地磁盤,以及諸如使用NFS等的遠端磁盤。
# 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
9.IPTraf-實時局域網IP監控
IPTraf是一個在Linux控制檯運行的、開放源代碼的實時網絡(局域網)監控應用。它採集了大量信息,好比經過網絡的IP流量監控,包括TCP標記、ICMP詳細信息、TCP/UDP流量分離、TCP鏈接包和字節數。同時還採集有關接口狀態的常見信息和詳細信息:TCP、UDP、IP、ICMP、非IP,IP校驗和錯誤,接口活動等。
10. psacct 或者 acct – 監視用戶活動
psacct或者acct工具用於監視系統裏每一個用戶的活動情況。這兩個服務進程運行在後臺,它們對系統上運行的每一個用戶的全部活動進行近距離監視,同時還監視這些活動所使用的資源狀況。
系統管理員可使用這兩個工具跟蹤每一個用戶的活動,好比用戶正在作什麼,他們提交了那些命令,他們使用了多少資源,他們在系統上持續了多長時間等等。
11.Monit – Linux進程和服務監控工具
Monit是一個免費的開源軟件,也是一個基於網絡的進程監控工具。它能自動監控和管理系統進程,程序,文件,文件夾,權限,總和驗證碼和文件系統。
這個軟件能監控像Apache, MySQL, Mail, FTP, ProFTP, Nginx, SSH這樣的服務。你能夠經過命令行或者這個軟件提供的網絡藉口來查看系統狀態。
12.NetHogs-監視每一個進程使用的網絡帶寬
NetHogs是一個開放源源代碼的很小程序(與Linux下的top命令很類似),它密切監視着系統上每一個進程的網絡活動。同時還追蹤着每一個程序或者應用所使用的實時網絡帶寬。
13.iftop-監視網絡帶寬
iftop是另外一個在控制檯運行的開放源代碼系統監控應用,它顯示了系統上經過網絡接口的應用網絡帶寬使用(源主機或者目的主機)的列表,這個列表按期更新。iftop用於監視網絡的使用狀況,而’top’用於監視CPU的使用狀況。iftop是’top’工具系列中的一員,它用於監視所選接口,並顯示兩個主機間當前網絡帶寬的使用狀況。
14 .Monitorix-系統和網絡監控
Monitorix 是一個免費的輕量級應用工具,它的設計初衷是運行和監控Linux/Unix服務器系統和資源等。它有一個HTTP 網絡服務器,這個服務器有規律的收集系統和網絡的信息並以圖形化的形式展現出來。它監控系統的平均負載和使用,內存分配、磁盤健康情況、系統服務、網絡端口、郵件統計(Sendmail,Postfix,Dovecot等),MySQL統計,等等。它就是用來監控系統的整體性能,幫助發現失誤、瓶頸和異常活動的。
15. Arpwatch – 以太網活動監視器
Arpwatch被設計用來監控Linux上的以太網地址解析 (MAC和IP地址的變化)。他在一段時間內持續監控以太網活動並輸出IP和MAC地址配對變更的日誌。它還能夠向管理員發送郵件通知,對地址配對的增改發出警告。這對於檢測網絡上的ARP攻擊頗有用。
16. Suricata – 網絡安全監控
Suricata 是一個開源的高性能網絡安全、入侵檢測和反監測工具,能夠運行Linux、FreeBSD和Windows上。非營利組織OISF (Open Information Security Foundation)開發並擁有其版權。
17. VnStat PHP – 網絡流量監控
VnStat PHP 是流行網絡工具」vnstat」的基於web的前端呈現。VnStat PHP 將網絡使用狀況呈如今漂亮的圖形界面中。他能夠顯示以小時、日、月計的上傳和下載流量並輸出總結報告。
18. Nagios – 網絡/服務器監控
Nagios是領先而強大的開源監控系統,他可讓網絡/系統管理員在問題影響到正常的業務以前發現並解決它們。有了Nagios系統,管理員能夠在單個窗口內遠程檢測Linux、Windows、開關、路由器和打印機。它能夠危險警告並指出系統/服務器是否有異常,這能夠間接幫助你在問題發生以前採起搶救措施。
##################################################################################################################################################################################################################################################################################
本文介紹了一些能夠用來監控網絡使用狀況的Linux命令行工具。這些工具能夠監控經過網絡接口傳輸的數據,並測量目前哪些數據所傳輸的速度。入站流量和出站流量分開來顯示。
一些命令能夠顯示單個進程所使用的帶寬。這樣一來,用戶很容易發現過分使用網絡帶寬的某個進程。
這些工具使用不一樣的機制來製做流量報告。nload等一些工具能夠讀取"proc/net/dev"文件,以得到流量統計信息;而一些工具使用pcap庫來捕獲全部數據包,而後計算總數據量,從而估計流量負載。
下面是按功能劃分的命令名稱。
監控整體帶寬使用――nload、bmon、slurm、bwm-ng、cbm、speedometer和netload
監控整體帶寬使用(批量式輸出)――vnstat、ifstat、dstat和collectl
每一個套接字鏈接的帶寬使用――iftop、iptraf、tcptrack、pktstat、netwatch和trafshow
每一個進程的帶寬使用――nethogs
1. nload
nload是一個命令行工具,讓用戶能夠分開來監控入站流量和出站流量。它還能夠繪製圖表以顯示入站流量和出站流量,視圖比例能夠調整。用起來很簡單,不支持許多選項。
因此,若是你只須要快速查看總帶寬使用狀況,無需每一個進程的詳細狀況,那麼nload用起來很方便。
安裝nload:Fedora和Ubuntu在默認軟件庫裏面就有nload。CentOS用戶則須要從Epel軟件庫得到nload。
2. iftop
iftop可測量經過每個套接字鏈接傳輸的數據;它採用的工做方式有別於nload。iftop使用pcap庫來捕獲進出網絡適配器的數據包,而後彙總數據包大小和數量,搞清楚總的帶寬使用狀況。
雖然iftop報告每一個鏈接所使用的帶寬,但它沒法報告參與某個套按字鏈接的進程名稱/編號(ID)。不過因爲基於pcap庫,iftop可以過濾流量,並報告由過濾器指定的所選定主機鏈接的帶寬使用狀況。
n選項能夠防止iftop將IP地址解析成主機名,解析自己就會帶來額外的網絡流量。
安裝iftop:Ubuntu/Debian/Fedora用戶能夠從默認軟件庫得到它。CentOS用戶能夠從Epel得到它。
3. iptraf
iptraf是一款交互式、色彩鮮豔的IP局域網監控工具。它能夠顯示每一個鏈接以及主機之間傳輸的數據量。下面是屏幕截圖。
安裝iptraf:
4. nethogs
nethogs是一款小巧的"net top"工具,能夠顯示每一個進程所使用的帶寬,並對列表排序,將耗用帶寬最多的進程排在最上面。萬一出現帶寬使用忽然激增的狀況,用戶迅速打開nethogs,就能夠找到致使帶寬使用激增的進程。nethogs能夠報告程序的進程編號(PID)、用戶和路徑。
安裝nethogs:Ubuntu、Debian和Fedora用戶能夠從默認軟件庫得到。CentOS用戶則須要Epel。
5. bmon
bmon(帶寬監控器)是一款相似nload的工具,它能夠顯示系統上全部網絡接口的流量負載。輸出結果還含有圖表和剖面,附有數據包層面的詳細信息。
安裝bmon:Ubuntu、Debian和Fedora用戶能夠從默認軟件庫來安裝。CentOS用戶則須要安裝repoforge,由於Epel裏面沒有bmon。
bmon支持許多選項,可以製做HTML格式的報告。欲知更多信息,請參閱參考手冊頁。
6. slurm
slurm是另外一款網絡負載監控器,能夠顯示設備的統計信息,還能顯示ASCII圖形。它支持三種不一樣類型的圖形,使用c鍵、s鍵和l鍵便可激活每種圖形。slurm功能簡單,沒法顯示關於網絡負載的任何更進一步的詳細信息。
安裝slurm
7. tcptrack
tcptrack相似iftop,使用pcap庫來捕獲數據包,並計算各類統計信息,好比每一個鏈接所使用的帶寬。它還支持標準的pcap過濾器,這些過濾器可用來監控特定的鏈接。
安裝tcptrack:Ubuntu、Debian和Fedora在默認軟件庫裏面就有它。CentOS用戶則須要從RepoForge得到它,由於Epel裏面沒有它。
8. vnstat
vnstat與另外大多數工具備點不同。它實際上運行後臺服務/守護進程,始終不停地記錄所傳輸數據的大小。以外,它能夠用來製做顯示網絡使用歷史狀況的報告。
運行沒有任何選項的vnstat,只會顯示自守護進程運行以來所傳輸的數據總量。
想實時監控帶寬使用狀況,請使用"-l"選項(實時模式)。而後,它會顯示入站數據和出站數據所使用的總帶寬量,但很是精確地顯示,沒有關於主機鏈接或進程的任何內部詳細信息。
vnstat更像是一款製做歷史報告的工具,顯示天天或過去一個月使用了多少帶寬。它並非嚴格意義上的實時監控網絡的工具。
vnstat支持許多選項,支持哪些選項方面的詳細信息請參閱參考手冊頁。
安裝vnstat
9. bwm-ng
bwm-ng(下一代帶寬監控器)是另外一款很是簡單的實時網絡負載監控工具,能夠報告摘要信息,顯示進出系統上全部可用網絡接口的不一樣數據的傳輸速度。
若是控制檯足夠大,bwm-ng還能使用curses2輸出模式,爲流量繪製條形圖。
安裝bwm-ng:在CentOS上,能夠從Epel來安裝bwm-ng。
10. cbm:Color Bandwidth Meter
這是一款小巧簡單的帶寬監控工具,能夠顯示經過諸網絡接口的流量大小。沒有進一步的選項,僅僅實時顯示和更新流量的統計信息。
11. speedometer
這是另外一款小巧而簡單的工具,僅僅繪製外觀漂亮的圖形,顯示經過某個接口傳輸的入站流量和出站流量。
安裝speedometer
12. pktstat
pktstat能夠實時顯示全部活動鏈接,並顯示哪些數據經過這些活動鏈接傳輸的速度。它還能夠顯示鏈接類型,好比TCP鏈接或UDP鏈接;若是涉及HTTP鏈接,還會顯示關於HTTP請求的詳細信息。
13. netwatch
netwatch是netdiag工具庫的一部分,它也能夠顯示本地主機與其餘遠程主機之間的鏈接,並顯示哪些數據在每一個鏈接上所傳輸的速度。
14. trafshow
與netwatch和pktstat同樣,trafshow也能夠報告當前活動鏈接、它們使用的協議以及每條鏈接上的數據傳輸速度。它能使用pcap類型過濾器,對鏈接進行過濾。
只監控TCP鏈接
15. netload
netload命令只顯示關於當前流量負載的一份簡短報告,並顯示自程序啓動以來所傳輸的總字節量。沒有更多的功能特性。它是netdiag的一部分。
16. ifstat
ifstat可以以批處理式模式顯示網絡帶寬。輸出採用的一種格式便於用戶使用其餘程序或實用工具來記入日誌和分析。
安裝ifstat:Ubuntu、Debian和Fedora用戶在默認軟件庫裏面就有它。CentOS用戶則須要從Repoforge得到它,由於Epel裏面沒有它。
17. dstat
dstat是一款用途普遍的工具(用python語言編寫),它能夠監控系統的不一樣統計信息,並使用批處理模式來報告,或者將相關數據記入到CSV或相似的文件。這個例子顯示瞭如何使用dstat來報告網絡帶寬。
安裝dstat
18. collectl
collectl以一種相似dstat的格式報告系統的統計信息;與dstat同樣,它也收集關於系統不一樣資源(如處理器、內存和網絡等)的統計信息。這裏給出的一個簡單例子顯示瞭如何使用collectl來報告網絡使用/帶寬。
安裝collectl
結束語
上述幾個使用方便的命令能夠迅速檢查Linux服務器上的網絡帶寬使用狀況。不過,這些命令須要用戶經過SSH登陸到遠程服務器。另外,基於Web的監控工具也能夠用來實現一樣的任務。
ntop和darkstat是面向Linux系統的其中兩個基本的基於Web的網絡監控工具。除此以外還有企業級監控工具,好比nagios,它們提供了一批功能特性,不只僅能夠監控服務器,還能監控整個基礎設施。
################################################################################################################################################################################################################################################################################
1.w
2.ss