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