我正在尝试一开始就配置一个带有 2 个客户端的 Icinga2 主服务器。所以我想要像我配置主服务器并将配置同步到客户端的配置。这已经有效,但是如果客户端出现故障。大师说它还在,因为客户正在检查自己。棘手的是我不能使用 IP,因为所有 IP 都是动态的,而且我不能为每个服务器注册一个 dyn-dns。稍后它将是 30-50 台服务器。
希望可以有人帮帮我。
您可以使用puppet-icinga2,它允许收集有关节点的信息。在客户端,您将创建可导出的资源(木偶代码如下):
@@icinga2::object::host { $::fqdn:
display_name => $::fqdn,
address => $::ipaddress_eth0,
check_command => 'hostalive',
target => "/etc/icinga2/zones.d/${::domain}/hosts.conf",
zone => $::fqdn,
}
@@::icinga2::object::endpoint { "$::fqdn":
host => "$::ipaddress_eth0",
}
@@::icinga2::object::zone { "$::fqdn":
endpoints => [ "$::fqdn", ],
parent => 'master',
}
这将被传播到 master(需要 PuppetDB):
Icinga2::Object::Host <<| |>> { }
Icinga2::Object::Endpoint <<| |>> { }
Icinga2::Object::Zone <<| |>> { }
只要 puppet master 有稳定的 DNS 你就会更新zone.conf
。在puppet agent
客户端主机上运行后,信息会在 PuppetDB 中注册。下次puppet agent
在 master 上运行时,它将拥有有关该节点的最新信息。
然后您可以从 icinga master 进行检查:
apply Service "ping" to Host {
import "generic-service"
check_command = "ping"
zone = "master" //execute check from master zone
assign where "linux-server" in host.groups
}
请注意,还有其他自动化集成,如Ansible,可能会提供类似的功能。