在大规模的nagios自动化

我想知道你是否有经验或有关如何大规模build立nagios的任何想法。

以前我们使用nagios和nagiosql进行手动设置,对于less数几台服务器来说,这是相当舒服的。

最近服务器的数量已经改变,由nagiosql手动configuration变得不舒服。 我们使用厨师开始新的实例,我想知道是否有好的做法,一起使用厨师和nagios。 作为一种select,我们每次启动新实例时,只能使用nagios并重写nagios的configuration文件(基于服务器angular色)。

例如,情况可能是这样的,已经开始新的MySQL服务器,有一个专门的改写nagios设置文件的配方。 食谱可以从每个服务器获取厨师数据包的所有数据,并根据厨师angular色构build设置。

在过去的18个月中,我使用Chef实现了三种略有不同的Nagios监控解决scheme。 它们都是基于Chef的模板资源,使用ERB语法生成configuration文件,这一点非常好。 您有一个Ruby数组或主机和服务的哈希,并生成Nagiosconfiguration文件。 testing和debugging相当简单。

  1. 完全基于数据包的configuration 。 在这种情况下,有一个nagios_hosts和一个nagios_services数据包,每个主机有一个关键字,说明哪些服务检查得到运行,例如check_loadcheck_disk 。 这个设置很快就可以开始,并且工作得很好,但是如果主机被删除或者添加了新的,那么必须有人来更新数据包。 在实践中很容易忘记这一点,事情可能会过时,这可能会导致麻烦。
  2. 基于厨师属性的configuration 。 在这里,我使用Chef REST API来查询一个或多个Chef服务器来下拉节点列表,并根据分配的angular色为其分配服务检查。 对Chef的依赖意味着很难监控非Chef系统,例如设备,networking设备或者不pipe任何原因运行Chef的节点。 厨师最终通过networking为大量节点发送大量的JSON数据,并处理所有这些数据在生成configuration文件时将负载在Chef服务器和Nagios服务器上。
  3. Rails应用程序生成Nagiosconfiguration文件 。 我最终通过在数据库中存储Nagiosconfiguration信息来打破Chef依赖关系,并让Rails应用程序生成configuration文件。 每个Nagios服务器发出REST请求并下载使用ERB和MySQL数据库生成的configuration文件。 为了实现这个目标,我们做了相当多的工作,但是到目前为止,这对于监控厨师和非厨师节点非常有效。

所以在经历了所有这些之后,我可能会推荐使用类似于选项#2的方法来处理小(几十到几百个)节点。 我会尽量保持简单。 我使用了Chef的属性系统来定义和覆盖基于angular色的服务检查的阈值,并且它的工作方式太复杂了,而且食谱已经变成了难以维系的混乱。

祝你好运!