nagios 大规模自动化

nagios 大规模自动化

我想知道您是否有关于如何大规模设置 nagios 的经验或想法。

以前我们使用nagios和nagiosql进行手动设置,对于一些服务器来说它相当舒服。

最近服务器数量发生了变化,使用 nagiosql 进行手动配置变得不方便。我们使用 chef 来启动新实例,我想知道是否有将 chef 和 nagios 一起使用的良好做法。作为一种选择,我们可以只使用 nagios,并在每次启动新实例时重写 nagios 的配置文件(基于服务器角色)。

例如,场景可能是这样的,启动新的mysql服务器后,有一个专门的配方用于重写nagios设置文件。配方可以从chef数据包中获取有关每个服务器的所有数据,并根据chef中的角色构建设置。

答案1

在过去 18 个月中,我使用 Chef 实施了三种略有不同的 Nagios 监控解决方案。它们都基于 Chef 的模板资源,用于使用 ERB 语法生成配置文件,并且效果非常好。您有一个 Ruby 数组或主机和服务的哈希值,并且会生成 Nagios 配置文件。测试和调试都非常简单。

  1. 完全基于数据包的配置。在这种情况下,有一个nagios_hosts和一个nagios_services数据包,每个主机都有一个密钥,用于指示运行哪些服务检查,例如check_loadcheck_disk此设置可以快速启动并且运行良好,但如果删除主机或添加新主机,则必须有人在场更新数据包。实际上,很容易忘记这一点,事情可能会过时,从而导致麻烦。
  2. Chef 基于属性的配置。在这里,我使用 Chef REST API 查询一个或多个 Chef 服务器,以下拉节点列表并根据它们分配的角色为它们分配服务检查。依赖 Chef 意味着很难监控非 Chef 系统,例如设备、网络设备或因某种原因不运行 Chef 的节点。Chef 最终会通过网络为大量节点发送大量 JSON 数据,处理所有这些数据会在 Chef 服务器以及 Nagios 服务器生成配置文件时增加负载。
  3. Rails 应用程序生成 Nagios 配置文件。我最终通过将 Nagios 配置信息存储在数据库中并让 Rails 应用程序生成配置文件来打破 Chef 依赖关系。每个 Nagios 服务器都会发出 REST 请求并下载使用 ERB 和 MySQL 数据库生成的配置文件。要实现这一点需要做很多工作,但到目前为止,它在监控 Chef 和非 Chef 节点方面效果很好。

因此,在经历了所有这些之后,我可能会建议对小型(数十到数百)节点使用类似选项 2 的方法。不过我会尽量保持简单。我使用 Chef 的属性系统来定义和覆盖基于角色的服务检查阈值,虽然它可以工作,但它太复杂了,食谱最终变成了一团难以维护的混乱。

祝你好运!

相关内容