nagios的快速啟動選項
nagios的快速啟動選項
一、介紹
只有很少幾件事可以減少Nagios的啟動或重啟總時間。加速啟動方法包括有移除些負(fù)擔(dān)還包括加快配置文件處理過程。
利用這些技術(shù)在如下一種或幾種情況時特別有效:
大型安裝配置
復(fù)雜地配置(過度地利用模板特性)
需要進(jìn)行頻繁重啟動的安裝模式
二、背景
每次Nagios啟動和重啟時,在它著手進(jìn)行監(jiān)控工作之前必須要處理配置文件。啟動過程中的配置處理包括如下幾步:
讀入配置文件
解析模板定義
重粘連("Recombobulating")對象(是我想到的應(yīng)做各種工作)
復(fù)制對象定義
繼承對象屬性
對象定義排序
驗證對象關(guān)聯(lián)關(guān)系的完整性
驗證回路
和其他...
當(dāng)有很大的或是很復(fù)雜的配置文件要處理時有幾步非常消耗時間的。有沒有加快這些的辦法?當(dāng)然有!
三、評估啟動時間
在做讓啟動速度更快的事情之前,需要看看可能性有多少和是否有必要涉足此事。這個比較容易-只是用-s命令行開關(guān)啟動Nagios以取得計時和調(diào)度信息。
下面是個輸出樣例(做過精減,只是顯示了有關(guān)部分),在這個例子中,假定Nagios配置為對25個主機(jī)和超過10,000個服務(wù)進(jìn)行監(jiān)控。
- /usr/local/nagios/bin/nagios -s /usr/local/nagios/etc/nagios.cfg
- Nagios 3.0-prealpha
- Copyright (c) 1999-2007 Ethan Galstad (http://www.nagios.org)
- Last Modified: 01-27-2007
- License: GPL
- Timing information on object configuration processing is listed
- below. You can use this information to see if precaching your
- object configuration would be useful.
- Object Config Source: Config files (uncached)
- OBJECT CONFIG PROCESSING TIMES (* = Potential for precache savings with -u option)
- ----------------------------------
- Read: 0.486780 sec
- Resolve: 0.004106 sec *
- Recomb Contactgroups: 0.000077 sec *
- Recomb Hostgroups: 0.000172 sec *
- Dup Services: 0.028801 sec *
- Recomb Servicegroups: 0.010358 sec *
- Duplicate: 5.666932 sec *
- Inherit: 0.003770 sec *
- Recomb Contacts: 0.030085 sec *
- Sort: 2.648863 sec *
- Register: 2.654628 sec
- Free: 0.021347 sec
- ============
- TOTAL: 11.555925 sec * = 8.393170 sec (72.63%) estimated savings
- Timing information on configuration verification is listed below.
- CONFIG VERIFICATION TIMES (* = Potential for speedup with -x option)
- ----------------------------------
- Object Relationships: 1.400807 sec
- Circular Paths: 54.676622 sec *
- Misc: 0.006924 sec
- ============
- TOTAL: 56.084353 sec * = 54.676622 sec (97.5%) estimated savings
OK,看看發(fā)生了什么。先看匯總信息,大概有11.6秒用于處理配置文件有56秒來驗證配置。這意味著每次用這個配置啟動或重啟Nagios時,它大約會有68秒來做啟動事項而不會做任何監(jiān)控的事情!如果是在定制配置Nagios過程中也是不可容忍的。
那么怎么辦?看一下輸出內(nèi)容,如果運用了優(yōu)化選項,Nagios將可以在配置讀取過程節(jié)省大約8.4秒而在驗證過程可節(jié)省63秒。
哇!從68秒到只有5秒?!是的!看看下面是怎么做到的。
四、預(yù)緩存對象配置
Nagios可在解析配置文件過程中做些加速,特別是當(dāng)配置中使用了模板來做繼承等的時候。為降低Nagios解析配置文件的處理時間可用Nagios預(yù)處理與預(yù)緩存配置文件的功能。
當(dāng)用-p命令參數(shù)來運行Nagios時,Nagios將讀入配置文件,處理后將配置結(jié)果寫入預(yù)緩存文件(由主配置文件中precached_object_file域指定文件位置)。該預(yù)緩存配置文件將包含了預(yù)處理后的信息將使Nagios處理配置文件更容易和快捷。必須把-p參數(shù)選項與-v或-s命令參數(shù)一起使用,如下例。注意要做預(yù)緩存配置文件之前配置應(yīng)是已被驗證過的。
- /usr/local/nagios/bin/nagios -pv /usr/local/nagios/etc/nagios.cfg
預(yù)緩存配置文件有大小明顯地比原有配置文件大。這是正常的由設(shè)計初衷決定的。

一旦預(yù)緩存對象配置文件創(chuàng)建,可以啟動Nagios時帶上-u命令行選項以讓它使用預(yù)緩存配置文件而不是配置文件本身。
- /usr/local/nagios/bin/nagios -ud /usr/local/nagios/etc/nagios.cfg
重要:如果更改了配置文件,必須在Nagios重啟動前要重新驗證和重建預(yù)緩存配置文件。如果沒有重構(gòu)建預(yù)緩存配置文件,Nagios將使用舊配置運行因為是由舊配置生成的預(yù)緩存文件,而不是用新的原始配置文件。

五、跳過回路檢測
第二步(也是最耗時)部分是對配置中的回路進(jìn)行檢測。在上面例子中這一步幾乎用去了1分鐘來驗證配置驗證。
什么時回路檢測和為什么要做這么長時間?回路檢測邏輯是為了確保在你的主機(jī)、主機(jī)依賴、服務(wù)和服務(wù)依賴等對象之間不存在任何的循環(huán)路徑。如果在配置中有循環(huán)路徑,Nagios將會因死鎖而停止。用時較長原因是由于沒有使用較高效的算法。歡迎提供更高效發(fā)現(xiàn)回路的算法。提示:這意味著EMail給我有關(guān)Nagios論文的計算機(jī)科學(xué)系研究生將有機(jī)會得到些回贈代碼。:-)
如果你想在Nagios為啟動時跳過回路檢測,可以在命令行回加上-x參數(shù),象這樣:
- /usr/local/nagios/bin/nagios -xd /usr/local/nagios/etc/nagios.cfg
重要:當(dāng)要在啟動和重啟前跳過回路檢測之前,驗證配置文件的正確性是非常非常重要的!沒有這么做將有可能導(dǎo)致Nagios邏輯上的死鎖。你已被我提醒過了啊!
六、 聯(lián)合起來使用
按照下面步驟將會使用預(yù)緩存配置文件并且跳過回路檢測以充分加速啟動。
1、驗證配置文件并生成預(yù)緩存配置文件,用如下命令:
- /usr/local/nagios/bin/nagios -vp /usr/local/nagios/etc/nagios.cfg
2、如果Nagios正在運行,停掉它;
3、啟動Nagios,讓其使用預(yù)緩存配置文件而且跳過回路檢測:
- /usr/local/nagios/bin/nagios -uxd /usr/local/nagios/etc/nagios.cfg
4、當(dāng)更改了原始配置文件時,需要重啟動Nagios并修改現(xiàn)有內(nèi)容,重新回到步驟1去驗證配置并重構(gòu)預(yù)緩存配置文件。一旦做好了,就可以通過Web接口來重啟Nagios或是在系統(tǒng)中發(fā)個SIGHUP信號,如果沒有重構(gòu)預(yù)緩存配置文件,Nagios將用舊配置運行,因為它首先會讀入緩存配置文件而不是源配置文件;
5、就這么多!祝你可以加快啟動過程。OK,nagios的快速啟動選項就介紹到這里了。