ARTIGOS:NagiosVision Tem humanos perto do seu servidor

Ir para: navegação, pesquisa

"Neste documento apresento o NagiosVision, um plugin com o recurso de visão computacional baseado na biblioteca openCV, que utiliza todo poder do Nagios para reportar a detecção de padrão de objetos e faces presentes no vídeo ao vivo."

Introdução

O Nagios é uma poderosa ferramenta para gerenciamento e monitoramento de redes, serviço e estado de um determinado equipamento. Juntos aos recursos de relatórios de estado, problemas e alerta este pacote atende as necessidades de acompanhamento em diversos aspectos computacionais. Do recebimento de mensagens SMS em celulares até monitoramento em tempo real em smartphones, o Nagios atende todas as expectativas no que tange ao requisito alerta.

Como hobby de finais de semana e nas horas vagas, desenvolvi o NagiosVision com o objetivo de criar alertas baseado em comportamentos processados direto do vídeo ao vivo. Contagem de pessoas, análise de fluxo, prevenção a assaltos, análise de trânsito podem serem monitorados em tempo real com uma simples webcam junto ao poder e flexibilidade do Nagios.

Este documento foi baseado no Nagios NSCA, para maiores detalhes sugiro ler aqui no portal Viva o Linux no artigo publicado pelo Ander Ribeiro, sendo assim não entrarei em detalhes sobre a configuração e instalação do mesmo. Vale a pena mencionar que o uso do recurso NSCA somente é necessário quanto utilizando alertas passivos.

Requisitos

A seguir os requisitos para o bom funcionamento do plugins NagiosVision.

  • Webcam;
  • Biblioteca OpenCV
  • Nagios
  • Nagios NSCA (opcional)

A seguir, algumas imagens para ilustrar a funcionalidade do plugin NagiosVision em ação:

ScreenshotFace.jpg
Naviosvison.jpg


Download e instalação

O download deve ser efetuado na página do projeto:

http://sourceforge.net/projects/nagiosvision/ 

O plugin também foi incluído ao projeto oficial do Nagios:

http://exchange.nagios.org/directory/Plugins /Security/NagiosVision/details

Logo a seguir descompacte o pacote .tar.gz e compile com o tradicional comando make e make install:

$ tar -zxvf nagiosvision-0.91.targ.gz
$ cd nagiosvision/
$ make
$ gcc -Wno-write-strings `pkg-config --libs opencv` `pkg-config --cflags pencv` nagiosvision.cpp -o nagiosvision
$ sudo make install 

No servidor Nagios com o NSCA server configurado, edite o arquivo do hosts que será monitorado.

$ sudo vi /etc/nagios/objects/NOME-HOST.cfg
define service {
        use                             generic-service
        host_name                       NOME-HOST
        service_description             checkNagiosVision
        active_checks_enabled           0
        passive_checks_enabled          1
        check_command                   check_ping
        }

Para o script ser executado a cada 1 minuto, insira a linha abaixo no arquivo /etc/crontab na máquina com o nsca-client instalado. Repare que o caminho do script deve corresponder ao local onde descompactamos o código fonte.

*/1 * * * * root /root/nagiosvision/chkNagiosVision.sh

Para finalizar, edite o arquivo chkNagiosVision.sh e altere a variável NAGIOS_SERVER e insira o seu e-mail para receber o alerta substituindo a string "yourmail@yourdomain.com".

IMPORTANTE:

   O parâmetro -C 0 representa o índice do dispositivo de captura.
   Já o parâmetro -w 60 define um alerta Warning quando o tamanho da face for maior que 60 pixels.
   Para finalizar o parâmetro -c 120 define um alerta Critical quando o tamanho da face for maior que 120 pixels. 

Abaixo o conteúdo do script chkNagiosVision.sh, após os devidos ajustes, com a execução a cada minuto do crontab, o NagiosVision passa a disparar os estados de alerta.

#!/bin/bash 

NAGIOS_SERVER=10.0.0.69
HOST_IN_NAGIOS=$(hostname)
cd /usr/lib/nagios/plugins/
COMAND_RESULT=`/usr/lib/nagios/plugins/nagiosvision -C 0 -w 60 -c 120 2> /dev/null`
RESULT_CODE=$?
SERVICE_NAME="checkNagiosVision"

if [ $RESULT_CODE != 0 ]; then
   echo "NAGIOS Vision ALERT: Human in your server." | /bin/mail -a /tmp/face-found.jpg -s "ALERT: Human in your server" yourmail@yourdomain.com
fi

echo "$HOST_IN_NAGIOS;$SERVICE_NAME;$RESULT_CODE;$COMAND_RESULT" | send_nsca -H $NAGIOS_SERVER -p 5667 -c /etc/nagios/send_nsca.cfg -d ";"

Espero que este documento simples e objetivo ajude a instalação e configuração do projeto NagiosVision, que sofrerá muitas implementações baseadas na minha disponibilidade temporal. Como sempre menciono... Colaborar atrai amigos, competir atrai inimigos...

Para finalizar, críticas e sugestões: cabelo@opensuse.org

Sobre o autor: (Alessandro de Oliveira Faria A.K.A.CABELO )