Подстановочные знаки в исключениях Nagios hostgroup_name

Я испытываю затруднения при нахождении хорошей документации для подстановочных знаков и регулярных выражений (особенно, поскольку они работают с исключениями) в Nagios. Вот пример того, что я пытаюсь сделать:

В nagios.cfg, следующее установлено, предположительно, включив * и ? как подстановочные знаки:

use_regexp_matching=1
use_true_regexp_matching=0

В services.cfg, у нас есть сервис, что мы хотели бы обратиться ко всем кроме нескольких объектов; это - все хосты Linux, но не подсистемы балансировки нагрузки. Явные работы исключения:

define service {
     use                  generic-service
     service_description  Puppet check
     hostgroup_name       prod, staging, !prod-site_a-lbs
     check_command        check_puppet_alive_nrpe
}

Но, у нас есть много сайтов, каждый с подсистемами балансировки нагрузки в их собственных группах узлов (таким образом, уведомлениями может легко управлять сайт). Вместо того, чтобы иметь длинный список !prod-site_a-lbs, !staging-site_a-lbs, !prod-site_b-lbs. Я надеялся смочь изменить hostgroup_name строка к:

     hostgroup_name       prod, staging, !*-lbs

Я попробовал это, и в то время как мы не получаем ошибку, эта сервисная проверка все еще применяется к нашим подсистемам балансировки нагрузки. Для проверения дважды я также попробовал:

     hostgroup_name        prod, staging, !.*-lbs

Но, это перестало работать, как ожидалось (так как use_true_regexp_matching не установлен), при выполнении checkconfig-noprecache:

 Error: Could not find any hostgroup matching '!.*lbs' ...

В тестировании, .* принят checkconfig-noprecache если ! удален.

То, что мы пробуем возможный? Мы можем использовать подстановочные знаки для исключения соответствия группам узлов? Или, есть ли альтернатива, которая была бы столь же чистой?


Обновление (2015-09-21): После тестирования ответа Keith работает эта конфигурация:

В services.cfg:

define service {
    use                  generic-service
    service_description  Puppet check
    hostgroup_name       prod, staging, !lbs
    check_command        check_puppet_alive_nrpe
}

И в hostgroups.cfg, Я определил новую группу узлов с помощью регулярного выражения в 'членской' директиве:

define hostgroup {
    hostgroup_name  lbs
    alias           Load Balancers
    members         ^lb.*
}
6
задан 21 September 2015 в 19:42
1 ответ

Я считаю, что единственный способ добиться этого - создать новую группу хостов, состоящую из рассматриваемых хостов (с использованием подстановочного знака), а затем исключить эту новую группу хостов.

4
ответ дан 3 December 2019 в 00:35

Теги

Похожие вопросы