我们目前安装了 Nagios 2.9,并且已经运行良好了几年。我想将它从旧的 Linux 服务器迁移到新的服务器上。我已经安装了 Nagios 3.1.2,并且运行良好。在将我们所有 240 多台设备迁移到新安装之前,我很好奇其他系统管理员是如何配置它的。
我听说过: - 每个主机都有自己的配置文件,其中包含相应的服务,您可以复制然后编辑文件以轻松添加新设备,并将所有类似设备放在单独的文件夹中。 - 所有类似主机都在一个配置文件中。 同一配置文件中包含或不包含所有服务。 - 所有主机和服务都在一个文件中。 然后将依赖项放在单独的文件中(我们当前的配置)
您的系统中 Nagios 配置文件是如何排列的?我想听听不同的想法,让我们的系统尽可能高效。
答案1
我最近按业务领域划分文件,然后将其分为暂存/生产,但这需要其他同事提供太多先验知识,才能找到并更改某些内容。此外,我们移动了一些服务器,我意识到拥有可以移动的每主机配置文件会很有用。此外,拥有每主机配置允许您将特定主机(或主机组)的所有监控整齐地封装在一个文件中,并轻松查看您对该主机所做的操作。最重要的是,我们有一个中央命令.cfg 文件,按每个业务领域划分,可以轻松搜索。
然而,这些都不是真正令人满意的——使用平面文件存储进行配置会让您偏爱一种特定的排序方法而不是另一种。这种配置确实受益于关系模型。我猜大多数新的监控产品都是出于这个原因从数据库中实现配置的。
现在NDO实用程序(警告:pdf) 将您的配置和事件数据放入数据库中,但据我所知,没有办法告诉 Nagios 使用该数据库作为配置源。它确实为您提供了创建除 NDOUtils 所需的表之外的表的机会,也许可以创建一个单独的 nagios_config 数据库,您可以在其中映射事物,然后编写一个解决方案脚本,从数据库中提取此信息并创建您的配置。
我将尝试使用 Puppet生成我的 Nagios 配置在不久的将来,希望它能让我解决这些问题。
答案2
我们的设置是每个主机一个配置文件,但它们都包含在一个“hosts”目录中。然后我们在 nagios 配置中使用“cfg_dir=”指定此目录,任何添加到该目录的主机都会在下次重新加载时自动获取。
答案3
我有几组相同的主机。因此,我为每种“类型”的主机都准备了一个配置文件,并在文件顶部使用主机组定义,这样每个“类型”只需要有 1 组服务定义。我还有一些独特的主机,它们有自己的配置文件,我将升级保存在每个主机/类型的单独文件中,这样我只需注释掉导入该特定文件的行即可关闭它们。
答案4
这个问题实际上取决于主机的个性。如果您可以让所有主机都达到一个不错的标准,那么使用模板真的可以创造奇迹。我个人认为它只适用于最基本的(例如,Windows 上的 Mem/Proc/Services)然后它开始变得越来越难(一台服务器有一个文件系统,需要向生产支持组发送空间大小违规警报,但它还有其他文件系统需要发送给开发支持组。顺便说一句,这台服务器有独特的驱动器,因为它是你的老板在打高尔夫和购物时买的)
我个人使用的是 Nagios 2.0 和 3.0 的组合,以及混合的主机组。我将主机分成操作系统分组配置(Windows 与 Windows、Solaris 与 Solaris、Linux 与 Linux)。然后我将核心检查分解为 core_checks.cfg(内存、处理器、基本进程检查),然后将我监控的服务分解为不同的配置文件(Oracle 数据库检查、My Sql 数据库检查、非常具体的文件系统检查、网站检查)。这样,我就可以为自己和任何后来者合理地组织配置文件。笔记我最近确实有 4400 张支票,所以对于其他人来说这可能有点过度了。
从长远来看,我有一个类似这样的结构:nagios\etc\core_checks.cfg nagios\etc\hosts\windows_servers.cfg,solaris_servers.cfg nagios\etc\services\oracle_databases.cfg,MSSQL_databases.cfg