Olhar penetrante - Linux Magazine Online

Olhar penetrante - Linux Magazine Online Olhar penetrante - Linux Magazine Online

linuxnewmedia.com.br
from linuxnewmedia.com.br More from this publisher
28.04.2013 Views

SEGURANÇA SSEGURANÇA | Monitoramento com NAS 60 Monitoramento com NAS Olhar penetrante Tire proveito do baixo consumo de energia oferecido por dispositivos NAS modernos para monitorar suas câmeras. por Ben Martin O moderno hardware NAS possui a CPU embutida que muitas vezes oferece grande desempenho com baixo consumo de energia. Muitas destas unidades necessitam de menos de 10 watts para operar com uma conexão de rede gigabit e a CPU a 100% de uso. Um NAS com baixo consumo de energia pode consumir de 10% a 20% da eletricidade que um hardware desktop precisa para funcionar. A principal questão passa a ser então: seria a CPU do NAS “rápida o sufi ciente” para monitorar e detectar o movimento de uma ou mais câmeras? Neste artigo, examinaremos se o QNAP TS-219P II [1] , com uma CPU ARM Marvell de 2 GHz e 512MB de RAM, está pronto para o desafi o de detecção de movimento em tempo real ( fi gura 1 ). Note que grande parte do artigo também deve ser diretamente aplicável ao seu primo mais barato de carcaça única, o QNAP TS-119p II , que ostenta a mesma CPU/RAM. Uma solução popular para monitoramento com câmera e detecção de movimento é a suite ZoneMinder [2] . As câmeras podem ser tanto de rede IP como câmeras USB conectadas diretamente ao servidor ou em outra máquina na rede. O ZoneMinder pode monitorar todas as suas câmeras, detectar movimento em áreas-chave ou zonas, e notifi cá-lo sobre a atividade em áreas de interesse. As zonas limitam a área de monitoramento, de modo que o ZoneMinder pode ver quando alguém caminha até sua garagem sem que o vento nas árvores acione um alarme falso. Duas empresas que fazem hardware NAS usando CPU ARM de alto nível são a Synology e a QNAP . Produtos de baixa capacidade com CPUs de 1.2GHz e 256MB de RAM também estão disponíveis, assim como modelos Listagem 1: Instalação do Debian Wheezy 01 # for if in `seq 1 6`; do 02 cat /dev/mtdblock$if > mtd$if 03 done 04 # cp mtd* /share/external/sdi1/ 05 # sync 06 # export DIST= ftp://ftp.debian.org/debian/dists/wheezy/main/ installer -armel/current/images/kirkwood/network-console/qnap/ts-219/ 07 # wget $DIST/flash-debian $DIST/initrd.gz $DIST/kernel $DIST/model 08 # sh flash-debian 09 Your MAC address is 00:08:9B:C8:D7:11 10 # reboot 11 # exit mais sofi sticados com CPUs de 2GHz e 512MB de RAM. No intervalo dos 1,2 GHzz estão o Synology DS212j e o QNAP TS-212; no intervalo dos 2 GHz estão o Synology DS212+ e o QNAP TS-219P II, juntamente com o de carcaça única QNAP TS-119p II. Tanto o produto da QNAP quanto o da Synology vem com sua própria distribuição Linux. Ambas as unidades NAS permitem usar o gerenciador de pacotes ipkg para instalar aplicativos de código aberto adicionais e complementar o software embarcado. Por exemplo, o leitor pode instalar o padrão CoreUtils ao invés dos binários-padrão BusyBox . Instalação Se o usuário não possuir um dispositivo NAS instalado, a confi guração inicial para este aparelho exige que seja feita a remoção de uma (ou mais) bandejas individuais de disco rígido, um parafuso do disco da bandeja, e o deslizamento de volta para a unidade. Uma vez que os cabos de energia e rede estiverem conectados, teremos completado a confi guração de hardware. Por outro lado, o Synology DS212j desliza em duas partes separadas, e fi xamos o disco rígido diretamente em um gabinete de disco rígido interno antes de fazermos o mesmo com a capa exterior do Synology NAS. Quando ligamos o TS-219P II, o dispositivo tentará obter um endereço www.linuxmagazine.com.br

SEGURANÇA<br />

SSEGURANÇA | Monitoramento com NAS<br />

60<br />

Monitoramento com NAS<br />

<strong>Olhar</strong> <strong>penetrante</strong><br />

Tire proveito do baixo consumo de energia<br />

oferecido por dispositivos NAS modernos<br />

para monitorar suas câmeras.<br />

por Ben Martin<br />

O<br />

moderno hardware NAS<br />

possui a CPU embutida que<br />

muitas vezes oferece grande<br />

desempenho com baixo consumo de<br />

energia. Muitas destas unidades necessitam<br />

de menos de 10 watts para<br />

operar com uma conexão de rede<br />

gigabit e a CPU a 100% de uso. Um<br />

NAS com baixo consumo de energia<br />

pode consumir de 10% a 20% da eletricidade<br />

que um hardware desktop<br />

precisa para funcionar. A principal<br />

questão passa a ser então: seria a CPU<br />

do NAS “rápida o sufi ciente” para<br />

monitorar e detectar o movimento<br />

de uma ou mais câmeras?<br />

Neste artigo, examinaremos se o<br />

QNAP TS-219P II [1] , com uma CPU<br />

ARM Marvell de 2 GHz e 512MB de<br />

RAM, está pronto para o desafi o de<br />

detecção de movimento em tempo<br />

real ( fi gura 1 ). Note que grande parte<br />

do artigo também deve ser diretamente<br />

aplicável ao seu primo mais barato<br />

de carcaça única, o QNAP TS-119p<br />

II , que ostenta a mesma CPU/RAM.<br />

Uma solução popular para monitoramento<br />

com câmera e detecção de<br />

movimento é a suite ZoneMinder [2] .<br />

As câmeras podem ser tanto de rede<br />

IP como câmeras USB conectadas<br />

diretamente ao servidor ou em outra<br />

máquina na rede. O ZoneMinder<br />

pode monitorar todas as suas câmeras,<br />

detectar movimento em áreas-chave<br />

ou zonas, e notifi cá-lo sobre a atividade<br />

em áreas de interesse. As zonas<br />

limitam a área de monitoramento,<br />

de modo que o ZoneMinder pode<br />

ver quando alguém caminha até sua<br />

garagem sem que o vento nas árvores<br />

acione um alarme falso.<br />

Duas empresas que fazem hardware<br />

NAS usando CPU ARM de alto nível<br />

são a Synology e a QNAP . Produtos<br />

de baixa capacidade com CPUs de<br />

1.2GHz e 256MB de RAM também<br />

estão disponíveis, assim como modelos<br />

Listagem 1: Instalação do Debian Wheezy<br />

01 # for if in `seq 1 6`; do<br />

02 cat /dev/mtdblock$if > mtd$if<br />

03 done<br />

04 # cp mtd* /share/external/sdi1/<br />

05 # sync<br />

06 # export DIST= ftp://ftp.debian.org/debian/dists/wheezy/main/<br />

installer -armel/current/images/kirkwood/network-console/qnap/ts-219/<br />

07 # wget $DIST/flash-debian $DIST/initrd.gz $DIST/kernel $DIST/model<br />

08 # sh flash-debian<br />

09 Your MAC address is 00:08:9B:C8:D7:11<br />

10 # reboot<br />

11 # exit<br />

mais sofi sticados com CPUs de 2GHz<br />

e 512MB de RAM. No intervalo dos<br />

1,2 GHzz estão o Synology DS212j e<br />

o QNAP TS-212; no intervalo dos 2<br />

GHz estão o Synology DS212+ e o<br />

QNAP TS-219P II, juntamente com<br />

o de carcaça única QNAP TS-119p II.<br />

Tanto o produto da QNAP quanto<br />

o da Synology vem com sua própria<br />

distribuição <strong>Linux</strong>. Ambas as unidades<br />

NAS permitem usar o gerenciador de<br />

pacotes ipkg para instalar aplicativos de<br />

código aberto adicionais e complementar<br />

o software embarcado. Por exemplo, o<br />

leitor pode instalar o padrão CoreUtils<br />

ao invés dos binários-padrão BusyBox .<br />

Instalação<br />

Se o usuário não possuir um dispositivo<br />

NAS instalado, a confi guração inicial<br />

para este aparelho exige que seja feita<br />

a remoção de uma (ou mais) bandejas<br />

individuais de disco rígido, um parafuso<br />

do disco da bandeja, e o deslizamento<br />

de volta para a unidade. Uma vez que<br />

os cabos de energia e rede estiverem<br />

conectados, teremos completado a<br />

confi guração de hardware. Por outro<br />

lado, o Synology DS212j desliza em<br />

duas partes separadas, e fi xamos o disco<br />

rígido diretamente em um gabinete<br />

de disco rígido interno antes de fazermos<br />

o mesmo com a capa exterior do<br />

Synology NAS.<br />

Quando ligamos o TS-219P II, o<br />

dispositivo tentará obter um endereço<br />

www.linuxmagazine.com.br


IP via DHCP, após o qual podemos<br />

efetuar login em uma interface online<br />

do dispositivo NAS e concluir a instalação.<br />

A confi guração inicial do TS-219P<br />

II envolve o upload de um arquivo de<br />

imagem “fi rmware” de 140 MB ( fi gura<br />

2 ). Após o NAS reinicializar e cair na<br />

distribuição <strong>Linux</strong> que acabamos de<br />

carregar, é preciso responder algumas<br />

perguntas sobre localidade, senhas e<br />

preferências do aplicativo ( fi gura 3 ).<br />

Para muitos fi ns, a combinação de<br />

pacotes nativos do fornecedor NAS<br />

complementada com pacotes disponíveis<br />

através do ipkg é sufi ciente. Se o<br />

aplicativo que o usuário necessita não<br />

está incluso no ipkg, é possível compilá-<br />

-lo e instalá-lo. Este processo geralmente<br />

envolve a criação de um ambiente em<br />

máquina virtual para a CPU ARM em<br />

uma máquina desktop, bem como a<br />

compilação do software. Normalmente,<br />

os cabeçalhos de desenvolvimento de<br />

software no NAS não estão disponíveis<br />

facilmente sob a forma de pacotes para<br />

instalação no próprio equipamento.<br />

Como instalar o<br />

Debian no ARM<br />

Para uma personalização mais avançada,<br />

temos a opção de instalar o Debian<br />

ao invés de utilizar o fi rmware de fábrica.<br />

Instalar o Debian permite acessar<br />

o ZoneMinder através do gerenciador<br />

de pacotes e compilar o software mais<br />

facilmente na máquina NAS.<br />

A instalação do Debian em uma<br />

máquina ARM personalizada [3] pode<br />

parecer assustadora pela primeira vez.<br />

Histórias de pessoas com instalação<br />

pela metade que viram apenas “tijolos<br />

caros” são folclore comum; para tornar<br />

as coisas mais intrigantes, não temos<br />

qualquer tela ligada ao dispositivo que<br />

permita descobrir o que deu errado.<br />

Além disso, teremos que confi gurar<br />

o suporte de opções personalizadas<br />

para o hardware fornecido, como<br />

alto-falantes, LEDs e fans.<br />

Dito isto, o processo de instalação<br />

do Debian é bastante simples e<br />

<strong>Linux</strong> <strong>Magazine</strong> #95 | Outubro de 2012<br />

Figura 1<br />

provavelmente mais até que a confi -<br />

guração do ambiente de compilação<br />

necessário para ampliar o número de<br />

softwares se continuarmos a usar o<br />

fi rmware fornecido [4] . Para prosseguir,<br />

siga os seguintes passos:<br />

1. Opcionalmente, faça uma cópia<br />

de segurança do fi rmware do cartão<br />

de memória no NAS.<br />

2. Baixe o Debian fl asher, kernel,<br />

metadados, e arquivos de instalação<br />

initrd.<br />

3. Instale os arquivos na memória<br />

fl ash do NAS.<br />

4. Reinicie.<br />

5. Conecte-se via SSH no NAS e<br />

conclua o processo com a interface<br />

Figura 2<br />

Equipamentos: QNAP TS-219P II NAS, uma câmera<br />

TP-Link TL-SC3171G, e um disco de 2TB WD Green.<br />

Monitoramento com NAS | SEGURANÇA<br />

de instalação do Debian, que é baseada<br />

em console.<br />

Uma vez que o passo 5 tenha sido<br />

concluído, o programa irá reinstalar<br />

a memória do NAS para iniciar em<br />

um novo sistema Debian.<br />

Além do kernel e o initrd residente<br />

na memória fl ash do NAS, as etapas<br />

restantes para instalar o Debian são<br />

exatamente as mesmas que existem<br />

em uma máquina desktop. Como veremos<br />

mais adiante, o primeiro passo<br />

para fazer uma cópia de segurança<br />

do fi rmware existente é opcional.<br />

O instalador Debian convenientemente<br />

pega as confi gurações de<br />

hosts e de rede que havíamos feito<br />

Enviando a imagem mais recente do fi rmware do site da QNAP.<br />

61


SSEGURANÇA | Monitoramento com NAS<br />

62<br />

Figura 3<br />

Uma vez que o fi rmware é gravado em disco, confi gure seu login,<br />

localização, IP, e serviços de informação.<br />

com o fi rmware QNAP normal e as<br />

reutiliza para a instalação do Debian.<br />

A maioria das perguntas são sobre<br />

localização e como desejamos que<br />

discos e partições sejam confi gurados.<br />

Em nossa instalação do Debian<br />

“Wheezy” ( listagem 1 ), os primeiros<br />

cinco comandos criam uma cópia de<br />

segurança da memória fl ash existente<br />

em um pendrive. Na linha 6 , os quatro<br />

arquivos de instalação do Debian<br />

mencionados no passo 2 são baixados,<br />

enquanto um comando flash-debian<br />

na linha 8 nos coloca na memória fl ash<br />

do QNAP, pronto para ser carregado<br />

quando o NAS for reiniciado.<br />

Após o NAS ser reiniciado, devemos<br />

ser capazes de fazer ssh nele como installer@NAS<br />

usando a senha install . Provavelmente<br />

teremos que remover a chave<br />

do host do arquivo ~/.ssh/known_hosts<br />

para o SSH não considere que o host<br />

mudou sua chave de forma inespera-<br />

Figura 4 Iniciando a instalação do Debian via SSH.<br />

da desde a última conexão. Em seguida,<br />

o usuário deverá ver um menu de<br />

boas-vindas como o da fi gura 4 .<br />

Perto do fi nal da instalação, teremos<br />

a chance de alterar a seleção de<br />

aplicativos. É muito importante que<br />

o usuário não se esqueça de instalar a<br />

opção de servidor SSH, para que possa<br />

conectar-se facilmente no NAS quando<br />

o Debian instalado for executado.<br />

Além disso, precisaremos de um servidor<br />

online, um banco de dados SQL,<br />

e um servidor de arquivos enquanto<br />

estivermos neste menu. Apesar de um<br />

servidor de arquivos não ser realmente<br />

necessário para o ZoneMinder, se o usuário<br />

possuir algum espaço sobrando no<br />

seu disco rígido, pode desejar acessá-lo<br />

através da rede para outros fi ns.<br />

Quando a instalação estiver concluída,<br />

o instalador pede que sejam<br />

removidos todos os discos CD-ROM<br />

ou de instalação (que não temos). Na<br />

reinicialização, devemos ser capazes de<br />

fazer um ssh como root e encontrar uma<br />

ótima máquina Debian nos aguardando.<br />

Com um disco WD Green de 2TB executando,<br />

o NAS ocioso deve consumir<br />

cerca de 10 watts de energia ( tabela 1 ).<br />

Fora das cinzas<br />

Uma desvantagem de usar fi rmware<br />

personalizado em um hardware especializado<br />

é descobrir o que fazer quando as<br />

coisas dão errado. Tínhamos um drive<br />

Green de 2TB sobrando e, enquanto este<br />

artigo estava sendo escrito, descobrimos<br />

por que ele não estava em uso ativo.<br />

Depois que substituímos o kernel<br />

na memória fl ash do NAS com o kernel<br />

e a imagem initrd do Debian, o<br />

sistema queria encontrar uma instalação<br />

Debian para inicializar a partir<br />

do disco rígido. O problema era que<br />

o disco não queria mais funcionar e,<br />

para os objetivos desta análise, não tínhamos<br />

nos dado ao trabalho de criar<br />

um RAID espelhado agradável para o<br />

caso de uma simples falha de disco.<br />

Esta situação parece ser um cenário<br />

do pior caso: um disco rígido<br />

danifi cado; o fi rmware na memória<br />

fl ash sobrescrito com software que<br />

espera que o disco esteja por ali; sem<br />

inicialização; sem visor.<br />

Felizmente, mesmo quando sobrescrevemos<br />

a memória fl ash do equipamento<br />

QNAP, podemos colocá-lo<br />

em um modo que tentará recuperar a<br />

partir da rede a informação que deve<br />

estar na memória fl ash [5] . Melhor<br />

ainda, o QNAP oferece uma imagem<br />

de boot do <strong>Linux</strong> que contém<br />

um servidor TFTP para transmitir a<br />

imagem fl ash para o NAS.<br />

Ao ligar o laptop diretamente no<br />

NAS, iniciar a partir do disco de<br />

recuperação no laptop e segurar o<br />

botão reset enquanto liga o NAS, o<br />

usuário poderá ativar esse modo de<br />

recuperação. Uma vez que o NAS<br />

ligar, serão ouvidos bipes e diferentes<br />

cores LEDs piscarão para que esteja<br />

ciente de que algo está acontecendo;<br />

no fi nal, terá o NAS com o mesmo<br />

www.linuxmagazine.com.br


software no fi rmware de quando o<br />

comprou, poupando-o de um NAS<br />

personalizado que não iria inicializar.<br />

Em seguida, podemos colocar o instalador<br />

do Debian de volta na memória<br />

fl ash do NAS e escolher com mais<br />

sabedoria na pilha de discos rígidos<br />

disponíveis. É claro que, em produção,<br />

todo mundo usa um RAID espelhado<br />

ou tem um sólido, automatizado e testado<br />

sistema de backup incremental<br />

em funcionamento, não é mesmo?<br />

ZoneMinder<br />

As principais dependências do Zone-<br />

Minder são Perl, MySQL, OpenSSL,<br />

a biblioteca JPEG, alguns módulos<br />

Perl, e (opcionalmente) FFmpeg. O<br />

ZoneMinder inclui código PHP, C++<br />

e Perl. Depois de instalar o Debian no<br />

sistema, podemos tirar proveito dos<br />

repositórios de pacotes para instalar o<br />

ZoneMinder sem ter que compilá-lo. A<br />

instalação é simples como chamar um :<br />

apt-get install zoneminder<br />

resultando em cerca de 170 MB de<br />

espaço adicional usado no NAS.<br />

Para iniciar a interface online do<br />

ZoneMinder, temos que criar um<br />

link do arquivo de confi guração do<br />

site no diretório conf.d do Apache:<br />

# ln -s /etc/zm/apache.conf /etc/<br />

apache2/conf.d/zoneminder.conf<br />

# /etc/init.d/apache2 restart<br />

Com este link no lugar e o Apache<br />

reiniciado, devemos ver a interface<br />

online do ZoneMinder em<br />

http://NAS/zm/, supondo que NAS<br />

é o endereço IP da unidade NAS.<br />

O botão Add New Monitor na parte<br />

inferior da interface do ZoneMinder<br />

permite que adicionemos uma nova<br />

câmera no sistema ( fi gura 5 ). Para este<br />

exemplo, usaremos duas câmeras: a<br />

TP-Link TLSC3171G 640x480 IP e<br />

a Logitech C910 USB 1080p . A parte<br />

complicada na confi guração de<br />

câmeras é saber o que o caminho<br />

do host remoto ( Remote Host Path )<br />

deve ser e ter a certeza de que a re-<br />

<strong>Linux</strong> <strong>Magazine</strong> #95 | Outubro de 2012<br />

solução da imagem, largura e altura<br />

em pixels coincide com a saída da<br />

câmera ( fi gura 6 ).<br />

Além disso, precisamos saber o<br />

endereço IP e a porta da câmera<br />

e, via HTTP, pode ser necessário<br />

entrar com o URL para começar a<br />

usar os dados da câmera. Para uma<br />

câmera de 640x480, espere utilizar<br />

cerca de 10% da CPU somente do<br />

ZoneMinder para transmitir dados<br />

a uma baixa taxa de quadros [6] .<br />

Adicionar zonas para detectar movimento<br />

em áreas críticas da imagem<br />

irá adicionar mais uso de CPU neste<br />

valor. Nossa confi guração NAS teve<br />

que usar até 25% da CPU para atender<br />

ao streaming de vídeo a partir de<br />

uma webcam com 640x480 para o<br />

Firefox ( fi gura 7 ).<br />

Com a câmera TP-Link apontada<br />

para uma cena escura ao ar livre<br />

à noite, a detecção de movimento<br />

manteve-se em cerca de 15% da<br />

CPU para quadro cheio ( full frame<br />

– 640x480) de detecção em uma taxa<br />

de quadros baixa ( tabela 2 ).<br />

Memória<br />

compartilhada<br />

O ZoneMinder precisa manter as<br />

imagens recentes que recebe das câmeras<br />

em algum lugar na memória.<br />

Nas versões anteriores, o ZoneMinder<br />

usava memória compartilhada<br />

para armazená-las. Agora, ele cria e<br />

usa arquivos de memória mapeados<br />

em /dev/shm . Independentemente de<br />

qual sistema esteja em uso, pode ser<br />

necessário adequar o NAS para fazer<br />

o armazenamento correto de memória<br />

disponível para estas imagens.<br />

O ZoneMinder 1.25.0 do Debian<br />

Wheezy utilizado neste artigo usa o<br />

dospositivo /dev/shm para as imagens.<br />

A instalação padrão criou um sistema<br />

de arquivos tmpfs com um tamanho<br />

limite de 100MB. O ZoneMinder<br />

precisa de cerca de 100MB para uma<br />

única câmera de 1280x720, e cerca<br />

de 35MB para uma única câmera de<br />

Figura 5<br />

Monitoramento com NAS | SEGURANÇA<br />

Inclusão de uma nova<br />

câmera no ZoneMinder.<br />

640x480. Para calcular a quantidade<br />

de memória necessária para o armazenamento<br />

de imagens da câmera,<br />

encontre a memória (bytes) para um<br />

único quadro: largura(px) x altura(px)<br />

x 3(RGB). Estas imagens são armazenadas<br />

numa área de buffer na memória.<br />

O padrão que utilizamos foi<br />

de 40 imagens no buffer para uma<br />

câmera. O comando :<br />

mount -o remount,size=256m /dev/shm<br />

vai dedicar mais memória para imagens<br />

do ZoneMinder. Para fazer isso funcionar<br />

após uma reinicialização, edite<br />

o arquivo /etc/default/tmpfs e defi na<br />

shm_size para o tamanho que desejar.<br />

Para economizar memória para<br />

câmeras maiores, ajuste o tamanho<br />

de buffer para quadros de imagem<br />

mostrado na guia Buffers das confi -<br />

Figura 6 Confi guração de uma câmera<br />

de rede no ZoneMinder.<br />

63


SSEGURANÇA | Monitoramento com NAS<br />

64<br />

gurações da câmera. Descobrimos<br />

que para usar menos quadros tivemos<br />

que excluir, por exemplo, zm.mmap.2<br />

de /dev/shm e fazer o ZoneMinder recriar<br />

um novo arquivo menor quando<br />

aceitamos a confi guração da câmera.<br />

Usar 20 quadros para uma câmera de<br />

720p requer apenas 53MB de RAM.<br />

Como detectar<br />

eventos<br />

O que faz o ZoneMinder interessante<br />

é a sua capacidade de detectar movimento<br />

em áreas críticas de um quadro<br />

da câmera e gravar o vídeo automaticamente<br />

quando o movimento ocorre.<br />

Depois de colocar a câmera no modo<br />

de detecção de movimento clicando<br />

no link Função da câmera na página<br />

inicial de instalação do ZoneMinder,<br />

podemos mascarar partes do quadro<br />

de vídeo clicando no link Zonas da<br />

câmera. Desta forma, o ZoneMinder<br />

ignora movimento fora da sua área<br />

de interesse.<br />

Muitos fatores determinam a quantidade<br />

de CPU que é necessária<br />

para a detecção de movimentos:<br />

o tamanho da imagem da câmera,<br />

imagens em cores ou imagens em<br />

escala de cinza, o número de quadros<br />

por segundo de um processo,<br />

a dimensão das zonas de detecção,<br />

e os parâmetros utilizados no algoritmo<br />

de detecção.<br />

Watts Ação<br />

1 NAS desligado, mas com cabo plugado<br />

7 Disco com giro baixo e nenhum cabo de rede<br />

8 Disco com giro baixo<br />

10 Em execução com o disco girando<br />

13 Discos girando e executando o OpenSSL<br />

Tabela 1 Uso de energia com o fi rmware de fábrica .<br />

Quando clicamos no nome de uma<br />

câmera no ZoneMinder, é mostrada<br />

uma visualização ao vivo do que a<br />

câmera está captando, junto com<br />

uma lista dos eventos que foram detectados<br />

recentemente e a capacidade<br />

de forçar o disparo de um alarme. O<br />

disparo de um alarme tem o mesmo<br />

efeito que forçar o ZoneMinder a<br />

pensar que um movimento signifi -<br />

cativo ocorreu na câmera.<br />

Em nosso primeiro teste, usamos<br />

uma câmera TPLink com 640x480 a<br />

5fps. O monitoramento usou 15% da<br />

CPU, e forçar um estado de alarme<br />

causou um salto de até 26% da CPU.<br />

Após a confi rmação de um alarme<br />

disparado pelo ZoneMinder indicando<br />

movimento real na câmera,<br />

foi confi rmado o mesmo salto para<br />

26% de uso de CPU no NAS.<br />

Monitoramento com uma C910<br />

Logitech através da rede com resolução<br />

de 1280x720 a 10fps consumiu<br />

72% de CPU do NAS. Baixando para<br />

2fps com a mesma câmera usou até<br />

22% da CPU. A visualização ao vivo a<br />

2fps consumiu um adicional de 40%<br />

de CPU. Claramente, câmeras de<br />

monitoramento de 720p a 30fps estão<br />

além do que a CPU no NAS pode<br />

segurar, e detecção de movimento a<br />

10fps provavelmente não é possível,<br />

mas se voltarmos alguns quadros por<br />

segundo com a mesma câmera, pode<br />

ser bom a 720p se o usuário desejar<br />

utilizar apenas uma câmera.<br />

% CPU RAM (MB) Tarefa (Processo)<br />

6-12 43 Monitorar apenas à noite (zmc)<br />

15-25 41 Visualizar no Firefox (nph-zms)<br />

15 42 Detecção de movimento, quadro completo, à noite (zma)<br />

Tabela 2 Uso de CPU e RAM da TP-Link (5fps) .<br />

Uma câmera USB ultrabarata com<br />

640x480 que só pode produzir vídeo<br />

YUYV conectada à porta USB2 do<br />

NAS sendo usada a 5fps precisa de<br />

cerca de 15% da CPU para monitorar<br />

e 50% para transmitir. A detecção de<br />

movimento em quadro cheio nesta<br />

câmara requer um adicional de 40%<br />

de CPU, que tem picos de até 80%<br />

se um estado de alarme é disparado.<br />

O uso da CPU não mudou muito<br />

entre as predefi nições rápida e melhor<br />

com baixa, média e altas sensibilidades.<br />

Reduzir para uma área de<br />

alarme de 100x100 diminuiu o uso<br />

da CPU a 35%.<br />

Mudar a câmera ligada localmente<br />

para a C910 da Logitech e<br />

tentar a resolução de 1280x720 a<br />

5fps dividiu o uso de CPU 50-50<br />

entre monitorar a câmera e verifi -<br />

car movimentos nos quadros. Tal<br />

divisão de 50-50 parecia suspeita, já<br />

que a detecção de movimento deve<br />

ser mais custosa do que o simples<br />

monitoramento. Depois de voltar<br />

para 3fps, o monitoramento usou<br />

apenas 30% da CPU e a detecção<br />

de movimento usou 68%. Depois de<br />

voltar para 640x480 a 4 fps, o monitoramento<br />

consumiu 12% de CPU<br />

e a detecção de movimento, 28%.<br />

Logo, se o usuário quiser usar este<br />

processador, qualquer coisa acima<br />

de 640x480 é susceptível a causar<br />

problemas de desempenho.<br />

Mergulho no código<br />

Pelo fato de não vermos muita diferença<br />

no uso de CPU para cada um dos<br />

algoritmos de detecção de movimento<br />

que o ZoneMinder oferece, decidimos<br />

dissecar um pouco o código. O<br />

código chama Monitor::DetectMotion()<br />

a cada quadro para trabalhar a pontuação<br />

(quantidade de movimento)<br />

e se um alarme foi acionado. Tendo<br />

esse método retornar “sem alarme”<br />

de imediato ao invés de detecção de<br />

movimento real resultou em cerca de<br />

8% da CPU a ser utilizada para uma<br />

câmera de 640x480 executando a 6fps.<br />

www.linuxmagazine.com.br


Uma das primeiras coisas que DetectMotion()<br />

faz é criar uma imagem<br />

delta, medindo o quanto o quadro<br />

atual difere de um quadro de referência.<br />

A imagem delta apenas registra<br />

a intensidade da diferença para cada<br />

pixel em vez da diferença de cada<br />

vermelho, verde e azul. Para fazer a<br />

imagem delta e excluí-la novamente<br />

antes de retornar nenhum alarme,<br />

15% da CPU foi necessária – antes<br />

de qualquer detecção de movimento<br />

ter ocorrido.<br />

O núcleo do método Imagem::Delta()<br />

cria uma imagem delta e registra quanto<br />

cada pixel é diferente de uma imagem<br />

de referência:<br />

...<br />

red = y_r_table[*psrc++ - *pref++];<br />

green = y_g_table[*psrc++ - *pref++];<br />

blue = y_b_table[*psrc++ - *pref++];<br />

*pdiff++ = abs_table red + green + ;<br />

...<br />

As variáveis são pref , a imagem<br />

de referência; psrc , o quadro atual<br />

e pdiff , a imagem delta. Este código<br />

pode ser modifi cado e executado<br />

mais rapidamente em CPUs ARM<br />

com a extensão NEON [7] . De acor-<br />

<strong>Linux</strong> <strong>Magazine</strong> #95 | Outubro de 2012<br />

do com o comando /proc/cpuinfo ,<br />

a CPU neste equipamento QNAP<br />

só tinha disponível as extensões swp<br />

half thumb fastmult edsp .<br />

Pelo fato de os valores de referência<br />

apresentados na tabela 2 variarem<br />

mais com a resolução de imagem<br />

e taxa de quadros, apenas preparar<br />

e produzir todos os quadros estava<br />

consumindo uma quantidade substancial<br />

da CPU.<br />

Considerações fi nais<br />

Os chips ARM top de linha que<br />

equipam alguns hardwares NAS<br />

modernos fornecem uma plataforma<br />

para computação em tempo real<br />

bastante interessante, com consumo<br />

de energia reduzido. A CPU<br />

de 2GHz Kirkwood do NAS testada<br />

aqui poderia realmente apenas<br />

lidar com detecção de movimento<br />

em uma taxa de quadros baixa em<br />

duas câmeras IP com 640x480 ao<br />

mesmo tempo.<br />

Tenha em mente que o dispositivo<br />

pode fazer isso com menos de<br />

15 watts, incluindo o disco rígido.<br />

Quando não há eventos acontecen-<br />

Figura 7 Monitoramento de uma peça de madeira com o ZoneMinder no NAS.<br />

Monitoramento com NAS | SEGURANÇA<br />

do, o equipamento pode cair para<br />

menos de 10 watts enquanto ainda<br />

monitora ativamente as câmeras em<br />

busca de movimentos interessantes.<br />

Monitoramento de câmera é normalmente<br />

uma proposta de três<br />

turnos. A próxima vez que o leitor<br />

considerar realocar um PC com consumo<br />

de 75 watts a 100 watts para este<br />

propósito, poderá considerar a alternativa<br />

NAS, já que a mesma poderia<br />

muito bem pagar-se nos primeiros<br />

12-18 meses se levarmos em conta a<br />

economia de energia.<br />

Com uma instalação Debian, o<br />

NAS tem acesso a uma quantidade<br />

enorme de pacotes de software<br />

que permitem a personalização<br />

do dispositivo para lidar com uma<br />

tarefa específica. ■<br />

Mais informações<br />

[1] Página do QNAP TS-<br />

219P II: http://web.<br />

qnap.com/pro_detail_<br />

feature.asp?p_id=211/<br />

[2] ZoneMinder: http://<br />

www.zoneminder.com/<br />

[3] Debian no QNAP NAS: http://<br />

www.cyrius.com/debian/<br />

kirkwood/qnap/ts-219/<br />

[4] Documentação do instalador<br />

do Debian ARM: http://www.<br />

debian.org/releases/lenny/<br />

arm/install.pdf.pt_BR<br />

[5] Recuperação de fi rmware do<br />

QNAP: http://wiki.qnap.<br />

com/wiki/Firmware_Recovery/<br />

[6] Discussão sobre uso de CPU<br />

pelo ZoneMinder: http://www.<br />

zoneminder.com/wiki/index.<br />

php/FAQ#Why_is_ZoneMinder_<br />

using_so_much_CPU.3F<br />

[7] Arquitetura ARM: http://<br />

en.wikipedia.org/wiki/<br />

ARM_architecture<br />

Gostou do artigo? igo?<br />

Queremos ouvir sua opinião. nião.<br />

Fale conosco em m<br />

cartas@linuxmagazine.com.br ne.com<br />

Este artigo no nosso osso site: s e:<br />

http://lnm.com.br/article/6938<br />

r/artic 693<br />

65

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!