Linux 效能監控工具命令大全
談到系統性能監控和分析工具,就不得不提Brendan Gregg的系統分析,他的圖非常系統化的展示了應用程式,系統呼叫,核心,協議棧,硬體等各塊之間的互動。有興趣的朋友可以根據這張圖裡的命令進行組合進行系統問題的監控,分析,定位。
1.top
top命令是一個優秀的互動式實用工具,用於監視效能。它提供關於整體Linux效能的幾個概要行,但是報告程序資訊才是top真正的長處。可以廣泛自定義程序顯示,也可以新增欄位,按照不同指標排序程序列表,甚至從top登出程序。
top $(ps -e | grep GeoAddrSrv | awk '{print $1}' | sed 's/^/-p/' )
top -p $(pgrep -f -d, GeoAddrSrv)
top -p 32272,32275,32278,32281,32285,32288,32292,32296,32300,32304,32307,32312,32316,32319,32323,32327,32331,32454
top -p 32336,32340,32343,32348,32352,32355,32359,32362,32366,32370,32373,32376,32380,32383,32386,32390,32393,32396
2.sar - sar 1
sar實用工具提供監視每一事件的能力。它至少有15個單獨的報告類別,包括CPU、磁碟、網路、程序、交換區等等。
3.vmstat - vmstat 1
vmstat命令報告關於記憶體和交換區使用的廣泛資訊。它也報告CPU和一些I/O資訊
r b swpd free buff cache si so bi bo in cs us sy id wa
r表示執行佇列的大小;
b表示由於IO等待而block的執行緒數量;
in表示中斷的數量;
cs表示上下文切換的數量;
us表示使用者CPU時間;
sys表示系統CPU時間;
wa表示由於IO等待而是CPU處於idle狀態的時間;
id表示CPU處於idle狀態的總時間;
swpd表示已使用的swap空間大小,kb為單位;
free表示可用的實體記憶體大小,kb為單位;
buff表示實體記憶體用來快取讀寫操作的buffer大小,kb為單位;
cache表示實體記憶體用來快取程序地址空間的cache大小,kb為單位;
si表示資料從 SWAP 讀取到 RAM(swap in)的大小,KB 為單位;
so表示資料從 RAM 寫到 SWAP(swap out)的大小,KB 為單位;
bi表示磁碟塊從檔案系統或 SWAP 讀取到 RAM(blocks in)的大小,block 為單位;
bo表示磁碟塊從 RAM 寫到檔案系統或 SWAP(blocks out)的大小,block 為單位;
說明:
in非常高,cs比較低,說明這個CPU一直在不停的請求資源;
us一直保持在 80% 以上,而且上下文切換較低cs,說明某個程序可能一直霸佔著CPU;
cs比in要高得多,說明核心不得不來回切換進程序;
sy很高,us很低,且cs很高,說明正在執行的應用程式呼叫了大量的system call;
物理可用記憶體 free 基本沒什麼顯著變化,swapd 逐步增加,說明最小可用的記憶體始終保持在 256MB(實體記憶體大小) * 10% = 2.56MB 左右,當髒頁達到10%的時候(vm.dirty_background_ratio = 10)就開始大量使用 swap;
buff 穩步減少說明系統知道記憶體不夠了,kwapd 正在從 buff 那裡借用部分記憶體;
kswapd 持續把髒頁面寫到 swap 交換區(so),並且從 swapd 逐漸增加看出確實如此。根據上面講的 kswapd 掃描時檢查的三件事,如果頁面被修改了,但不是被檔案系統修改的,把頁面寫到 swap,所以這裡 swapd 持續增加。
4.iostat
iostat報告儲存輸入/輸出(I/O)統計資料
iops = wkB/s 除以 w/s
5.free
free命令報告記憶體資訊
6.mpstat
mpstat檢視多執行緒處理情況
7.iptraf - iptraf -d eth0
iptraf實時網路狀況監測
8.tcpdump
tcpdump抓取網路資料包,詳細分析
9.tcptrace
tcptrace資料包分析工具,原始碼安裝
10.netperf
netperf網路頻寬工具
11.dstat
dstat綜合工具,綜合了 vmstat, iostat, ifstat, netstat 等多個資訊
12.NetHogs-監視每個程序使用的網路頻寬
13.iftop-監視網路頻寬
iftop是另一個在控制檯執行的開放原始碼系統監控應用,它顯示了系統上通過網路介面的應用網路頻寬使用(源主機或者目的主機)的列表,這個列表 定期更新。iftop用於監視網路的使用情況,而’top’用於監視CPU的使用情況。iftop是’top’工具系列中的一員,它用於監視所選介面,並 顯示兩個主機間當前網路頻寬的使用情況。
14 Monitorix-系統和網路監控
Monitorix 是一個免費的輕量級應用工具,它的設計初衷是執行和監控Linux/Unix伺服器系統和資源等。它有一個HTTP 網路伺服器,這個伺服器有規律的收集系統和網路的資訊並以圖形化的形式展示出來。它監控系統的平均負載和使用,記憶體分配、磁碟健康狀況、系統服務、網路端 口、郵件統計(Sendmail,Postfix,Dovecot等),MySQL統計,等等。它就是用來監控系統的總體效能,幫助發現失誤、瓶頸和異常 活動的
yum install monitorix
或者先安裝依賴包:
yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools perl-MIME-Lite perl-CGI perl-DBI perl-XML-Simple perl-Config-General perl-HTTP-Server-Simple perl-IO-Socket-SSL
然後安裝:
rpm -ivh http://www.monitorix.org/monitorix-n.n.n-1.noarch.rpm (where n.n.n is the latest version)
啟動:
chkconfig --level 35 monitorix on
service monitorix start
在/etc/httpd/conf/httpd.conf 新增下列資訊:
Alias /monitorix/ "/usr/share/monitorix/"
<Directory "/usr/share/monitorix">
DirectoryIndex index.php index.html index.htm
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /usr/share/monitorix/cgi-bin/>
DirectoryIndex monitorix.cgi
Options ExecCGI
order deny,allow
deny from all
allow from all
</Directory>
賦予許可權:
chcon -R -u system_u -r object_r -t httpd_sys_content_t /usr/share/monitorix
chcon -R -u system_u -r object_r -t httpd_sys_content_t /var/lib/monitorix
重啟httpd服務:
service httpd restart
監控:
http://localhos/monitorix/
監控多個linux主機, 修改/etc/monitorix.conf,將將MULTIHOST改成y ,REMOTEHOST_LIST 新增列表
15. Arpwatch – 乙太網活動監視器
安裝:yum install arpwatch
Arpwatch被設計用來監控Linux上的乙太網地址解析 (MAC和IP地址的變化)。他在一段時間內持續監控乙太網活動並輸出IP和MAC地址配對變動的日誌。它還可以向管理員傳送郵件通知,對地址配對的增改發出警告。這對於檢測網路上的ARP攻擊很有用。?
16. Suricata – 網路安全監控
17. VnStat PHP – 網路流量監控
VnStat PHP?是流行網路工具”vnstat”的基於web的前端呈現。VnStat PHP?將網路使用情況呈現在漂亮的圖形介面中。他可以顯示以小時、日、月計的上傳和下載流量並輸出總結報告。
18. Nagios – 網路/伺服器監控
Nagios是領先而強大的開源監控系統,他可以讓網路/系統管理員在問題影響到正常的業務之前發現並解決它們。有了Nagios系統,管理員可以 在單個視窗內遠端檢測Linux、Windows、開關、路由器和印表機。它可以危險警告並指出系統/伺服器是否有異常,這可以間接幫助你在問題發生之前 採取搶救措施。
安裝:yum -y install nagios nagios-nrpe nagios-plugins nagios-plugins-nrpe check_logfiles
測試配置是否有錯誤: /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
啟動服務:service nagios start
19.Lsof-列出開啟的檔案
在許多Linux或者類Unix系統裡都有lsof命令,它常用於以列表的形式顯示所有開啟的檔案和程序。開啟的檔案包括磁碟檔案、網路套接字、管 道、裝置和程序。使用這條命令的主要情形之一就是在無法掛載磁碟和顯示正在使用或者開啟某個檔案的錯誤資訊的時候。使用這條命令,你可以很容易地看到正在 使用哪個檔案。
20. Htop – Linux程序監控
Htop?是一個非常高階的互動式的實時linux程序監控工具。 它和top命令十分相似,但是它具有更豐富的特性,例如使用者可以友好地管理程序,快捷鍵,垂直和水平方式顯示程序等等。 Htop是一個第三方工具,它不包含在linux系統中,你需要使用YUM包管理工具去安裝它。 關於安裝的更多資訊,請閱讀下文.
21.Iotop-監控Linux磁碟I/O
Iotop命令同樣也非常類似於top命令和Htop程式,不過它具有監控並顯示實時磁碟I/O和程序的統計功能。在查詢具體程序和大量使用磁碟讀寫程序的時候,這個工具就非常有用。
22. psacct 或者 acct - 監視使用者活動
psacct或者acct工具用於監視系統裡每個使用者的活動狀況。這兩個服務程序執行在後臺,它們對系統上執行的每個使用者的所有活動進行近距離監視,同時還監視這些活動所使用的資源情況。
系統管理員可以使用這兩個工具跟蹤每個使用者的活動,比如使用者正在做什麼,他們提交了那些命令,他們使用了多少資源,他們在系統上持續了多長時間等等。
安裝:yum install psacct
狀態:/etc/init.d/psacct status
啟動:chkconfig psacct on
/etc/init.d/psacct start
命令: ac sa lastcomm等
23.Monit - Linux程序和服務監控工具
Monit是一個免費的開源軟體,也是一個基於網路的程序監控工具。它能自動監控和管理系統程序,程式,檔案,資料夾,許可權,總和驗證碼和檔案系統。
這個軟體能監控像Apache, MySQL, Mail, FTP, ProFTP, Nginx, SSH這樣的服務。你可以通過命令列或者這個軟體提供的網路藉口來檢視系統狀態。
24.tsar- Linux程序和服務監控工具
tsar是淘寶自己開發的一個採集工具,主要用來收集伺服器的系統資訊(如cpu,io,mem,tcp等),以及應用資料(如squid haproxy nginx等)。收集到的資料儲存在磁碟上,可以隨時查詢歷史資訊,輸出方式靈活多樣,另外支援將資料儲存到MySQL中,也可以將資料傳送到nagios報警伺服器。tsar在展示資料時,可以指定模組,並且可以對多條資訊的資料進行merge輸出,帶–live引數可以輸出秒級的實時資訊。