在 Icinga(Nagios)中,如何配置具有多个 IP 的主机?

在 Icinga(Nagios)中,如何配置具有多个 IP 的主机?

我正在设置 Icinga(Nagios 分支),我有一些带有多个接口的机器。有些服务只监听其中一个,为了正确检查它们,我想知道是否可以在 Icinga 中为单个主机配置多个 IP 地址。

这是一个简单的例子:

远程服务器:

  • eth0:(1.2.3.4公网 IP)
  • eth1:(10.1.2.3私有IP,安全隧道)
  • Apache 正在监听1.2.3.4:80. (仅限公众)
  • OpenSSH 正在监听10.1.2.3:22。(仅限内部网络)
  • Postfix SMTP 监听0.0.0.0:25(所有接口)

Icinga 服务器:

  • eth0:(10.2.3.4私有IP,互联网访问)

现在如果我定义一个主机:

define host {
        use                     generic-host
        host_name               server1
        alias                   server1.gertvandijk.net
        address                 10.1.2.3
        }

这不会正确检查 HTTP 状态。并定义一个附加主机:

define host {
        use                     generic-host
        host_name               server1-public
        alias                   server1.gertvandijk.net
        address                 1.2.3.4
        }

将检查所有内容,但会显示为两个独立主机。现在我想“聚合”这两个主机以显示为单个主机,同时提供一个简单的配置来检查其正确地址上的服务。

对此问题最优雅、节省配置行数的解决方案是什么?我读到过几个可用于解决此问题的插件,但我不知道当前解决此问题的方法是什么。解决方案可以追溯到 2003 年,但我运行的是 Icinga 1.7.1,已经具备该address6选项,但这会触发主机名上的 IPv6 解析...

理想情况下,我希望将 Icinga 配置得足够智能,以便知道正在运行的 Postfix 实例10.1.2.3:25是相同的1.2.3.4:25,因此不会触发两个警报。

我猜想这个问题肯定之前已经解决过了,系统管理员现在已经设置好了。请分享您的解决方案。谢谢!:)

答案1

您可以定义一个自定义对象变量,类似这样:

define host {
        use                     generic-host
        host_name               server1
        alias                   server1.gertvandijk.net
        address                 10.1.2.3
        _wan_address            1.2.3.4
        }

然后将其作为$_HOSTWAN_ADDRESS$宏调用:

define command{
        command_name    check_wan_http
        command_line    $USER1$/check_http -I $_HOSTWAN_ADDRESS$ $ARG1$
        }

define service{
    use                     generic-service
    hostgroup_name          apache
    service_description     Apache
    check_command           check_wan_http
    process_perf_data       0
    contact_groups          admin
}

相关内容