Monitorização com o Nagios – Rodrigo Carran
Monitorização com o 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. Estesplugins 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.
# Check mem
FREE=/usr/bin/free
# 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 ]
echo "OK - TOTAL: $TOTAL_RAM MB FREE: $FREE_RAM | 'TOTAL'=$TOTAL_RAM 'FREE'=$FREE_RAM;200;100"
if [ $FREE_RAM -lt $CRITICAL ]
echo "CRITICAL - TOTAL: $TOTAL_RAM MB FREE: $FREE_RAM | 'TOTAL'=$TOTAL_RAM 'FREE'=$FREE_RAM;200;100"
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 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.