Как в 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
}