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

ger*_*ijk 5 nic nagios icinga system-monitoring

我正在设置 Icinga(Nagios fork)并且我有一些具有多个接口的机器。有些服务只监听其中一个并正确检查它们,我想知道是否可以为 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(所有接口)

冰加服务器:

  • eth0:(10.2.3.4私有IP,上网)

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

define host {
        use                     generic-host
        host_name               server1
        alias                   server1.gertvandijk.net
        address                 10.1.2.3
        }
Run Code Online (Sandbox Code Playgroud)

这不会正确检查 HTTP 状态。并定义一个额外的主机:

define host {
        use                     generic-host
        host_name               server1-public
        alias                   server1.gertvandijk.net
        address                 1.2.3.4
        }
Run Code Online (Sandbox Code Playgroud)

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

对此,最优雅的节省配置行数的解决方案是什么?我阅读了几个可用于解决此问题的插件,但我无法弄清楚当前的解决方法是什么。解决方案可以追溯到 2003 年,但我正在运行 Icinga 1.7.1,它已经能够address6选择,但这会触发仅对主机名进行 IPv6 解析...

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

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

qua*_*nta 4

您可以定义一个自定义对象变量,如下所示:

define host {
        use                     generic-host
        host_name               server1
        alias                   server1.gertvandijk.net
        address                 10.1.2.3
        _wan_address            1.2.3.4
        }
Run Code Online (Sandbox Code Playgroud)

然后将其称为$_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
}
Run Code Online (Sandbox Code Playgroud)