Linux之伺服器監控命令
- 2019 年 11 月 6 日
- 筆記
簡介
如果你想知道你的伺服器正在做幹什麼,你就需要了解一些基本的命令,一旦你精通了這些命令,那你就是一個 專業的 Linux 系統管理員。
一旦你的伺服器是在控制台模式下運行,你就可以開始我們接下來的內容。
iostat
iostat 命令用來顯示存儲子系統的詳細資訊,通常用它來監控磁碟 I/O 的情況。要特別注意 iostat 統計結果中的 %iowait 值,太大了表明你的系統存儲子系統性能低下。
顯示有關CPU使用率的資訊以及系統上每個分區的I / O統計資訊

解析:
使用該命令,您可以查看每個設備的總讀寫速度(每秒)。
在我的示例中,我在/ dev / sda上每秒寫入155.52 KB,自啟動以來總共有54659628 KB的寫入,每秒有13.09 KB的讀取,以及自啟動以來的4601755的讀取。
我可以將其與該特定SSD驅動器的平均值進行比較,然後採取相應措施。
該命令還將顯示CPU統計資訊,如果您的CPU導致系統出現問題,它可以使您有所了解。
其他相關指令見:https://www.techrepublic.com/article/how-to-use-the-linux-iostat-command-to-check-on-your-storage-subsystem/
meminfo 和 free
Meminfo 可讓你獲取記憶體的詳細資訊,你可以使用 cat 和 grep 命令來顯示 meminfo 資訊:
cat /proc/meminfo
另外你可以使用 free 命令來顯示動態的記憶體使用資訊,free 只是給你大概的記憶體資訊,而 meminfo 提供的資訊更加詳細。例如在 oschina 上的 free 命令執行結果:

mpstat
mpstat mpstat是MultiProcessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計資訊,這些資訊存放在/proc/stat文件中。在多CPUs系統里,其不但能查看所有CPU的平均狀況資訊,而且能夠查看特定CPU的資訊。
再來看看 oschina 上的 mpstat 命令執行結果:

關於 mpstat 執行結果中的參數意思請參考此貼。
netstat
Netstat 和 ps 命令類似,是 Linux 管理員基本上每天都會用的工具,它顯示了大量跟網路相關的資訊,例如 socket 的使用、路由、介面、協議、網路等等,下面是一些常用的參數:

-a Show all socket information
-r Show routing information
-i Show network interface statistics
-s Show network protocol statistics
nmon
Nmon, 是 Nigel's Monitor 的縮寫,是一個使用很普遍的開源工具,用以監控 Linux 系統的性能。Nmon 監控多個子系統的性能數據,例如處理器的使用率、記憶體使用率、隊列、磁碟I/O統計、網路I/O統計、記憶體頁處理和進程資訊。Nmon 也提供了一個圖形化的工具:

要運行 nmon,你可以在命令行中啟動它,然後選擇要監控的子系統,這些子系統都對應有一個快捷鍵,例如輸入 c 可查看 CPU 資訊,m用於查看記憶體,d用來查看磁碟資訊等,你也可以使用 -f 命令將 nmon 的執行結果保存到一個 CSV 文件中,便於日後分析。在每日的監控工作中,我發現 nmon 是我最常用的工具。
pmap
pmap 命令用來報告每個進程佔用記憶體的詳細情況,可用來看是否有進程超支了,該命令需要進程 id 作為參數。

ps 和 pstree
ps 和 pstree 命令是 Linux 系統管理員最好的朋友,都可以用來列表正在運行的所有進程。ps 告訴你每個進程佔用的記憶體和 CPU 處理時間,而 pstree 顯示的資訊沒那麼詳細,但它以樹形結構顯示進程之間的依賴關係,包括子進程資訊。一旦發現某個進程有問題,你可以使用 kill 來殺掉它。



sar
該命令號稱系統監控的瑞士軍刀,目前Linux上最為全面的系統性能分析工具之一,可以從14個大方面對系統的活動進行報告,包括文件的讀寫情況、系統調用的使用情況、串口、CPU效率、記憶體使用狀況、進程活動及IPC有關的活動等,使用也是較為複雜。
sar 默認顯示的是從零點開始每隔十分鐘到現在的CPU情況,如果是查看之前的報告,需要指定日誌報告,sar -f /var/log/sysstat/sa25 。

解釋下各列的指標:
%user 用戶模式下消耗的CPU時間的比例;
%nice 通過nice改變了進程調度優先順序的進程,在用戶模式下消耗的CPU時間的比例
%system 系統模式下消耗的CPU時間的比例;
%iowait CPU等待磁碟I/O導致空閑狀態消耗的時間比例;
%steal 利用Xen等作業系統虛擬化技術,等待其它虛擬CPU計算佔用的時間比例;
%idle CPU空閑時間比例;
查看 記憶體使用情況:sar -r

查看記憶體頁面交換髮生狀況:sar -W

查看頻寬資訊:sar -n DEV

要判斷系統瓶頸問題,有時需幾個 sar 命令選項結合起來;
懷疑CPU存在瓶頸,可用 sar -u 和 sar -q 等來查看
懷疑記憶體存在瓶頸,可用sar -B、sar -r 和 sar -W 等來查看
懷疑I/O存在瓶頸,可用 sar -b、sar -u 和 sar -d 等來查看
tcpdump
Tcpdump 是一個簡單、可靠的網路監控工具,用來做基本的協議分析,看看哪些進程在使用網路以及如何使用網路。當然,如果你要獲取更詳細的資訊,你應該使用 Wireshark (下面我們會介紹).
top
top 命令顯示當前的活動進程,默認它是按消耗 CPU 的厲害程度進行排序,每5秒鐘刷新一次列表,你也可以選擇不同的排序方式,例如 m 是按記憶體佔用方式進行排序的快捷鍵。

uptime
uptime 命令告訴你這台伺服器從開機啟動到現在已經運行了多長時間了。同時也包含了從啟動到現在伺服器的平均負載情況,看看 oschina 的數據:

vmstat
你可以使用 vmstat 來監控虛擬記憶體,一般 Linux 上的開發者喜歡使用虛擬記憶體來獲得最佳的存儲性能。該命令報告關於內核執行緒、虛擬記憶體、磁碟、陷阱和 CPU 活動的統計資訊。由 vmstat 命令生成的報告可以用於平衡系統負載活動。系統範圍內的這些統計資訊(所有的處理器中)都計算出以百分比表示的平均值,或者計算其總和。
在 oschina 上執行 vmstat 的結果:

Wireshark
Wireshark, 前身是 Ethereal ,是一個網路協議檢測程式,讓您經由程式抓取運行的網站的相關資訊,包括每一封包流向及其內容、資訊可依作業系統語系看出,方便查看、監控TCP session動態等等.

iptraf
非常實用的tcp/udp網路監控工具,有一個非常簡潔的介面,常用的功能包括:
1.IP流量監控器,用來顯示網路中的IP流量變化資訊。包括TCP標識資訊、包以及位元組計數,ICMP細節,OSPF包類型。
2.簡單的和詳細的介面統計數據,包括IP、TCP、UDP、ICMP、非IP以及其他的IP包計數、IP校驗和錯誤,介面活動、包大小計數。
3.TCP和UDP服務監控器,能夠顯示常見的TCP和UDP應用埠上發送的和接收的包的數量。
區域網數據統計模組,能夠發現在線的主機,並顯示其上的數據活動統計資訊。
4.TCP、UDP、及其他協議的顯示過濾器,允許你只查看感興趣的流量。
以下為一個查看網卡統計資訊的介面:

以上總結的都是大多數最有價值的 Linux 監控程式。當然,可能還會使用其他的工具,也可以發出來跟大家分享下。