Назад | Перейти на главную страницу

Синтаксис конфигурации Nagios: несколько директив в строке?

Большая изменчивая часть моей конфигурации Nagios 3 (на самом деле Icinga 1) выглядит так:

...
define host{
    host_name   bla0037
    use         template-bla
}

define host{
    host_name   bla0042
    use         template-bla
}
...

Управление по сценариям было бы намного проще, если бы я мог объединить определения хостов в отдельные строки, например:

...
define host{ host_name bla0037;  use template-bla }
define host{ host_name bla0042;  use template-bla }
...

Но пока не выяснил, как. (например, точка с запятой делает оставшуюся часть строки комментарием). Идеи?

(Создание множества маленьких host-bla0XYZ.cfg файлы также помогут автоматизировать, но я бы предпочел не загромождать каталоги conf).

Вы упомянули, что используете Icinga. Если вы используете последнюю версию Icinga2, формат конфигурации поддерживает однострочные определения через точку с запятой. Я делаю это в своей собственной настройке, чтобы добавлять новые службы при настройке с помощью ansible. например

apply Service "freshness_etl_vendor_import_6am" to Host { import "etl-freshness-service" ; vars.dependens_on_job = "etl_vendor_import_6am" ; assign where "etl_host" in host.groups }

Видеть Вот для получения дополнительной информации в документах. Если вы используете icinga2 и он не работает для вас, возможно, есть другие проблемы с форматированием.

Нет, ты не можешь этого сделать. Парсер файла конфигурации читает по одной строке за раз и ожидает, что в каждой строке будет одна директива. Вам придется сильно изменить парсер в xodtemplate.c сделать это.

Единственные особые исключения в парсере: ; или # (комментарии) и \ (разделите длинную строку на несколько строк).

Единственный способ, который я могу придумать, чтобы сделать то, что вы хотите, - это использовать какие-то другие разделители в качестве замены для \n в выводе вашей системы управления, а затем после обработки (например, sed -e) эти файлы на Nagios / Icinga заканчиваются в файлы конфигурации.

Например, вы можете затем изменить сценарий инициализации для выполнения задания постобработки перед каждой перезагрузкой / HUP. Это было бы некрасиво, но это могло сработать.