nagios的快速启动选项
一、介绍
只有很少几件事可以减少Nagios的启动或重启总时间。加速启动方法包括有移除些负担还包括加快配置文件处理过程。
利用这些技术在如下一种或几种情况时特别有效:
大型安装配置
复杂地配置(过度地利用模板特性)
需要进行频繁重启动的安装模式
二、背景
每次Nagios启动和重启时,在它着手进行监控工作之前必须要处理配置文件。启动过程中的配置处理包括如下几步:
读入配置文件
解析模板定义
重粘连("Recombobulating")对象(是我想到的应做各种工作)
复制对象定义
继承对象属性
对象定义排序
验证对象关联关系的完整性
验证回路
和其他...
当有很大的或是很复杂的配置文件要处理时有几步非常消耗时间的。有没有加快这些的办法?当然有!
三、评估启动时间
在做让启动速度更快的事情之前,需要看看可能性有多少和是否有必要涉足此事。这个比较容易-只是用-s命令行开关启动Nagios以取得计时和调度信息。
下面是个输出样例(做过精减,只是显示了有关部分),在这个例子中,假定Nagios配置为对25个主机和超过10,000个服务进行监控。
- /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,看看发生了什么。先看汇总信息,大概有11.6秒用于处理配置文件有56秒来验证配置。这意味着每次用这个配置启动或重启Nagios时,它大约会有68秒来做启动事项而不会做任何监控的事情!如果是在定制配置Nagios过程中也是不可容忍的。
那么怎么办?看一下输出内容,如果运用了优化选项,Nagios将可以在配置读取过程节省大约8.4秒而在验证过程可节省63秒。
哇!从68秒到只有5秒?!是的!看看下面是怎么做到的。
四、预缓存对象配置
Nagios可在解析配置文件过程中做些加速,特别是当配置中使用了模板来做继承等的时候。为降低Nagios解析配置文件的处理时间可用Nagios预处理与预缓存配置文件的功能。
当用-p命令参数来运行Nagios时,Nagios将读入配置文件,处理后将配置结果写入预缓存文件(由主配置文件中precached_object_file域指定文件位置)。该预缓存配置文件将包含了预处理后的信息将使Nagios处理配置文件更容易和快捷。必须把-p参数选项与-v或-s命令参数一起使用,如下例。注意要做预缓存配置文件之前配置应是已被验证过的。
- /usr/local/nagios/bin/nagios -pv /usr/local/nagios/etc/nagios.cfg
预缓存配置文件有大小明显地比原有配置文件大。这是正常的由设计初衷决定的。
一旦预缓存对象配置文件创建,可以启动Nagios时带上-u命令行选项以让它使用预缓存配置文件而不是配置文件本身。
- /usr/local/nagios/bin/nagios -ud /usr/local/nagios/etc/nagios.cfg
重要:如果更改了配置文件,必须在Nagios重启动前要重新验证和重建预缓存配置文件。如果没有重构建预缓存配置文件,Nagios将使用旧配置运行因为是由旧配置生成的预缓存文件,而不是用新的原始配置文件。
五、跳过回路检测
第二步(也是最耗时)部分是对配置中的回路进行检测。在上面例子中这一步几乎用去了1分钟来验证配置验证。
什么时回路检测和为什么要做这么长时间?回路检测逻辑是为了确保在你的主机、主机依赖、服务和服务依赖等对象之间不存在任何的循环路径。如果在配置中有循环路径,Nagios将会因死锁而停止。用时较长原因是由于没有使用较高效的算法。欢迎提供更高效发现回路的算法。提示:这意味着EMail给我有关Nagios论文的计算机科学系研究生将有机会得到些回赠代码。:-)
如果你想在Nagios为启动时跳过回路检测,可以在命令行回加上-x参数,象这样:
- /usr/local/nagios/bin/nagios -xd /usr/local/nagios/etc/nagios.cfg
重要:当要在启动和重启前跳过回路检测之前,验证配置文件的正确性是非常非常重要的!没有这么做将有可能导致Nagios逻辑上的死锁。你已被我提醒过了啊!
六、 联合起来使用
按照下面步骤将会使用预缓存配置文件并且跳过回路检测以充分加速启动。
1、验证配置文件并生成预缓存配置文件,用如下命令:
- /usr/local/nagios/bin/nagios -vp /usr/local/nagios/etc/nagios.cfg
2、如果Nagios正在运行,停掉它;
3、启动Nagios,让其使用预缓存配置文件而且跳过回路检测:
- /usr/local/nagios/bin/nagios -uxd /usr/local/nagios/etc/nagios.cfg
4、当更改了原始配置文件时,需要重启动Nagios并修改现有内容,重新回到步骤1去验证配置并重构预缓存配置文件。一旦做好了,就可以通过Web接口来重启Nagios或是在系统中发个SIGHUP信号,如果没有重构预缓存配置文件,Nagios将用旧配置运行,因为它首先会读入缓存配置文件而不是源配置文件;
5、就这么多!祝你可以加快启动过程。OK,nagios的快速启动选项就介绍到这里了。