ARTIGOS:NagiosVision Tem humanos perto do seu servidor
"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:
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 )