Как в Icinga (Nagios) настроить хосты с несколькими IP-адресами?

Я настраиваю Icinga (форк Nagios), и у меня есть несколько машин с несколькими интерфейсами. Некоторые сервисы прослушивают только один из них, и для правильной проверки я хотел бы знать, возможно ли настроить несколько IP-адресов для одного хоста в Icinga.

Вот минимальный пример:

Удаленный сервер:

  • eth0: 1.2.3.4 (публичный IP)
  • eth1: 10.1.2.3 (частный IP, безопасный туннель)
  • Apache слушает 1.2.3.4:80, (только для общественности)
  • OpenSSH слушает 10.1.2.3:22, (только внутренняя сеть)
  • Постфикс SMTP прослушивания 0.0.0.0:25 (все интерфейсы)

Icinga Server:

  • 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
}
Другие вопросы по тегам