Wildcards nas exclusões do Nagios hostgroup_name

6

Estou com dificuldades para encontrar uma boa documentação para curingas e expressões regulares (especialmente quando elas funcionam com exclusões) no Nagios. Aqui está um exemplo do que estou tentando fazer:

Em nagios.cfg , os seguintes itens estão definidos, supostamente ativando * e ? como curingas:

use_regexp_matching=1
use_true_regexp_matching=0

Em services.cfg , temos um serviço que gostaríamos de aplicar a todos, exceto alguns objetos; isso é tudo hosts Linux, mas não balanceadores de carga. Trabalhos de exclusão explícita:

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

Mas, temos muitos sites, cada um com balanceadores de carga em seus próprios grupos de host (para que as notificações possam ser facilmente gerenciadas pelo site). Em vez de ter uma longa lista de !prod-site_a-lbs , !staging-site_a-lbs , !prod-site_b-lbs . Eu esperava poder modificar a linha hostgroup_name para:

     hostgroup_name       prod, staging, !*-lbs

Eu tentei isso e, embora não recebamos um erro, essa verificação de serviço ainda está sendo aplicada aos nossos balanceadores de carga. Para verificar novamente, também tentei:

     hostgroup_name        prod, staging, !.*-lbs

Mas, isso falha, como esperado (já que use_true_regexp_matching não está definido), ao executar checkconfig-noprecache :

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

No teste, .* é aceito por checkconfig-noprecache se ! for removido.

O que estamos tentando é possível? Podemos usar curingas para excluir grupos de host correspondentes? Ou existe uma alternativa que seria tão limpa?

Atualização (2015-09-21): Depois de testar a resposta de Keith, esta configuração está funcionando:

Em services.cfg :

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

E em hostgroups.cfg , defini um novo hostgroup usando uma expressão regular na diretiva 'members':

define hostgroup {
    hostgroup_name  lbs
    alias           Load Balancers
    members         ^lb.*
}
    
por Jeremy Koppel 04.09.2015 / 18:12

1 resposta

4

A única maneira que eu acredito que você pode conseguir isso é fazendo um novo grupo de host composto pelos hosts em questão (usando um caractere curinga) e excluindo esse novo host.

    
por 04.09.2015 / 19:29