nagios的快速啟動(dòng)選項(xiàng)
nagios的快速啟動(dòng)選項(xiàng)
一、介紹
只有很少幾件事可以減少Nagios的啟動(dòng)或重啟總時(shí)間。加速啟動(dòng)方法包括有移除些負(fù)擔(dān)還包括加快配置文件處理過(guò)程。
利用這些技術(shù)在如下一種或幾種情況時(shí)特別有效:
大型安裝配置
復(fù)雜地配置(過(guò)度地利用模板特性)
需要進(jìn)行頻繁重啟動(dòng)的安裝模式
二、背景
每次Nagios啟動(dòng)和重啟時(shí),在它著手進(jìn)行監(jiān)控工作之前必須要處理配置文件。啟動(dòng)過(guò)程中的配置處理包括如下幾步:
讀入配置文件
解析模板定義
重粘連("Recombobulating")對(duì)象(是我想到的應(yīng)做各種工作)
復(fù)制對(duì)象定義
繼承對(duì)象屬性
對(duì)象定義排序
驗(yàn)證對(duì)象關(guān)聯(lián)關(guān)系的完整性
驗(yàn)證回路
和其他...
當(dāng)有很大的或是很復(fù)雜的配置文件要處理時(shí)有幾步非常消耗時(shí)間的。有沒有加快這些的辦法?當(dāng)然有!
三、評(píng)估啟動(dòng)時(shí)間
在做讓啟動(dòng)速度更快的事情之前,需要看看可能性有多少和是否有必要涉足此事。這個(gè)比較容易-只是用-s命令行開關(guān)啟動(dòng)Nagios以取得計(jì)時(shí)和調(diào)度信息。
下面是個(gè)輸出樣例(做過(guò)精減,只是顯示了有關(guān)部分),在這個(gè)例子中,假定Nagios配置為對(duì)25個(gè)主機(jī)和超過(guò)10,000個(gè)服務(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秒來(lái)驗(yàn)證配置。這意味著每次用這個(gè)配置啟動(dòng)或重啟Nagios時(shí),它大約會(huì)有68秒來(lái)做啟動(dòng)事項(xiàng)而不會(huì)做任何監(jiān)控的事情!如果是在定制配置Nagios過(guò)程中也是不可容忍的。
那么怎么辦?看一下輸出內(nèi)容,如果運(yùn)用了優(yōu)化選項(xiàng),Nagios將可以在配置讀取過(guò)程節(jié)省大約8.4秒而在驗(yàn)證過(guò)程可節(jié)省63秒。
哇!從68秒到只有5秒?!是的!看看下面是怎么做到的。
四、預(yù)緩存對(duì)象配置
Nagios可在解析配置文件過(guò)程中做些加速,特別是當(dāng)配置中使用了模板來(lái)做繼承等的時(shí)候。為降低Nagios解析配置文件的處理時(shí)間可用Nagios預(yù)處理與預(yù)緩存配置文件的功能。
當(dāng)用-p命令參數(shù)來(lái)運(yùn)行Nagios時(shí),Nagios將讀入配置文件,處理后將配置結(jié)果寫入預(yù)緩存文件(由主配置文件中precached_object_file域指定文件位置)。該預(yù)緩存配置文件將包含了預(yù)處理后的信息將使Nagios處理配置文件更容易和快捷。必須把-p參數(shù)選項(xiàng)與-v或-s命令參數(shù)一起使用,如下例。注意要做預(yù)緩存配置文件之前配置應(yīng)是已被驗(yàn)證過(guò)的。
- /usr/local/nagios/bin/nagios -pv /usr/local/nagios/etc/nagios.cfg
預(yù)緩存配置文件有大小明顯地比原有配置文件大。這是正常的由設(shè)計(jì)初衷決定的。

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

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