Você está na página 1de 8

ESCOLA SUPERIOR ABERTA DO BRASIL – ESAB

MONITORANDO UM DATACENTER UTILIZANDO O MICROCONTROLADOR


ARDUINO E O PROTOCOLO SNMP

Nome do Aluno: Fabio Alves Rodrigues


Nome do Orientador: Janaina Costa Binda

Resumo
Este artigo compara duas soluções para monitorar uma sala de servidores ou um centro de
processamento de dados (Datacenter) utilizando o microcontrolador Arduino Mega 2560 e o
Arduino Yún. Para fazer as medições será utilizado o sensor de temperatura e umidade
DHT11. As informações monitoradas serão enviadas via rede TCP/IP utilizando o protocolo
SNMP.
Palavras-chave: Arduino. Yún. Microcontrolador. SNMP. Agentuino. DHT11.
1 Introdução
A informática hoje está presente em, praticamente, todas as empresas e os Datacenters
estão presentes nas empresas de médio porte e de grande porte. Apesar de todo o investimento
realizado para manter o ambiente em condições ideais para o pleno funcionamento dos
computadores e equipamentos de rede, uma das maiores dificuldades é monitorar as
condições de temperatura e umidade.
O Centro de Processamento de Dados (CPD), conhecido em inglês como Data Center,
é o local onde são concentrados os equipamentos de processamento e armazenamento de
informações de médias e grandes empresas, a fim de permitir o funcionamento eficiente das
redes de computadores. O CPD é composto por diversos armários metálicos (racks) e no
interior destes temos computadores ou equipamentos de rede que liberam uma enorme
quantidade de calor. Caso não haja um sistema de refrigeração confiável, é possível que
ocorra um superaquecimento, acarretando sérios problemas para os equipamentos e uma
possível perda dos dados armazenados.
Falhas de hardware provocadas por aquecimento excessivo são uma das principais
causas de paralisação (Downtime). Quando os servidores aquecem acima da temperatura de
operação recomendada pelo fabricante, eles desligam, implicando em grandes riscos para
qualquer Datacenter ou sala de servidores. Imagine se o equipamento que está executando o
seu firewall superaquece e desliga. A sua rede perderá contato com a Internet e a empresa terá
perdas financeiras significativas. Esse é o motivo de o resfriamento ser essencial para a
manutenção da disponibilidade de um sistema. O resfriamento de precisão engloba o ar
condicionado, ventilação e controle de umidade para equipamentos de TI. É muito diferente
do resfriamento para conforto térmico, que é basicamente o ar condicionado para pessoas.
Para garantir que o seu equipamento de TI não aqueça acima de limites aceitáveis, você
precisa ter capacidade para resfriar a sua sala de servidor, aumentar o fluxo de ar dentro dos
racks e redirecionar o ar quente para longe dos dispositivos de TI. Mais especificamente, para
garantir o nível ótimo de disponibilidade do sistema, o ar na quantidade e na temperatura
corretas precisa atingir a parte certa do seu rack (na frente dos servidores).
Para realizar este monitoramento utilizaremos duas versões do microcontrolador
Arduino (Mega2560 e Yún), sensores de temperatura e umidade DHT11 e o Agentuino que é
a biblioteca SNMP para o Arduino. Dessa forma pretendemos demonstrar a capacidade desses
microcontroladores para monitorar as variáveis ambientais e enviar os dados via rede Ethernet
para os servidores de monitoramento utilizando o protocolo SNMP.

2. Revisão de literatura
Tecnologias Empregadas
2.1. Microcontrolador Arduino
Arduino é uma plataforma de prototipagem eletrônica criado por Massimo Banzi e
David Cuartielles em 2005, na Itália, com objetivo de permitir o desenvolvimento de sistemas
de controle interativos, de baixo custo e acessível a todos. O Arduino utiliza um
microcontrolador Atmel AVR com suporte de entrada/saída embutido e uma linguagem de
programação padrão que é essencialmente C/C++. No site ARDUINO.CC é possível fazer
download do ambiente de desenvolvimento integrado (IDE) do Arduino, este IDE é um
compilador gcc(C e C++) que usa uma interface gráfica construída em JAVA.
O Arduino IDE é uma aplicação multiplataforma escrita em Java derivada dos projetos
Processing e Wiring. Inclui um editor de código com recursos de realce de sintaxe, parênteses
correspondentes e identação automática, sendo capaz de compilar e carregar programas para a
placa com um único clique. (ARDUINO IDE, 2015)
Figura 1– Família de Microcontroladores Arduino. Fonte: www.robotshop.com
2.1.1. Arduino Mega 2560
O Arduino Mega 2560 é uma placa baseada no microcontrolador ATmega 2560. Esta
placa possui 54 pinos de entradas/saídas digitais, 16 entradas analógicas, 4 UARTs (portas
seriais de hardware), um oscilador de cristal de 16 MHz, uma conexão USB, uma entrada de
alimentação, uma conexão ICSP e um botão de reset. O Arduino Mega2560 pode ser
alimentado pela conexão USB ou com uma fonte externa. A entrada de alimentação é
selecionada automaticamente. (ARDUINO MEGA 2560, 2015)
2.1.2. Arduino Yún
O Arduino Yún é um microcontrolador baseado no ATmega32u4 (datasheet) e no
Atheros AR9331. O processador Atheros suporta uma distribuição Linux baseada no
OpenWRT chamada Linino. A placa tem suporte embarcado a ethernet e WiFi, uma porta
USB-A, um slot para cartão micro-SD, 20 pinos de entrada e saída digitais (dos quais 7
podem ser utilizados como saídas PWM e 12 como entradas analógicas), um cristal oscilador
de 16MHz, uma conexão USB, um barramento ICSP, e 3 botões de reset. O Yún se distingue
das outras placas Arduino pelo fato de poder se comunicar com a distribução Linux
embarcada, oferecendo um computador interconectado com a facilidade do Arduino.
(ARDUINO YÚN, 2015)
2.2. Biblioteca Agentuino
A plataforma Arduino pode ser extendidaestendida através do uso de bibliotecas, como
a maioria das plataformas de programação. Bibliotecas fornecem funcionalidades extras ao
usá-las nos ‘sketches’, por exemplo, trabalhar com hardware ou manipular dados. Várias
bibliotecas são instaladas junto com o IDE mas, mas podemos fazer download ou criar nossas
próprias bibliotecas. (ARDUINO IDE, 2015)
A biblioteca Agentuino é uma biblioteca de programação em C/C++ que implementa o
protocolo SNMP na plataforma Arduino. Ao ser carregada no Arduino, este passa a funcionar
com um agente e envia pacotes SNMP, via rede Ethernet, para o servidor de monitoramento.
Os tipos de PDU suportados pelo Agentuino são: GET-Request, GET-NEXT-Request, SET-
Request e Response. O Agentuino não envia Traps porque este ainda não foi implementado no
código o que deve ocorrer num futuro próximo. O projeto da biblioteca Agentuino vem sendo
desenvolvimento pela comunidade que apoia o Arduino sob a licença GNU GPL v2, ou seja,
open source. Mais informações sobre esta biblioteca SNMP podem ser encontradas nos sites
https://code.google.com/p/agentuino/ e https://github.com/1sw/Agentuino. (AGENTUINO,
2015)
2.3. Sensores e “Shields”
O Arduino e seus clones fazem uso de shields (escudos, em inglês) que são placas de
circuito impresso normalmente fixadas no topo do Arduino através de uma conexão
alimentada por pinos-conectores. São expansões que disponibilizam várias funções
específicas, desde a manipulação de motores até sistemas de rede sem fio. Com eles
conseguimos, por exemplo, fazer com que o Arduino se comunique numa rede Ethernet ou via
Bluetooth com um celular Android.
O Arduino Ethernet Shield permite que uma placa Arduino se conecte com uma rede
ethernet via cabo através de uma conexão RJ45 e consequentemente pode ser conectar com a
Internet. Esta placa é baseada no chip ethernet Wiznet W5100 que fornece uma camada de
rede IP através dos protocolos TCP e UDP. Este shield suporta até 4 quatro soquetes de
conexões simultâneas. Para escrever sketches (programas para o Arduino) que conectam o
Arduino numa rede ethernet deve-se incluir a instrução #include <Ethernet.h> o que faz com
que a biblioteca Ethernet seja compilada. (WIZNET, 2015)
O DHT11 é um sensor digital de temperatura e umidade de custo baixo. Ele usa um
sensor capacitivo de umidade e um termístor para medir o ar ambiente e exibe como saída um
sinal digital no pino de dados. É bastante simples de usar mas, mas requer ‘timing’ para
adquirir dados pois a sua única desvantagem é só poder obter novos dados a cada 2 segundos.
O DHT11 é bom para medir umidade de 20-80% com 5% de precisão e para medir
temperatura de 0-50% com precisão de ±2°C. (ADAFRUIT,2015)
2.4. Protocolo SNMP
O SNMP (Simple Network Management Protocol – protocolo de gerenciamento de
redes simples) é um framework para o gerenciamento de dispositivos de rede que utilizem
protocolos TCP/IP. O SNMP usa o conceito gerente e agente, isto é, um gerente, em geral um
host, controla e monitora um conjunto de agentes, normalmente roteadores e switches.
(FOROUZAN, 2008)
O SNMP opera na camada de aplicação (Camada 7 do modelo OSI). O agente SNMP
recebe requisições do gerente na porta UDP 161 e responde depois de processada a
informação requisitada. O gerente recebe notificações (Traps) na porta UDP 162.
Para que esta consulta possa ser feita, o gerente tem que conhecer as informações que
podem ser obtidas do agente SNMP. Isso é garantido pelo uso de algo semelhante a um
dicionário de dados: MIB e OID. A MIB é base de informações de gerenciamento e um OID é
o identificador único dentro da MIB. (4LINUX, 2015)
2.5. Norma EIA/TIA 942 – Datacenters
Segundo o TIA, A temperatura e umidade devem ser controladas para fornecer uma
faixa de operação continua de temperatura e umidade:
 Temperatura do ar: 20o C até 25° C;
 Umidade Relativa: 40% to 55%;
 Ponto de orvalho máximo: 21° C;
 Taxa de variação máxima: 5° C por hora;
 Equipamentos de umidificação e desumidificação podem ser requeridos dependendo
das condições ambientais do local.
A temperatura e umidade do ambiente devem ser medidas depois que os equipamentos
estiverem em operação. A medida deve ser feita a uma distância de 1,5 metros acima do nível
do piso a cada 3 a 6 metros ao longo da linha central de corredores frios e em qualquer lugar
de entrada de ar dos equipamentos em operação. As medidas de temperatura devem ser
tomadas em vários locais de entrada de ar dos equipamentos que possam ter problemas de
resfrigeração. (TIA-942, 2005)

3 Solução Proposta

3.1. Utilizando o Arduino Mega


Para esta solução foi utilizado o microcontrolador Arduino Mega 2560 com o Ethernet
Shield W5100 e a biblioteca Agentuino, além do sensor DHT11. As informações SNMP tanto
as OIDs básicas (sysName, sysLocation, sysUpTime, etc.) como as OIDs customizadas
(Temperatura e Umidade) foram definidas na programação do Arduino assim como as
informações de rede (IP, Máscara e Gateway).
Foi utilizado um cabeamento UTP para conectar o Ethernet Shield do Arduino com a
rede local. Como NMS (Network Management Station) ou estação gerente, podemos utilizar
servidores Zabbix ou Nagios que são softwares de monitoramento SNMP.

Figura 2– Ambiente de monitaramento com o Arduino Mega

Foi utilizado o suíte NET-SNMP para realizarmos a realização dos testes de


funcionamento do SNMP. Este suíte é composto por um conjunto de utilitários que operam
com o protocolo SNMP, com ele é possível testar e até configurar os parâmetros dos
equipamentos. O snmpget.exe é o utilitário usado para realização uma requisição GET. O
formato do comando é “snmpget+[versão do SNMP] + [Nome da comunidade]+[IP do
dispositivo] + OID”.
Figura 3– Teste de SNMP Arduino Mega

3.2. Utilizando o Arduino Yún


Para esta solução utilizamos utilizou-se apenas o microcontrolador Arduino Yún e o
sensor DHT11. Como o Yún possui suporte a rede ethernet e wifi (sem fio) e não foi precisoa
utilizar o Ethernet Shield e também não foi necessário a biblioteca Agentuino pois, pois o
linux do Yún possui um agente SNMP. As OIDs básicas são configuradas diretamente no
Linux enquanto que as OIDs customizadas foram definidas na programação do Arduino. A
configuração de rede foi realizada no linux.
OArduino Yún se comunica com a rede através de um roteador WIFI. Como NMS
(Network Management Station) ou estação gerente, podemos e pode-se utilizar servidores
Zabbix ou Nagios que são softwares de monitoramento SNMP.

Figura 4– Ambiente de monitaramento com o Arduino Yún

Segue abaixo imagem referente ao teste de SNMP do Arduino Yún utilizando o suíte
NET-SNMP:
Figura 5– Teste de SNMP Arduino Yún

4 Conclusão
Como principal vantagem do Arduino Mega 2560 podemos citar o custo mais baixo
porém exige o uso do Ethernet Shield e com isso não teria muita flexibilidade de
posicionamento dentro do CPD tanto pela dependência do cabo de rede quanto as dimensões
do conjunto Arduino + Ethernet Shield. O uso da biblioteca Agentuino também pode ser
considerado como uma vantagem para o Mega 2560 pois é mais fácil de definir parâmetros
personalizados.
Já o Arduino Yún tem como vantagem o acesso via WIFI e a facilidade de
configuração do SNMP mas é mais difícil de customizar. Além disso o Yún possui um
software embutido chamado Temboo que realiza a interface entre diversas aplicações e sites
entre elas Twitter, Facebook, Google Drive, Dropbox e ainda permite gravar informações em
banco de dados MySQL.
Neste trabalho utilizamos o sensor DHT11 para fazer as medições das variáveis do
ambiente e os microcontroladores Arduino Mega 2560 com a placa Ethernet shield W5100 e o
Arduino Yún. Tentamos comparar os dois microcontroladores de forma a apresentar duas
opções possíveis, qual delas é a melhor depende de diversos fatores que cada ambiente e da
pessoa que realizará a configuração.

Abstract
This article compares two solutions to monitor a server room or a data processing center
(Datacenter) using the Arduino microcontroller Arduino Mega 2560 and Yun. To make the
measurements will be used the temperature and humidity sensor DHT11.The monitored
information will be sent via TCP / IP network using SNMP.
Keywords
Arduino. Yún. Microcontrolador. SNMP. Agentuino. DHT11.

Referências
TANENBAUM, Andrew S.; WETHERALL, David J. Redes de Computadores. 5.ed. São
Paulo: Pearson Education BR,2011.

FOROUZAN, Behrouz A. Comunicação de dados e redes de computadores. 4.ed. São


Paulo: McGraw-Hill, 2008.

McROBERTS, Michael. Arduino básico. 1.ed. São Paulo : Novatec Editora, 2011.
BANZI, Massimo. Getting Started With Arduino. 2.ed. Sebastopol,CA, USA. O´Reilly
Media Inc, 2011.
MAURO, Douglas R.; SCHMIDT, Kevin J. Essential SNMP. 2.ed. Sebastopol,CA, USA. O
´Reilly Media Inc, 2005.
TIA-942. Telecommunications Infrastructure Standard for Data Centers. TIA. Apr 12,
2005.
ARDUINO YÚN. Overview. Disponível em:
<https://www.arduino.cc/en/Products/ArduinoYUN> Acesso em: 01 out 2015.
ARDUINO MEGA 2560. Overview. Disponível em:
<https://www.arduino.cc/en/Main/ArduinoBoardMega2560> Acesso em: 01 out 2015.
ARDUINO IDE. Arduino Software (IDE). Disponível em:
<https://www.arduino.cc/en/Guide/Environment> Acesso em: 01 out 2015.
4LINUX. O que é SNMP. Disponível em: <http://www.4linux.com.br/o-que-e-snmp> Acesso
em: 01 out 2015.
ADAFRUIT. DHT11 Basic temperature-humidity sensor. Disponível em:
<www.adafruit.com/products/386 > Acesso em: 01 out 2015.
AGENTUINO. Introduction. Disponível em: < http://code.google.com/p/agentuino/> Acesso
em 01 out 2015.
WIZNET W5100. Arduino Ethernet Shield. Disponível em:
<http://www.arduino.cc/en/Main/ArduinoEthernetShield> Acesso em 01 out 2015.