Вы можете использовать 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',
}
который будет передан мастеру (требуется PuppetDB):
Icinga2::Object::Host <<| |>> { }
Icinga2::Object::Endpoint <<| |>> { }
Icinga2::Object::Zone <<| |>> { }
Пока у мастера марионеток стабильный DNS, вы обновите zone.conf
. После puppet agent
запуска на клиентском хосте информация о хосте регистрируется в PuppetDB. При следующем puppet agent
запуске на мастере будет актуальная информация об узле.
Затем вы можете реализовать проверку из 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, которые могут предлагать аналогичные функции.
person
Tombart
schedule
01.03.2017