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 監控程序。當然,可能還會使用其他的工具,也可以發出來跟大家分享下。