Substituindo o serviço hostgroup do Nagios pelo serviço host

4

Atualmente, estou experimentando definir um conjunto de serviços para todos os hosts em um host, isso está funcionando bem.

O meu problema é que, em seguida, quero ser capaz de substituir essas definições de serviço que foram incluídas no host, do grupo de host. Para situações, por exemplo, onde um determinado servidor Linux precisa ter seu limite de verificação de PING elevado do padrão.

Por exemplo, eu gostaria de ter um host no grupo de hosts linux-server , que herda vários serviços (SSH, Disco, PING, etc), mas para serviços específicos que desejo substituir com seus próprios valores exclusivos , defina um serviço específico para esse host, com valores personalizados.

Defina um host em linux-server com uma definição de serviço personalizada PING :

define host {
    use             n1-host
    host_name       server-01
    hostgroups      linux-server
    alias           Test Linux Server
    parents         my-gateway,upstream-gateway
    address         server01.test.com
}

define service {
    use                     generic-service
    host_name               server-01
    service_description     PING
    check_command           check_ping!100.0,5%!400.0,15%
}

Infelizmente, mesmo que o nome do host e a descrição do serviço correspondam aos da verificação PING no nível do grupo, somente um serviço PING está listado para server-01 e essa é a verificação PING no nível do grupo, não o nível um do host .

Parece estar registrando em algum nível como em meus registros do Nagios eu posso ver:

Jul 16 19:12:27 localhost nagios: Aviso: definição duplicada encontrada para o serviço 'PING' no host 'server-01'

Mas, em última análise, não funciona como se eu verificasse os "dados de desempenho" dos resultados da verificação de serviço, vejo que o limite incluído nos dados é o da verificação de grupo, não da verificação de host.

  • No entanto, meu entendimento é que uma mudança foi feita em torno da versão 3.2.0 para permitir que os serviços no nível do host tenham precedência sobre os serviços no nível do grupo de host. No momento, estou executando 3.4.1 , então acho que isso deve estar funcionando.

  • Alguns links que me levam a acreditar que esse recurso já deve ser implementado:

  • Além disso, verifiquei minha cópia do arquivo xdata/xodtemplate.c do código-fonte 3.4.1 e, de relance, parece que na "lista ignorada", as verificações no nível do host destinam-se a ter precedência sobre as verificações do grupo de Apesar de admitir, minha análise é primitiva.

  • Eu sei que pode ser possível excluir determinados hosts de um grupo, mas isso não funcionará para mim, já que um grupo de host pode ter vários serviços nele, e não quero ter todos eles serviços removidos do host.

  • Eu também acho não intuitivo ter que manter uma lista de exclusões separadas para onde o próprio host está realmente definido. Por exemplo, o conselho foi dado em um dos links acima (segundo) para fazer o seguinte:

In the service definition add a line under "hostgroup_name": "host_name !zlinux_hostname"

This will exclude the zlinux host from the service check.

Para mim, esta não é uma solução ideal, pois podemos acabar tendo que fazer muitas exceções e isso parece ser difícil de manter.

Se alguém tiver algum conselho sobre insights sobre como fazer isso funcionar, eu aprecio muito isso!

bits adicionais

Atualmente, estou definindo meu serviço PING no nível do grupo da seguinte forma:

define hostgroup {
   hostgroup_name          linux-server
   name                    Linux Servers
}

define service {
    use                     generic-service
    hostgroup_name          linux-server
    service_description     PING
    check_command           check_ping!100.0,2%!400.0,10%
}
    
por Geekman 16.07.2014 / 12:06

2 respostas

3

Eu sei que é um post antigo, mas acabei de encontrar essa pergunta enquanto procurava outra coisa. Eu não sou muito especialista em nagios, mas eu amo isso.

Qualquer verificação feita em um host será aplicada a qualquer host desse grupo de host (que você já sabia). Se você criar a mesma verificação no host cfg, ela substituirá a verificação do grupo de host.

De qualquer forma, a maneira como faço isso é:

1. Configure um arquivo cfg de grupo de host com as verificações nele. Aqui está a minha verificação básica de espaço em disco C:

define service{
    use         generic-service
    hostgroup_name      windows-servers
    service_description C: Drive Space
    notification_period     workhours
    check_command       check_nt!USEDDISKSPACE!-l c -w 80 -c 90
    }

2. No entanto, um servidor é executado com muito menos espaço livre do que a norma. Então, no host cfg, eu tenho:

define service{
    use         generic-service
    host_name       ServerName
    service_description C: Drive Space
    check_command       check_nt!USEDDISKSPACE!-l c -w 95 -c 99
    notification_period     workhours
    }

Agora, a verificação de serviço vai alertá-lo para 80% e 90% para todos os hosts no grupo de hosts, exceto o host que você adicionou à verificação com os valores de alteração.

Organizá-lo desta maneira permite adicionar apenas serviços personalizados e verificações de serviço que não são a norma na definição do host.

Não sei se isso é comum ou não, mas este artigo soprou minha mente quando se tratava de configurar os arquivos de configuração. Eu já estava cansado de editar esses arquivos de texto gigantescos, e isso tornou isso muito fácil.

De qualquer forma, espero que ajude.

    
por 05.05.2015 / 21:55
2

Você pode usar "macros variáveis personalizadas" ( link )

Na sua definição de serviço de ping, por exemplo:

check_command  check_ping!200.0,20%!$_HOSTVAR_SERVICE_PING_CRITICAL_RTA$,40%

No seu modelo de host, defina um valor padrão:

_VAR_SERVICE_PING_CRITICAL_RTA  500

Na definição do host, que deve usar um conjunto de valores de diferença, por exemplo,

_VAR_SERVICE_PING_CRITICAL_RTA  1500

explicitamente.

    
por 19.10.2014 / 16:51