Как настроить удаленный клиент Icinga2 без использования мастера CLI?

11

Я хочу , чтобы настроить Icinga2 удаленных клиентов с помощью кукол, но вся страница официальной документации переговоры об использовании их удивительный мастер CLI, который требует , чтобы запустить вручную.

Любое решение? Может мне просто вернуться в Нагиос?

Limbo Peng
источник
Документы, на которые вы ссылаетесь, ссылаются только на настройки графического интерфейса для Windows. Это то, о чем ты спрашиваешь?
Кит
1
docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/… ... где в последних документах есть раздел, посвященный именно этому вопросу.
TryTryAgain
1
Обновление: документация перенесена на новое место icinga.com/docs/icinga2/latest/doc/06-distributed-monitoring/…
Věroš K.

Ответы:

16

Я была такая же проблема. Это то, что я использую, после извлечения логики из кода мастера узла icinga2.

Переменные вам понадобятся:

$pki_dir - /etc/icinga2/pki in the default installation
$fqdn - fully host+domain name of the client.
$icinga2_master - resolvable fqdn of the master
$icinga2_master_port - the port the master is connectable on.
$ticket - generated on the master via 'icinga2 pki ticket --cn $fqdn'

Код:

mkdir icinga:icinga 0700 $pki_dir
icinga2 pki new-cert --cn $fqdn --key $pki_dir/$fqdn.key --cert $pki_dir/$fqdn.crt
icinga2 pki save-cert --key $pki_dir/$fqdn.key --cert $pki_dir/$fqdn.crt --trustedcert $pki_dir/trusted-master.crt --host $icinga2_master
icinga2 pki request --host $icinga2_master --port $icinga2_master_port --ticket $ticket --key $pki_dir/$fqdn.key --cert $pki_dir/$fqdn.crt --trustedcert $pki_dir/trusted-master.crt --ca $pki_dir/ca.key
icinga2 node setup --ticket $ticket --endpoint $icinga2_master --zone $fqdn --master_host $icinga2_master --trustedcert $pki_dir/trusted-master.crt
systemctl restart icinga2  # or however you restart your icinga
Нил Катин
источник
1

Это как TryTryAgain написал. Последние документы описывают два разных способа. Top-Down Remote Command Execution и Top-Down синхронизация конфигурации

Отличие этого подхода заключается в том, что удаленное выполнение команд будет запускать все команды от мастера, тогда как синхронизация конфигурации будет синхронизировать все файлы конфигурации, расположенные в /etc/icinga2/zones.dдочерних узлах (как со спутниками, так и с клиентами), и запускать команды непосредственно на конечной точке.

Я предпочитаю использовать подход Top-Down Config Sync, потому что клиент будет запускать проверки, даже если мастер потеряет связь с дочерним элементом.

Вы должны включить APIфункцию на всех узлах.

# /etc/icinga2/features-enabled/api.conf

object ApiListener "api" {
  cert_path = "/etc/ssl/{{ hostname }}.pem"
  key_path = "/etc/ssl/{{ hostname }}-key.pem"
  ca_path = "/etc/ssl/rootca.pem"

  // only on satelites and clients
  accept_config = true
}

Теперь создайте файл зоны и скопируйте его на все узлы

# /etc/icinga2/zones.conf

// global zone used for zone overlapping configs
object Zone "global" {
  global = true
}

// endpoints
object Endpoint "fqdn1.of.host" {
  host = "fqdn1.of.host"
}

object Endpoint "fqdn2.of.host" {
  host = "fqdn2.of.host"
}

// for each endpoint one zone
object Zone "fqdn1.of.host" {
  endpoints = [ "fqdn1.of.host" ]
}

object Zone "fqdn2.of.host" {
  endpoints = [ "fqdn2.of.host" ]
  parent = "fqdn1.of.host"
}

Рекомендуется использовать fqdn ваших узлов в качестве имени конечной точки, а также имени зоны. Помните : скопируйте это zones.confна все узлы.

Следующим шагом будет определение всех сервисов, шаблонов и групп внутри /etc/icinga2/zones.d/и каждого хоста в его собственном hosts.conf внутри своего каталога зоны.

# /etc/icinga2/zones.d/global/templates.conf

template Host "generic-host" {
  max_check_attempts = 3                                                                                                                     
  check_interval = 1m 
  retry_interval = 30s

  check_command = "hostalive"
}

# /etc/icinga2/zones.d/fqdn1.of.host/hosts.conf

// this is the master
object Host "fqdn1.of.host" {
  import "generic-host"
  address = "fqdn1.of.host"
}

# /etc/icinga2/zones.d/fqdn2.of.host/hosts.conf

// this is a satelite/client
object Host "fqdn2.of.host" {
  import "generic-host"
  address = "fqdn2.of.host"
}

Мой подход состоял в том, чтобы предотвратить использование внутри конфигов, /etc/icinga2/conf.dпотому что я добавил все общие (и глобально используемые) вещи /etc/icinga2/zones.d/globalи специфичные для хоста вещи внутри/etc/icinga2/zones.d/fqdnX.of.host

И последнее, но не менее важное: вы должны удалить оператор include для conf.d

# /etc/icinga2/icinga2.conf

[...]
// include_recursive "conf.d"

Вот и все. Эта настройка требует управления вашими сертификатами вручную или с помощью управления конфигурацией по вашему выбору. Он не будет генерировать его и не использует icinga pki. Не вижу причин, по которым я должен использовать инструмент pki, если для этого есть специальные инструменты.

Craver
источник