聊聊操作系統監控利器OSW
?國產數據庫/開源數據庫監控中,操作系統監控是十分重要的一方面。最近遇到幾次用戶的數據庫問題,最后都是定位到了操作系統方面的性能問題。D-SMART在針對Oracle數據庫運維的時候,我們提供了一個工具,用于對OSW的數據進行分析。不過如果我們面對的不是Oracle數據庫,那么該用什么工具呢?前些時候我做了大量的搜索,居然沒有找到一款能夠完全媲美OSW的操作系統監控工具。功能最為相近的是nmon,如果僅僅是監控linux操作系統,那么nmon的能力接近于OSW。不過有一個十分致命的問題就是,當nmon做后臺采集的時候,無法使用-D -d參數采集磁盤IO的詳細情況,僅僅能采集到磁盤的busy%數據。對于早期的計算機系統而言,busy%可以反映出磁盤的繁忙程度,而對于現在的磁盤系統來說,100% busy并不一定意味著性能問題。而分析診斷數據庫問題的時候,如果沒有磁盤IO的詳細信息,定位問題的效果就差了不少。
國產數據庫的可觀測性能力本身就偏弱,很多問題分析必須結合OS的監控數據,才能做的比較徹底,特別是需要做故障定位的時候,更是離不開OS的監控數據。我也希望國產數據庫廠商能夠自研一個OS性能監控數據的自動采集工具。不過目前我們還無法從國產數據庫廠商處獲得這樣的工具。國產數據庫服務器,也只能安裝一套OSW才行啊,這也是我們給國產數據庫用戶提出的一個建議。
OSW(OSWatcher)是Oracle公司研發的一個免費軟件,一個通用的操作系統性能監控工具,它可以用于監控任何支持的操作系統。作為一個ORACLE DBA,我在差不多二十年前就開始在性能優化項目中使用OSW。從Oracle 11.2.0.4開始,用戶不需要自己下載安裝OSW,因為它已經隨著Oracle數據庫自動安裝在你的數據庫服務器上了。我們習慣于在Oracle數據庫服務器上用OSW來監控操作系統,不過實際上Oracle的免費使用許可證允許你在非Oracle數據庫服務器上使用OSW來監控系統的性能,例如CPU利用率、內存使用情況、磁盤I/O等。Oracle公司的使用協議不會對使用OSW進行操作系統性能監控和分析的用戶施加任何限制。OSW可以在任何操作系統上自由使用,并且可以免費下載和安裝。
使用OSW來監控非Oracle數據庫服務器的性能是完全合法和可行的,但是需要注意,您需要遵守操作系統和其他軟件的許可協議和使用規定。
根據Oracle公司的使用協議,其他公司可以在其商業環境中使用OSW(OSWatcher)軟件來監控操作系統性能,但需要遵守以下幾個要求:
1、保留版權聲明:必須在使用、分發或修改OSW軟件時保留Oracle公司的版權聲明。
2、不允許進行修改:不允許修改OSW的代碼,除非獲得Oracle公司的書面許可。
3、非獨占使用權:不允許將OSW軟件獨占使用或分發給第三方,除非獲得Oracle公司的書面許可。
4、免責聲明:OSW軟件是按“原樣”提供的,沒有任何明示或暗示的擔保或條件。使用者必須自行承擔風險。
從上面的使用協議聲明可以看出,用戶可以下載OSW工具,并安裝在一臺運行國產達夢數據庫的服務器上,用于OS監控數據的采集,這是完全合法的。不過Oracle并不允許在未經授權的時候,第三方的軟件中直接分發OSW,因此OSW無法隨著D-SMART發行版或者數據庫廠商的數據庫產品分發。Nmon在這方面要比OSW寬泛,nmon允許隨著第三方軟件自由分發。
OSWatcher是一種跨平臺的數據收集工具,可以用于監控和診斷Linux、UNIX和Windows操作系統。它可以收集系統資源使用情況的數據,例如CPU利用率、內存使用情況、網絡使用情況等。這些數據可以幫助管理員分析系統性能問題,并作出優化和調整的決策。下面是OSW可以采集的一些更具體的指標信息:
lCPU 使用率:可以采集所有 CPU 核心的使用率,包括用戶空間、內核空間、空閑等各個狀態的使用率。
lCPU 負載:可以采集 CPU 負載的平均值以及每個 CPU 核心的負載情況。
l內存使用情況:可以采集內存總量、空閑內存、緩存和緩沖區、交換空間等各個方面的情況。
l磁盤 I/O 情況:可以采集每個設備的讀寫帶寬、讀寫 IOPS、平均響應時間、讀寫字節數等各種指標信息。
l網絡 I/O 情況:可以采集每個網絡接口的帶寬、數據包傳輸率、傳輸錯誤、丟包等情況。
l進程和線程信息:可以采集進程號、進程狀態、虛擬內存使用量、RSS、CPU 和內存使用情況等各種信息。
l文件系統使用情況:可以采集文件系統容量、已用容量、可用容量、磁盤空間使用率等信息。
l資源利用率:可以采集系統各種資源的利用率,例如 CPU、內存、磁盤、網絡等等。
l數據庫性能:可以采集數據庫的各種性能指標,例如會話數量、等待事件、I/O 性能等等。
OSW采集的信息十分豐富,包括網卡的信息、IOSTAT、meminfo、mpstat、netstat、進程信息、slabinfo、vmstat等信息。都是數據庫系統出現故障時,OS層面容易出問題或者需要關注的方面。這是Oracle公司在售后服務中積累下來的經驗。國產數據庫廠商完全可以模仿這些內容開發一個工具。
OSW的默認采集周期是30秒鐘,采集粒度對于大多數問題分析來說是足夠的。OSW原汁原味的保留了OS相關采集命令輸出的結果,對于事后分析十分有價值。
二十多年的優化生涯中多次因為用戶安裝了OSW而在黑暗的探索中找到了方向,因此我已經習慣了用OSW的數據而不是用不一定靠譜的推測去分析數據庫異常與操作系統狀態的關聯性,有了這一塊拼圖,才讓整個故障分析變得真正的無懈可擊。希望有興趣的朋友可以在非Oracle數據庫上體驗一下OSW,也建議國產數據庫用戶也在自己的服務器上裝上一套OSW,沒準什么時候就用得上呢。?