0

我正在尝试一开始就配置一个带有 2 个客户端的 Icinga2 主服务器。所以我想要像我配置主服务器并将配置同步到客户端的配置。这已经有效,但是如果客户端出现故障。大师说它还在,因为客户正在检查自己。棘手的是我不能使用 IP,因为所有 IP 都是动态的,而且我不能为每个服务器注册一个 dyn-dns。稍后它将是 30-50 台服务器。

希望可以有人帮帮我。

4

1 回答 1

0

您可以使用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,可能会提供类似的功能。

于 2017-03-01T15:29:32.967 回答