Olhar penetrante - Linux Magazine Online
Olhar penetrante - Linux Magazine Online Olhar penetrante - Linux Magazine Online
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
- Page 2 and 3: IP via DHCP, após o qual podemos e
- Page 4 and 5: software no fi rmware de quando o c
- Page 6: Uma das primeiras coisas que Detect
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