Nagios Basic Configuration (para adição rápida de novas máquinas)

2

Comecei recentemente a usar o Nagios para monitorar cerca de 25 servidores (principalmente virtuais, com alguns autônomos). A maioria dos servidores (incluindo o próprio Nagios) está executando o Ubuntu 14.04 LTS, com alguns rodando 12.04 LTS. Assim, eu pensei que poderia apenas utilizar o NRPE e acabar com isso.

Configurar o NRPE provou ser bastante complexo para mim. Por exemplo, para um simples comando check_disk, eu tive que especificar manualmente qual partição verificar, excluindo todas as outras partições / sistemas de arquivos, como mostrado abaixo:

command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 57% -x /dev -x /run -x /run/lock -x /run/shm -x /run/user -x /sys/fs/cgroup

Caso contrário, meus limites para aviso e crítico foram imediatamente compensados por sysfs, proc ou outras partições.

Então eu dei uma olhada no monitor de serviço de base que o host Nagios executa em si mesmo. Isso está listado em /usr/local/nagios/etc/localhost.cfg e contém o seguinte (desculpe! Não entendi porque não será formatado corretamente!)

define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             PING
check_command           check_ping!100.0,20%!500.0,60%
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Root Partition
check_command           check_local_disk!20%!10%!/
    }




define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Users
check_command           check_local_users!20!50
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Total Processes
check_command           check_local_procs!250!400!RSZDT
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Load
check_command           check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Swap Usage
check_command           check_local_swap!20!10
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             SSH
check_command           check_ssh
notifications_enabled       0
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             HTTP
check_command           check_http
notifications_enabled       0
    }

O que resulta disso no painel:

IssoéPERFEITOparamim.Éexatamenteissoqueeuqueroquetodososhostsqueeuadicionomostrem.Emvezdemexercomcomandospersonalizados,comoexatamenteeudeveria"copiar" isso para cada host através do arquivo conf NRPE para que eu veja todos esses serviços específicos para cada host que eu adiciono? É claro que isso já está aqui e já funciona no host local. Estou lutando para envolver minha cabeça na organização necessária para que isso aconteça.

Obrigado por todo e qualquer conselho.

    
por Harsha K 28.02.2015 / 00:56

2 respostas

2

Não faz muito tempo, eu escrevi um script de instalador automático NRPE realmente interessante que, acredito, pode ajudá-lo se você editá-lo para atender às suas necessidades. O script inclui muitas verificações internas que estão sendo adicionadas ao arquivo nrpe.cfg de cada host. Isso significa que você pode configurar as verificações que são relevantes para você e garantir que cada host que está executando o script também as tenha, isso é sobre o lado do cliente.

Um link para o script: Aqui a>.

Em relação ao lado do servidor (Nagios), você pode instalar um Nagios-Configuration Manager como o NagioSQL, por exemplo, que irá ajudá-lo a gerenciar seus hosts e serviços de uma forma mais conveniente através de uma GUI.

Mais do que isso, para garantir que todos os seus hosts tenham essas verificações exibidas, basta criar um grupo de serviços que inclua todos esses serviços (verificações) que você deseja monitorar e anexar esse grupo de serviços a cada host monitor.

Deixe-me dizer o que fiz na minha empresa, queria ter certeza de que cada servidor fosse monitorado com a verificação check_load , mas como não temos linha de base de hardware na empresa, o que significa que cada servidor tem especificações diferentes e check_load é calculado por núcleos / cpus na máquina, adicionei ao módulo "Nagios_client" no nosso servidor Puppet um custom_fact que identifica quantos processadores existem em uma máquina e configura o Nagios check_load de acordo. / p>

Então, por exemplo, digamos que server1 tenha 4 cpu's, o que significa que 2.8 load é ideal (0.7 por cpu). Puppet through facter identifica o número de cpu's e depois edita nrpe.cfg do servidor da seguinte forma:

command[check_load]=/usr/local/nagios/libexec/check_load -w 2.9,3.0,3.1 -c 4.0,5.0,6.0

Em seguida, no NagioSQL, por exemplo, você pode usar o "recurso Importar", que permite importar arquivos *.cfg que serão carregados no Nagios como Hosts e Serviços. Assim, você pode criar um arquivo host.cfg e, por meio de um script, duplicá-lo por host que deseja monitorar e apenas alterar o nome do host / ip de cada máquina e isso levaria a outra etapa em configurações mais automáticas.

No meu caso, por exemplo, o Puppet é capaz de entender que ele está sendo executado pela primeira vez em uma máquina e também criou o arquivo host.cfg relevante no Nagios.

Acredito que com o Puppet + NagioSQL sua administração do Nagios seria uma tarefa muito mais fácil.

Em relação à sua dificuldade em configurar quaisquer verificações ... Você sempre pode escrever seu próprio script e configurar o Nagios para executá-lo para você. Por exemplo, vamos pegar seu comando check_disk , é um comando muito rico que permite exibir todos os tipos de dados que são desnecessariamente importantes para você.

Então eu tive o mesmo problema com check_procs , outro comando muito rico que fornece todos os tipos de dados ... que eu não precisava, então escrevi um script de verificação simples que faz exatamente o que eu preciso e configurou no Nagios. Exemplo:

#!/bin/bash
# This script checks for running processes for mt.js and adb-server.js
# Script by Itai Ganot 2015 .
process="$1"
appname=$(basename $0)
if [ -z "$1" ]; then
    echo "Please specify a process to check"
    exit 1
fi
ps -ef | grep "$process" | egrep -v "grep|$appname" &>/dev/null
if [ "$?" -eq "0" ] ; then
    stat="OK"
    exitcode="0"
    msg="Process $process is running"
else
    stat="Critical"
    exitcode="2"
    msg="There are currently no running processes of $process"
fi
pid=$(ps -ef | grep "$process" | egrep -v "grep|$appname" | awk '{print $2}')
echo "$stat: $msg Process PID: $pid"
exit $exitcode

Isso me dá menos informações do que o real check_procs , mas me fornece apenas as informações de que preciso.

Então, para simplificar, se o comando check_disk dificultar sua configuração, basta criar seu próprio script, essa é a beleza do Nagios.

Espero ter ajudado você.

    
por 02.03.2015 / 15:15
1

Você precisa de algum tipo de software de gerenciamento de configuração para configurar e instalar o daemon nrpe em cada host remoto, além de implantar as configurações e, finalmente, seus plug-ins.

Posso sugerir Ansible para esta tarefa.

link

    
por 28.02.2015 / 01:00