監控Linux服務器
作者:尹正傑
版權聲明:原創作品,謝絕轉載!否則將追究法律責任。
一.Linux系統監控基礎
從性能的角度來看,監控Linux系統主要監控CPU,內存,磁盤存儲和帶寬的使用情況。
1>.監控CPU使用情況
只要沒有使用100%的CPU容量,就可以在系統中使用剩余的容量來支持更多的活動。CPU的使用達到峰值是常見的,但是在CPU使用率過高時,我們的目標是跟蹤那些進程導致CPU使用過多。
檢查CPU使用去考試應該注意下面幾個關鍵因素:
(1)用戶與系統使用情況:
與用戶維護操作系統運行的時間成正比,可以確定CPU用於用戶應用程序的時間百分比。顯然,如果CPU的大部分時間由系統占用了,則可能還需要進一步檢查。
(2)可運行進程:
在任務給定的時間,進程要么在運行,要么在等待資源被釋放。正在等待資源分配的進程稱為可運行進程。大量可運行進程的存在表明系統可能面臨容量危機,它是CPU綁定的。
(3)上下文切換和中斷:
當操作系統在進程之間切換時,所謂的上線文切換回導致一些開銷。如果有太多次的上下文切換時,則CPU使用率會惡化。當完成某些硬件或軟件相關任務時,如果操作系統造成的中斷太多,也會產生類似的開銷。
2>.監控內存使用情況
內存是我們遇到性能問題是首先應該關注的資源之一。如果服務器上的內存不足(RAM),系統可能由於內存交換過多而變慢。內存交換意味着系統將內存頁面傳輸到磁盤設備為其他進程釋放內存。
當檢查系統內存使用情況時,請注意以下幾點:
(1)頁面輸入和頁面輸出:
如果在內存使用情況統計信息中看到大量的頁面輸入和頁面輸出,則意味着系統正在執行過多的分頁,這涉及將頁面從內存移動到磁盤,如果可用內存不足的話。
過多的分頁可能導致抖動情況,這意味着你正在使用關鍵系統資源做內存和磁盤之間的頁面移動。
(2)換入和換出:
交換統計信息還可以指示系統當前內存分配的充足成都。
(3)活動和非活動頁面:
如果活動內存頁面太少,則可能意味着物理內存不足。
3>.監控磁盤存儲
監控磁盤涉及兩件事情。首先,檢查以確保沒有用盡空間,應用程序持續添加更多數據,因而必須不斷添加更多的存儲空間。其次,觀察磁盤性能,磁盤輸入/磁盤輸出性能較慢,是否存在瓶頸?
要查找的基本信息如下所示:
(1)檢查可用空間
使用簡單的命令,系統管理員或DBA可用檢查系統剩余的可用空間量。最好是定期檢查,在資源緊張是監控就太晚了。可用使用df和du命令檢查系統上的可用空間。
(2)讀取和寫入
讀取/寫入數據可以幫助你了解磁盤的運行有多"熱"。通過檢查讀取/寫入數據,可以了解系統是否正在處理其工作負載,或者在任何給定時間是否處理額外的I/O負載。
4>.監控帶寬
通過監測網絡帶寬使用情況,可以計算設備間數據穿度的效率。帶寬比簡單的I/O或內存使用更難測定,但收集帶寬相關統計信息非常有用。
網絡是系統的重要組成部分,如果網絡連接速度較慢,則一切都會運行緩慢。簡單的網絡統計信息(如接受和發送的字節數)可幫助我們識別網絡問題。
高網絡數據包沖突率以及過多的數據傳輸錯誤會導致傳輸瓶頸。需要使用netstat等工具來檢查網絡,看網絡是否存在瓶頸。
二.Linux系統監控工具
為了找出正在運行的進程,最常使用Linux進程命令ps。當然,為了健康系統性能,需要使用比ps命令更復雜的工具。下面介紹可用於監控系統性能的一些重要工具。
1>.監測內存使用vmstat
[root@hadoop101.yinzhengjie.com ~]# vmstat -S M 1 輸出如下圖所示,個字段說明如下: procs(進程): r: 運行隊列中進程數量 b: 等待IO的進程數量 memory(內存): swpd: 使用虛擬內存大小,我禁用了swap分區,因此你會看到虛擬內存始終為0。 free: 剩余空閑內存,即可用內存大小 buff: 用作緩沖的內存大小 cache: 用作緩存的內存大小 swap(虛擬內存我已經禁用了,因此該字段數值始終為0,我們忽略即可): si: 每秒從交換區寫到內存的大小 so: 每秒寫入交換區的內存大小 io:(磁盤I/O的情況統計信息) bi: 每秒讀取的塊數,塊大小通常是4k,即(4096bytes)。當然,若也可以自定義了文件的塊大小,這個我在之前的筆記已經分享過。 bo: 每秒寫入的塊數。 system(系統信息統計): in: 每秒中斷(interrupt)數,包括時鍾中斷。 cs: 每秒上下文切換數,單位為:counts/second。 cpu(CPU的以百分比表示): us: 用戶進程執行時間(user time) sy:
系統進程執行時間(system time) id:
空閑時間(包括IO等待時間),中央處理器的空閑時間 。以百分比表示。 wa:
等待IO時間
2>.使用meminfo查看內存使用情況和內存空閑情況
如下圖所示,檢查服務器內存使用情況的簡單方法是使用"/proc/memeinfo"命令。許多Linux工具(如top,free)看了眼使用meminfo文件中的數據作為源。
3>.使用iostat查看I/O統計信息
iostat使用程序可以提供程序上所有磁盤的輸入/輸出統計信息。 avg-cpu屬性值說明: %user: CPU處在用戶模式下的時間百分比。 %nice: CPU處在帶NICE值的用戶模式下的時間百分比。 %system: CPU處在系統模式下的時間百分比。 %iowait: CPU等待輸入輸出完成時間的百分比。若該值持續過高,則說明硬盤存在I/O瓶頸。 %steal: 管理程序維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比。 %idle: CPU空閑時間百分比。若該值持續過高,則說明CPU比較空閑。 如果%idle值高但系統響應慢時,可能是CPU等待分配內存,應加大內存容量。 如果%idle值持續低於10,表明CPU處理能力相對較低,系統中最需要解決的資源是CPU。 Divice屬性值說明: tps: 該設備每秒的傳輸次數 kB_read/s: 每秒從設備(drive expressed)讀取的數據量; kB_wrtn/s: 每秒向設備(drive expressed)寫入的數據量; kB_read: 讀取的總數據量; kB_wrtn: 寫入的總數量數據量; 溫馨提示: 如果你是最小化安裝,則可以先安裝iostat工具,以CentOS發行版本為例,可在命令行中執行以下命令"yum -y install sysstat"進行安裝即可。
4>.使用sar分析讀/寫操作
Linux sar(系統活動報告器)使用程序是一個非常強大的工具,它可以分析從磁盤到緩沖區花奴才能以及從緩沖區到磁盤的讀/寫操作。通過sar命令的各種選項,可以監視磁盤和CPU活動,以及緩沖區緩存活動。 如下圖所示,這是一個典型的sar命令的輸出,這里使用-u選項來監視服務器的CPU活動,每個1秒刷新一次,共計刷新10次。 主要看%iowait和%idle,%iowait過高表示存在I/O瓶頸,即磁盤IO無法滿足業務需求,如果%idle過低表示CPU使用率比較嚴重,需要結合內存使用等情況判斷CPU是否瓶頸。
以下是sar各字段的含義:
%user: 用戶空間的CPU使用 %nice: 改變過優先級的進程的CPU使用率 %system: 內核空間的CPU使用率 %iowait: CPU等待IO的百分比 %steal: 虛擬機的虛擬機CPU使用的CPU %idle: 空閑的CPU
5>.使用top命令監視資源使用情況
如下圖所示,top命令可以查看哪些用戶/進程使用的服務器資源最多。 CPU瓶頸抑郁識別,我們會看到非常高的處理器加載時間,例如80%或90%,甚至更高。還可以看到整個集群中的加載程序加載的時間大於50%或60%。由於涉及不當的hadoop作業,單個進程可能會占用太多的CPU時間。 在這種情況下,調整map或減少人為會降低CPU使用率。當然,切換到更快的處理器或添加更多處理器也有助於環節CPU爭用問題。 可以通過查看上下文切換和中斷來了解CPU爭用情況。Linux操作系統是一個具有多核CPU的多任務系統。操作系統會在進程切換時存儲稱為上線文的CPU狀態,從而從中斷除恢復執行。 恢復上下文稱為上下文切換。如果上下文切換次數過多,則表明CPU正忙,需花費大量時間存儲/恢復進程狀態。通常這是由於為每個節點分配太多map或減少任務造成的。 博主推薦閱讀: https://www.cnblogs.com/yinzhengjie/p/10367853.html
6>.使用dstat進行網絡監控
當在shuffle階段,reduce任務獲得map任務輸出時,hadoop會大量使用網絡。當reduce作業將結果輸出到HDFS時,網絡利用率也高。監控網絡有助於識別潛在的網絡瓶頸。 一個很好的網絡監控工具(如dstat)可以顯示網絡的工作負載,下面有一些 有用的經驗法則:
(1)如果網絡數據速率約為網絡帶寬的20%或更高,則表示網絡過載;
(2)高中斷率表示網絡流量超載,dstat工具還同時顯示網絡數據速率和中斷數量,如下圖所示。
溫馨提示:
如果你的服務器未安裝該命令,可以手動安裝,以CentOS為例,可以執行"yum -y install dstat"命令進行安裝。
三.開源的監控系統
開源的監控系統就多了去了,它們都可以監控Linux操作系統。比如Cacti,Nagios,Zabbix,Open Falcon,Prometheus,Ganglia等等。
每個開源監控系統都有自己擅長的領域,比如Cacti擅長監控網絡設備,Nagios有很好的報警功能,Zabbix有不錯的WebUI,Open Falcon可以監控數以萬計的服務器,Prometheus擅長監控容器,Ganglia擅長大數據組件的監控等等。
溫馨提示:
可以結合公司現有的應用,統一使用一個監控系統來監控所有應用。