我们目前已经安装了Nagios 2.9并且已经运行好几年了。 我想把它从旧的Linux服务器迁移到一个新的。 我已经安装了Nagios 3.1.2并运行正常。 在将所有240多台设备迁移到新安装之前,我很好奇其他SysAdmins如何configuration它。
我听说过: – 每个主机都在自己的configuration文件中提供相应的服务,您可以复制然后编辑该文件,轻松添加新设备,并将所有类似设备的文件夹放在不同的文件夹中。 – 一个configuration文件中的所有主机。 有或没有在同一个configuration文件中的所有服务。 – 一个文件中的所有主机和服务。 然后依赖关系放在一个单独的文件(我们当前的configuration)
Nagiosconfiguration文件如何在您的系统中传播? 我想得到不同的想法,使我们的最有效率,可以。
我最近把文件按业务领域划分,然后划分到生产阶段,但是这需要太多的其他同事的先前的知识才能find一些东西并改变它。 此外,我们移动了一些服务器,我意识到如果有可以移动的config-per-host文件也是有用的。 此外,通过config-per-host,您可以将某个特定主机(或主机组)的所有监视整齐地封装在一个文件中,并轻松查看您为该主机执行的操作。 最重要的是,我们有一个中央的commands.cfg文件,按每个可以轻松search的业务区域划分。
但是,这些都不是真正令人满意的 – 使用平面文件存储进行configuration会使您偏好某种特定的sorting方法。 这种configuration真的从关系模型中受益。 我猜,大多数新的监控产品都是基于这个原因实现了数据库的configuration。
目前NDOUtils (警告:pdf)可以将您的configuration和事件数据存入数据库,但据我所知,无法告诉Nagios使用该数据库作为configuration源。 它的确提供了创build除了NDOUtils所需的表之外的表的机会,也许创build一个单独的nagios_config数据库,在这个数据库中你可以映射出来,然后编写一个解决scheme,将这些信息从数据库中提取出来并创build你的configuration。
我将尝试在不久的将来使用Puppet 生成我的Nagiosconfiguration ,希望它能让我解决这些问题。
我们的设置是每个主机一个configuration文件,但它们都包含在一个“主机”目录中。 然后我们在nagiosconfiguration文件中用“cfg_dir =”指定这个目录,任何添加到这个目录的主机都会在下一次重新加载时被自动获取。
我有几组相同的主机。 所以我有一个每个“types”主机的configuration文件,并在文件的顶部使用一个主机组定义,所以我只需要有一组“服务定义”每个“types”。 我也有一些主机是独一无二的,它们拥有自己的configuration文件,并且每个主机/types都保存在一个单独的文件中,这样我就可以通过注释掉导入特定文件的行来closures它们。
在我们的例子中,使用m4创buildNagiosconfiguration文件,并使用m4macros文件生成configuration文件。 这增加了跨多个主机轻松复制即使是复杂configuration的能力,也可以改变configuration,并在所有configuration中进行configuration。
实用程序make还用于根据需要重新启动或重新configurationNagios,并在生成后检查configuration。
在这种情况下,特定操作系统的所有主机都在一个文件中,而“被动”configuration全部在另一个文件中 – 全部在一个目录中。 另一个目录包含服务和组(再次使用m4macros)。
这个问题真的取决于你的主机的个性。 如果你能让我们所有的主机达到一个很好的标准,那么你真的可以用模板来做一些魔术。 就我个人而言,我发现它仅适用于非常基础的(例如,Windows上的Mem / Proc / Services)然后开始变得越来越困难(一台服务器有一个文件系统需要发送警报给生产支持组, ,但也有其他的文件系统需要去开发支持小组,顺便说一句,这台服务器有独特的驱动器,因为它是由你的老板买高尔夫球和购物)
我个人使用了Nagios 2.0和3.0的组合,以及主机组合。 我把主机分成操作系统分组的configuration(windows与windows,Solaris与Solaris,Linux与Linux)。 然后,我将核心检查分解为一个core_checks.cfg(内存,处理器,重要进程检查),然后将我监视的服务分解成不同的configuration文件(Oracle数据库检查,My Sql Datbase检查,非常特定的文件系统检查,网站检查)。 这让我有我的configuration文件为我自己和任何人跟随我的逻辑组织。 注意我现在有4400个支票,所以这对其他人来说可能是过分的。
从长远来看,我有一个像这样的结构:nagios \ etc \ core_checks.cfg nagios \ etc \ hosts \ windows_servers.cfg,solaris_servers.cfg nagios \ etc \ services \ oracle_databases.cfg,MSSQL_databases.cfg
被监控的服务器使用一个configuration文件的方法是简单和灵活的处理。
在我看来,最大的不同在于如何实现你的nagios模板。 可以很容易地更改一个选项,只影响所有服务器仍在使用的文件(模板)中的所有服务器,或者需要在很多configuration文件中进行更改。
在一个大的设置中,你会看到使用或不使用模板的文件大小的差异,没有模板,你可以保持从Kb与模板轻松Mb影响nagios的启动时间。