Variáveis personalizadas Nagios para herança de objetos

4

Na nossa configuração do Nagios, estamos usando modelos e herança de objetos para serviços e hosts.

#Le Hosts
define host{
    use            linux-nrpe,linux-dc3,linux-cassandra
    host_name      tigris
    alias          tigris
    address        192.168.4.72
    }

define host{
    use            linux-nrpe,linux-dc3,linux-cassandra
    host_name      euphrates
    alias          euphrates
    address        192.168.4.177
    }

#Le Templates
define host{
    name           linux-nrpe
    use            all-hosts
    hostgroups     linux-nrpe
    contact_groups rhands,usergroup1,opcomms
    register       0
}

#Le Services
define service{
    hostgroup_name      linux-nrpe
    use                 high-priority-service,graphed-service
    service_description Load
    check_command       check_by_nrpe!check_load!5,5,6!9,9,9
    contact_groups      rhands,usergroup1,opcomms
    }
[...etc...]

O problema com essa configuração são todos os servidores nos alertas de acionamento de grupo linux-nrpe quando seus níveis de carga atingem o que está definido no serviço, mas nossos servidores podem ser executados 24 horas por dia, 7 dias por semana. felizmente a ~ 1 a menos que algo dê errado, então encontramos o sistema enviando muitos alertas ou tendo que ignorar / não alertar sobre as coisas. Definir definições de serviço individuais para cada servidor (muitas delas) levaria muito tempo, o que realmente gostaríamos de fazer seria algo como

define host{
    name           linux-nrpe
    use            all-hosts
    hostgroups     linux-nrpe
    contact_groups rhands,usergroup1,opcomms
    register       0
    perf_load      2,2,3 5,5,6
    perf_mem       95% 97%
    [...more...]
    }

define service{
    hostgroup_name      linux-nrpe
    use                 high-priority-service,graphed-service
    service_description    Load
    check_command       check_by_nrpe!check_load!$perf_mem$
    contact_groups      rhands,usergroup1,opcomms
    }

Eu olhei pelos documentos e não pude ver nada, a menos que eu estivesse perdendo alguma coisa. Alguma idéia?

    
por Smudge 10.02.2012 / 10:31

2 respostas

4

Temos uma solução bastante semelhante sendo executada aqui no nosso Nagios Monitoring. Variáveis Host / Service personalizadas devem começar com um sublinhado na definição e, na referência, você deve adicionar _HOST ou _SERVICE como prefixo e todas as maiúsculas como nome.

Portanto, a variável personalizada perf_load e perf_mem deve ser definida como

define host {
    [..]
    _perf_load      2,2,3 5,5,6
    _perf_mem       95% 97%
    [..]
}

e referenciado como

define service {
    [..]
    check_command   check_by_nrpe!check_load!$_HOSTPERF_LOAD$
    [..]
}

Um trecho de uma configuração em execução do nosso Nagios:

define host {
       host_name               target
       alias                   target
       address                 target
       use                     tmpl_host
       _gprs_address           192.168.0.1
}
[...]
define service {
        host_name               target
        service_description     GPRS ping
        use                     tmpl_service_ping
        check_command           check_fping-by-ssh!-H 1.2.3.4 -S $_HOSTGPRS_ADDRESS$ -n 7 -t 1000 -w 1000 -c 2000
        event_handler           check_restart-GPRS-PPP
        notes_url               https://wiki.
        contact_groups          admin_allday
}

Você encontra mais detalhes na Documentação do Nagios.

Para a referência, este trabalho também é bom em Icinga.

    
por 13.02.2012 / 15:43
2

Você também pode definir os limites na configuração do NRPE, nos próprios hosts. Isso não é prático se você tiver mais do que alguns dúzias de hosts, a menos que você tenha algum tipo de gerenciamento de conf (algo como fantoche, ou mesmo apenas git / hg / svn / whatever) e use 'includes' em nrpe.cfg. / p>

A sugestão de Lairsdragon é muito melhor, no entanto. A única coisa que gostaria de acrescentar é:

Pode ser útil nomear vars de objetos personalizados com dois sublinhados principais ($ __ FOO), para que possam ser chamados de "$ _HOST_FOO".

    
por 13.02.2012 / 21:21

Tags