Por Ricardo Ruivo para o PPLWARE
Este artigo surge na sequência do meu comentário ao artigo SpiceWorks – Monitorize toda a sua rede informática, ao qual o Pedro Pinto me lançou o repto de escrever sobre Nagios.
Para mim, como administrador de sistema de uma rede informática universitária, o Nagios é a melhor ferramenta de monitorização. Não só por ser opensource mas também pela forma como é possível estender a monitorização aos elementos mais estranhos.
Destaco as seguintes vantagens:
- Monitorização intrusiva e não intrusiva
- Monitorização de servidores (Windows / *Unix), serviços e equipamentos activos da rede
- Possibilidade de desenvolvimento, de plugins específicos às necessidades de cada administrador. Estes plugins podem ser desenvolvidos nas mais diversas linguagem de programação / scripting como por exemplo bash, PHP, Python ou Perl.
- Possibilidade de definir a monitorização da rede de forma hierárquica. Se um router “cair” apenas existe notificação de problemas no router e não em todas as máquinas / serviços que dele estão dependentes.
- Escalável, uma vez que os processos de monitorização são executados de forma paralela
- Capacidade de distribuir a monitorização por vários servidores Nagios, agregando posteriormente numa única interface todos os parâmetros monitorizados.
- Notificação para quando é detectado um problema e para quando o mesmo é considerado resolvido. Estas notificações podem ser sob a forma de email, sms ou qualquer outro meio que possa ser despoletado via script criado pelo administrador.
- Capacidade de executar acções de resolução sobre os problemas quando estes são detectados pelo Nagios.
- Vários níveis de estado dos serviços monitorizados:
- UNKNOWN: Quando não é possível obter informação sobre o elemento monitorizado.
- OK: Quando o elemento monitorizado está a funcionar sem problemas.
- WARNING: Quando o elemento monitorizado está acima do valor definido para Warning (Este valor é definido de forma independente para cada serviço). Por exemplo, quando uma queue de email contem mais de 200 emails para entregar
- CRITICAL: Quando o elemento monitorizado está acima do valor definido para Critical (Este valor é definido de forma independente para cada serviço) ou deixou de responder aos pedidos do servidor Nagios. Seguindo o exemplo anterior, quando por exemplo a queue passa o limite de 400 emails.
Como monitorizar
Uma das formas que o Nagios tem de monitorizar um serviço é ligar-se ao porto desse serviço e interagir com o mesmo, fazendo-se passar por um cliente. Por exemplo para monitorizar um servidor Web, o Nagios liga-se ao porto 80 desse servidor, interpretando depois a informação que obtém.
Exemplo de uma monitorização de um servidor Web:
Este tipo de monitorização é considerado como monitorização não intrusiva.
Como fazer para monitorizar remotamente um serviço ou servidor ou recurso que não pode ser contactado remotamente, como por exemplo, a memória RAM de um servidor?
Para estes casos existe o NRPE. O NRPE é um agente que é instalado do lado do servidor a monitorizar que comunica posteriormente todas os parâmetros monitorizados ao servidor Nagios. Esta comunicação é efectuada sobre TCP porto 5666 através de um túnel encriptado com SSL. Este agente está disponível para Sistemas Operativos Windows e Linux.
O NRPE utiliza todos os plugins que estão disponíveis para o Nagios ou plugins definidos pelo administrador, como por exemplo, o seguinte script bash que monitoriza a quantidade de memória RAM disponível num servidor Linux.
#!/bin/bash
#
# Check mem
#
#
# Configuration variables
#
FREE=/usr/bin/free
AWK=/bin/awk
WARNING=$1
CRITICAL=$2
#
# GET TOTAL RAM
#
TOTAL_RAM=$(/usr/bin/free -m -o | /bin/awk ‘NR>1’ | /bin/awk ‘NR<2’ | /bin/awk ‘{print $2}’)
FREE_RAM=$(/usr/bin/free -m | /bin/awk ‘NR>2’ | /bin/awk ‘NR<2’ | /bin/awk ‘{print $4}’)
if [ $FREE_RAM -gt $WARNING ]
then
echo “OK – TOTAL: $TOTAL_RAM MB FREE: $FREE_RAM | ‘TOTAL’=$TOTAL_RAM ‘FREE’=$FREE_RAM;200;100”
exit 0
fi
if [ $FREE_RAM -lt $CRITICAL ]
then
echo “CRITICAL – TOTAL: $TOTAL_RAM MB FREE: $FREE_RAM | ‘TOTAL’=$TOTAL_RAM ‘FREE’=$FREE_RAM;200;100”
exit 2
fi
Web Interface
Outra grande vantagem do Nagios face a outros programas de monitorização é o facto de correr sobre uma Interface Web. Além de ser dispensável a instalação de qualquer software nos computadores dos responsáveis pelo sistema de monitorização, existe a vantagem de proteger o acesso a este sistema com base em certificados X.509 (http://en.wikipedia.org/wiki/X.509), que representam um aumento significativo da segurança face aos mecanismos de login e password tradicionais.
Por omissão o Nagios apenas permite a visualização do estado da rede em cada instante de tempo, isto é, não existe histórico. O histórico é muito importante para um administrador de sistema uma vez que permite encontrar padrões por exemplo em situações de maior carga da rede, podendo posteriormente adequar a configuração para lidar com estes picos da melhor forma.
Para colmatar esta falha existe o PNP4Nagios (http://docs.pnp4nagios.org/pnp-0.4/start). Trata-se de um Add-On que utiliza as RRDTools como forma de armazenamento dos dados de output dos plugins do Nagios. Estes resultados alimentam posteriormente o processo de criação dos gráficos.
Outros Add-Ons mais utilizados
- NDOUtils (http://www.nagios.org/download/addons)
Permite armazenar numa base de dados todos os valores adquiridos, monitorizados e valores de históricos de vários servidores Nagios. Serve de base para outros add-ons do Nagios.
- Nagvis (http://www.nagvis.org/)
Trata-se um de add-on de apresentação para o Nagios que permite a visualização de forma gráfica o estado dos equipamentos activos e serviços monitorizados. Esta informação é apresentada num visual personalizado com fotos reais dos rack’s de servidores / mapas de localização ou até mesmo componentes dos servidores.
Este add-on obtém todos os dados através do NDOUtils.
O Nagios serve de core a diversos sistemas comerciais de monitorização, como por exemplo:
- Nagios XI
- Op5 Monitor
- Azeti SONARPLEX
- OpMon
Nagios Exchange (http://exchange.nagios.org/)
O Nagios Exchange é o repositório oficial e aberto a toda a comunidade Nagios onde se encontram publicados todos os add-ons, plugins e extensões.
É um bom ponto de partida sempre que for necessário algum plugin para a monitorização de um novo serviço, antes de começar a partir pedra e a reinventar a roda na maior parte das vezes.