我正在设置 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
}