Configurando diferentes portas SSH para cada host remotley monitorado pelo Nagios

4

Concluí a instalação e configuração do Nagios em três servidores para que a instância no servidor A também forneça relatórios para os servidores B e C (via NRPE).

O SSHD está propositalmente escutando uma porta diferente em cada host, então eu editei o arquivo /etc/nagios3/conf.d/services_nagios2.cfg em cada host para testar a porta apropriada. A instância HTTP nativo do Nagios em servidores B & C confirmar que SSH está em execução, mas o relatório no servidor A está mostrando falhas críticas para SSH em ambos B & C .

Fiquei com a impressão de que o serviço NRPE foi projetado para executar verificações locais nos hosts remotos, encaminhando os restos de volta para o host de monitoramento que, em seguida, agruparia os dados em um relatório para todas as máquinas.

Olhando para o seção Serviços da página de configuração web (no servidor A ), Nagios está testando a mesma porta SSH em todos os três servidores ao invés de portas diferentes no B & C . Alguém pode explicar por quê?

A única maneira que eu posso corrigir isso (até à data) é criar um group_name host diferente e check_command para cada host remoto no arquivo conf.d / services_nagios2.cfg no servidor A .

Este não pode ser o único caminho?

Certamente o arquivo iria multiplicar em comprimento toda vez que uma configuração de serviço diferente fosse necessária para os servidores serem monitorados remotamente!

danielcraigie
fonte

Respostas:

5

OK, eu tenho vasculhado a documentação do Nagios3 e respondi a parte da configuração da porta da minha pergunta ...

A resposta está no modelo de herança de objetos que existe nos arquivos de configuração do Nagios. Essencialmente, criei uma variável personalizada em cada definição de host que especifica a porta ssh exclusiva nessa máquina:

define host {
    use              generic-host
    host_name        serverB
    address          10.0.1.3
    _sshport         67382
}

Os hosts são agrupados dentro do arquivo hostgroups_nagios2.cfg:

# A list of your ssh-accessible servers
define hostgroup {
    hostgroup_name  ssh-servers
    alias           SSH servers
    members         localhost,serverB,serverC
}

Este grupo é referenciado dentro do services_nagios2.cfg pelo bloco que verifica o SSH:

# check that ssh services are running
define service {
    hostgroup_name                  ssh-servers
    service_description             SSH
    check_command                   check_ssh_port!$_HOSTSSHPORT
    use                             generic-service
    notification_interval           0 ; set > 0 if you want to be renotified
}

No final do comando check_ssh_port você pode ver que eu adicionei a variável sshport $_HOSTSSHPORTque é herdada de cada host dentro do grupo de hosts ssh-servers enquanto as verificações são executadas.

Agora, ao adicionar novos servidores, eu só tenho que modificar meu arquivo hosts_nagios2.cfg com os detalhes do novo host.

Para ativar a compatibilidade com versões anteriores, também modifiquei meu arquivo generic-host_nagios2.cfg, adicionando a linha _sshport 22para que, se por algum motivo eu precisar monitorar algum sistema executando o SSH na porta padrão, a configuração da porta já seja herdada do modelo host genérico.

Espero que isso ajude os outros que se encontram na mesma situação. Ainda estou tentando entender por que as verificações remotas não estão usando os arquivos de configuração personalizados nos servidores remotos.

danielcraigie
fonte
Isso funcionou perfeitamente para mim. Obrigado senhor!
Bryan Agee