Configuração básica do Nagios (para adição rápida de novas máquinas)

Configuração básica do Nagios (para adição rápida de novas máquinas)

Recentemente comecei a usar o Nagios para monitorar cerca de 25 servidores (principalmente virtuais, com alguns autônomos). A maioria dos servidores (incluindo o próprio host Nagios) está executando o Ubuntu 14.04 LTS, com alguns executando o 12.04 LTS. Portanto, pensei que poderia simplesmente utilizar o NRPE e acabar com isso.

Configurar o NRPE provou ser bastante complexo para mim. Por exemplo, para um comando check_disk simples, tive que especificar manualmente qual partição verificar, excluindo todas as outras partições/sistemas de arquivos, conforme 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 de aviso e crítico foram imediatamente acionados por sysfs, proc ou outras partições.

Então dei uma olhada no monitor de serviço básico que o host Nagios executa sozinho. Ele está listado em /usr/local/nagios/etc/localhost.cfg e contém o seguinte (sinto muito! Não entendo por que não formata 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 nisso no painel:

incrível

Isto é perfeito para mim. Isso é exatamente o que desejo que cada host que adiciono mostre. Em vez de mexer com comandos personalizados, como exatamente devo "copiar" isso para cada host por meio do arquivo conf NRPE para ver todos esses serviços específicos para cada host que adiciono? Está claro que isso já está aqui e já funciona no host local. Estou lutando para entender a organização necessária para que isso aconteça.

Obrigado por todo e qualquer conselho.

Responder1

Não faz muito tempo, escrevi um script de instalação automática NRPE muito bom que acredito que pode ajudá-lo se você editá-lo para atender às suas necessidades. O script inclui muitas verificações integradas que estão sendo adicionadas ao nrpe.cfgarquivo de cada host. Ou seja, 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 roteiro:Aqui.

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

Mais do que isso, para ter certeza de que todos os seus hosts possuem essas verificações que você mostrou, basta criar um grupo de serviços que inclua todos esses serviços (verificações) que você deseja monitorar e depois anexar esse grupo de serviços a cada host que você monitora.

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

Por exemplo, digamos que o servidor1 tenha 4 CPUs, o que significa que a carga de 2,8 é ideal (0,7 por CPU). O Puppet through facteridentifica o número de CPUs e depois edita o servidor nrpe.cfgassim:

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

Então, no NagioSQL por exemplo, você pode usar o "recurso Importar" que permite importar *.cfgarquivos que serão carregados no Nagios como Hosts e Serviços. Assim, você pode criar um host.cfgarquivo e através 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 mais um passo para configurações mais automáticas.

No meu caso, por exemplo, o Puppet é capaz de entender que está rodando pela primeira vez em uma máquina e então também criou o host.cfgarquivo 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 o seu check_diskcomando, é um comando muito rico que permite exibir todos os tipos de dados que são desnecessariamente importantes para você.

Então, tive o mesmo problema com check_procsoutro comando muito rico que fornece todos os tipos de dados... dos quais eu não precisava, então escrevi um script de verificação simples que faz exatamente o que preciso e configurei-o 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 dá apenas as informações de que preciso.

Então, para resumir, se o seu check_diskcomando dificulta a configuração, basta criar seu próprio script, essa é a beleza do Nagios.

Espero ter ajudado você.

Responder2

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

Posso sugerirAnsiblepara esta tarefa.

https://github.com/bobmaerten/ansible-role-nagios-nrpe-server

informação relacionada