Nagios 服务器最佳实践?

Mic*_*ega 10 linux nagios network-monitoring best-practices

我运行一个中型 Nagios 服务器。它目前监控大约 40 台服务器和 180 项服务,并且每天都在增长。

我从以非常深奥的方式配置的旧 Nagios 设置迁移,迫使我从头开始重新配置所有内容。

现在服务器正在运行并且可以满足我们大部分需要,我正在考虑让它更具可扩展性;当前每个主机/etc/nagios/hosts/在 . 这显然不是最优的,但也没有将我的所有配置混淆到数百个不同的文件中。

所以我的问题是:对于任何有经验的 Nagios 管理员来说,在使配置过于复杂的情况下使用主机组/服务组的最佳方法是什么?

asc*_*hil 13

主机组和模板。

模板让您可以为您的主机和服务定义类,例如“普通服务”、“关键服务”、“低优先级主机”。如果您有多个具有不同职责的团队,它们也可以作为划分职责的有用方法,因此您可以拥有一个“linux 主机”模板和一个“windows 主机”模板,每个模板都定义了适当的联系信息。

您可以在单个资源上使用多个模板,因此您可以组合适当的正交模板。例如,你可以有

host foo {
    use windows-host,normal-priority-host
    ...
}
Run Code Online (Sandbox Code Playgroud)

这将获取 Windows 团队的联系信息(和升级)以及“正常”主机的轮询率和阈值。

主机组使您可以将针对主机子集的所有检查组合在一起。有像“baseline-linux-hosts”这样的东西来检查负载、磁盘空间、ssh能力,以及你监控的每台主机上应该有的任何其他东西。添加像“https-servers”这样的组,检查 HTTP 连接、HTTPS 连接和 SSL 证书到期日期;“文件服务器”,可检查 NFS 和 SMB 可访问性,并且可能进行更积极的磁盘检查;或“虚拟机”,检查 VM 可访问性工具是否正常运行。

将每个主机和主机组放在自己的文件中。该文件应首先包含主机或主机组定义,然后是适用于它的服务的定义。

如果您cfg_dirnagios.cfg文件中使用该指令,Nagios 将在该目录中递归搜索。利用那个。对于 的设置cfg_dir=/etc/nagios/conf.d,您可以拥有如下所示的目录树:

  • /etc/nagios/conf.d/
    • 命令.d/
      • http.cfg
      • 配置文件
      • 配置文件
      • 配置文件
    • 主机.d/
      • 主机1.cfg
      • 主机2.cfg
      • 主机3.cfg
    • 主机组.d/
      • 主机组1.cfg
      • 主机组2.cfg

我倾向于为每个资源类型(命令、联系人组、联系人、升级、主机组、主机、服务组、时间段)创建一个目录,除了服务,这些资源与使用它们的主机或主机组分组在一起。

精确的结构可以根据您的组织需求而有所不同。在过去的工作中,我hosts.d为每个不同的站点使用了子目录。在我目前的工作中,大部分 Nagios 主机定义由 Puppet 管理,因此 Puppet 管理的主机有一个目录,手动管理的主机有一个单独的目录。

请注意,上面还将命令分解为多个文件,通常是通过协议。因此,该nrpe.cfg文件将有命令check_nrpecheck_nrpe_1arg,虽然http.cfg可能有check_httpcheck_http_portcheck_httpscheck_https_port,和check_https_cert1

我通常没有大量的模板,所以我通常只有一个hosts.d/templates.cfg文件和一个services.d/templates.cfg文件。如果您更频繁地使用它们,它们可以进入templates.d目录中适当命名的文件中。

1我喜欢也有一个check_http_blindly命令,基本上是check_http -H $HOSTADDRESS$ -I $HOSTADDRESS$ -e HTTP/1.; 即使收到 403 响应代码,它也会返回 OK。


Kei*_*ith 6

广泛使用服务和主机组以及模板。创建主机组,并将服务分配给主机组。将服务组用于 Web UI 中的依赖项、升级和逻辑分组。

如果您有所有内容的组,添加新主机只需 3 或 4 行:名称、地址、模板和(可选)主机组。一切都可以模板化。

请务必阅读有关继承的文档,以及节省时间的技巧页面。多重继承可能会变得棘手,但如果使用得当,它可以节省大量时间。