Mostrando postagens com marcador Open Source. Mostrar todas as postagens
Mostrando postagens com marcador Open Source. Mostrar todas as postagens

segunda-feira, 10 de julho de 2017

Redes de Sensores Sem Fio com Protocolo Radiuino Emulada no Arduino

Introdução

O Radiuino pode ser definido como um protocolo de comunicação para Redes de Sensores Sem Fio, que implementa um pacote de comunicação de 52 bytes. Ele é estruturado em uma pilha de protocolos com 5 camadas: Física, MAC, Rede, Transporte e Aplicação, esta estrutura é conceitualmente equivalente à pilha TCP/IP.

Existem duas bibliotecas para serem utilizadas no Arduino, a primeira é a biblioteca Radiuino, que apresenta os Firmwares de maneira transparente, permitindo ao usuário entender todo o processo de comunicação dos protocolos em cada camada. Isso permite que o usuário construa redes de comunicação sem fio customizadas para cada situação e ambiente, além de permitir aos estudantes alterar parâmetros diversos no ambiente e acompanhar o comportamento da rede, comparando os conhecimentos teóricos, com a prática.

A segunda biblioteca é o Radiuino4App, cujo objetivo é facilitar a utilização de aplicações em redes de sensores sem fio, para os usuários que não tem interesse em entender como a rede funciona, ou precisam de um ambiente de demonstração de conceito, por exemplo, onde a uma rede básica atende a demanda. Nessa biblioteca os Firmwares apresentam apenas configurações básica, ocultando o restante das opções. Nesse cenário, é criada automaticamente uma rede estrela, onde um computador envia um pacote de 52 bytes e o nó sensor devolve um pacote de 52 bytes. É possível colocar até 255 sensores nessa rede. Permitindo aos usuários focaram na aplicação sem se aprofundarem nas questões de rede.

O que é RSSI?

A sigla RSSI significa Received Signal Strength Indicator, se traduzirmos seria algo como a indicação de força/intensidade do sinal recebido, esse valor é muito importante para quem está olhando para a rede de sensores sem fio, pois a intensidade do sinal vai interferir diretamente na perda ou não de pacotes, o que dependendo do cenário e da aplicação, pode ser um problema a curto, médio ou longo prazo. A taxa de perda de pacotes - PER (Packet Error Rate) é o primeiro parâmetro que o responsável por uma rede de sensores sem fio irá consultar.

Objetivo

O objetivo é possuir uma rede de sensor sem fio emulada, utilizando o protocolo de comunicação Radiuino.

O Conceito de Repetidor

Quando possuímos necessidades como alcançar distâncias maiores, locais sem visada direta, ou mesmo criar uma extensão da rede, e não desejamos ou não temos condições de realizar a troca de equipamentos de rádio, podemos utilizar um repetidor. A base envia o sinal ao repetidor, que recebe e processa o sinal, e, em seguida, envia os pacotes ao seu destino final.

Porque Utilizar uma Rede Emulada?

Montar e calibrar uma rede de sensores sem fio real, realizar os testes e desmontá-la, a cada nova rodada de testes pode ser uma tarefa árdua. Para muitos assuntos que estudamos em redes de comunicação de dados como, por exemplo, técnicas de roteamento, softwares de monitoramento, e etc; Não é preciso montar uma rede real, uma rede emulada atende perfeitamente a fase de desenvolvimento e testes. Uma vez validado o cenário no ambiente emulado, partimos para os testes em ambiente real.

Material Necessário

O Ambiente Emulado

Como pode ser observado na figura 01, teremos uma base que se comunica com um repetidor, que repassa os dados para o sensor de destino, o número de sensores é definido no Script Python. Em cada sensor coletaremos os dados: Temperatura, Umidade e Luminosidade. Além da RSSI de UpLink e DownLink de cada enlace.
Figura 01
A figura 02 detalha o fluxo de dados em cada etapa do processo.
Figura 02
Exemplo de Coleta dos dados no terminal
Coleta de Dados no Terminal
Exemplo de Coleta dos dados na ferramenta de Gerencia de Redes Zabbix
Mapa da Rede de Sensores sem Fio Representada no Zabbix

Arquivos Fonte

Todos os arquivos, incluindo a parte do Zabbix, estão disponíveis aqui.

Agradecimentos


Queria agradecer ao meu Orientador Prof. Dr. Omar C. Branquinho por todo o conhecimento que vem compartilhando comigo desde a nossa primeira conversa, quando eu não entendia absolutamente nada de redes de sensores sem fio.
Ao meus amigos Eng. Raphael Montali da Assumpção e Eng. Guilherme Lopes por todas as dicas, conversas e troca de idéias, e nesse post específico ao Guilherme por ter revisado o conteúdo.
Não posso esquece também do meu amigo Douglas Esteves, que me ajudou a entrar no "universo das plaquinhas", como eu sempre brinco, aprendi muita coisa com ele, as dicas dele foram essenciais no começo dessa caminhada.
E finalmente, mas não menos importante, ao meu amigo Matheus Bernardes, meu oráculo do Python, eu copio código dos projetos dele, peço ajuda, etc. E ele sempre me ajuda com a maior boa vontade!

terça-feira, 6 de junho de 2017

Personalizando o Idioma da Interface Gráfica do Zabbix

Introdução

Demonstrarei nesse post como realizar a alteração do idioma do Zabbix. Pode-se alterar apenas alguns termos ou todos os termos.

Objetivo

O objetivo desse post é ser uma Prova de Conceito, é fazer com que as pessoas pensem fora da caixa. O Zabbix é uma ferramenta fantástica, que permite coletar dados, exibi-los em forma de gráficos e mapas, reagir às métricas coletadas, seja alterando um ícone no gráfico, enviando uma notificação, executando um comando, etc.

O problema é que as pessoas pensam no Zabbix apenas para redes Ethernet e Aplicações! Há algum tempo vemos algumas iniciativas, como do Luciano Alves (Unirede) expandindo isso para uma visão de negócios, o Norberto Rozas (Syspro) que propôs a ideia de usar o Zabbix como supervisório de redes industriais, O Luiz Sales com seus monitoramentos nada convencionais, etc.

No começo do ano eu iniciei o mestrado em Engenharia Elétrica, trabalhando com Redes de Sensores Sem Fio (RSSF), e claro minha proposta foi a de utilizar o Zabbix como ferramenta para o gerenciamento dessas redes, mas conforme as ideias foram surgindo, fui lendo os artigos, conversando com meu orientador, eu fui percebendo um imenso aumento do uso de conceitos como IoT, Smart Cities, Smart Campus, etc. E com isso novos interesses foram sendo despertados.

O Zabbix pode ser usado como Interface para os usuários finais, independente da área de atuação, porém será preciso fazer algumas modificações, pois cada área possui seu conjunto de jargões, sua definição de ícones, de interface, etc. Personalizar o Zabbix para que o usuário tenha uma visão que lhe seja familiar, é essencial. O que estou propondo é utilizar o que o Zabbix tem de melhor, e adaptar o que for necessário para que o usuário se sinta motivado a utilizá-lo.

O que essa solução é

Um Hack: Tenha isso em mente, o que estou fazendo não servirá para qualquer um, em qualquer ambiente, não é suportado pela Zabbix SIA e pode nem ser interessante no seu ponto de vista.
Uma Prova de Conceito: Esse post está longe de ser a palavra final sobre o assunto, eu tinha uma necessidade, achei uma maneira de executá-la e estou compartilhando com vocês.

O que essa solução não é

Prática: A cada nova versão da ferramenta, será preciso reaplicar o hack.
Universal: Veja que essa solução é ideal para ambientes, onde um ou dois idiomas são utilizados, mas não atende uma empresa global, também não atende dezenas de segmentos ao mesmo tempo.

Entendendo como funcionam os idiomas no Zabbix

Consultando a documentação oficial descobrimos que eles utilizam o GNU/gettext e o conceito de locales, que envolve uma série de normas internacionais e vai muito além da simples tradução de textos. Por isso é muito provável que esse hack nunca seja absorvido oficialmente pela Zabbix SIA.

Entendendo os os arquivos que controlam o idioma que é exibido na Interface Gráfica

Vamos analizar o diretório com o idioma do Brasil (pt_BR):
# ls -l /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/
total 940
-rw-r--r-- 1 zabbix zabbix 309122 Mai 30 17:26 frontend.mo
-rw-r--r-- 1 zabbix zabbix 649043 Mai 30 17:20 frontend.po

Enquanto o arquivo frontend.mo é um arquivo com uma codificação especial, descrita na documentação como uma "foto". E repleto de caracteres especiais:
# head -3 /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo
▒gGl▒▒▒/▒▒9▒5F [|▒▒▒!▒▒▒▒▒%▒,
3>Z
cn


O arquivo frontend.po é descrito na documentação como um arquivo texto, editável e utilizado para a tradução.
# head -3 /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.po
msgid ""
msgstr ""
"Project-Id-Version: Zabbix 3.2\n"


Observe esse trecho do arquivo frontend.po:
   4592 #: include/actions.inc.php:660 include/actions.inc.php:1061
   4593 msgid "Disable host"
   4594 msgstr "Desativar host"
   4595
   4596 #: include/views/configuration.host.list.php:116
   4597 msgid "Disable host?"
   4598 msgstr "Desabilitar host?"
   4599
   4600 #: app/views/administration.proxy.list.php:154
   4601 #: include/views/configuration.hostgroups.list.php:150
   4602 msgid "Disable hosts"
   4603 msgstr "Desativar hosts"
   4604
   4605 #: include/views/configuration.hostgroups.list.php:151
   4606 msgid "Disable hosts in the selected host groups?"
   4607 msgstr "Desabilitar os hosts nos grupos selecionados?"


Ele contém as strings que desejamos alterar, o problema é que alterar esse arquivo não surte efeito algum na interface gráfica. Pois se observarmos o arquivo que é chamado na linha 4596, por exemplo:
# vi /var/www/html/zabbix/include/views/configuration.host.list.php +116
                $confirm_message = _('Disable host?');


Verificamos que ele busca como referência a frase original, e, então aplica a tradução.

Observe esse trecho "^@Desabilitar host^@D" da linha 523 do arquivo /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo

Veja o que acontece se eu troco a frase por outra com o mesmo número de caracteres:
"^@Desabilitar sens^@D"

E reinicio o apache:
# systemctl restart httpd
Hack 01 no arquivo frontend.mo
Agora veja o que acontece e eu troco a frase por outra com um número diferente de caracteres:
"^@Desabilitar sensor^@D"

E reinicio o apache:
# systemctl restart httpd

Hack 02 no arquivo frontend.mo
Lembra que a documentação diz que o arquivo .mo é como uma foto? É nesse sentido. A mensagem aparece correta, mas todo o resto da formatação da interface gráfica se perdeu.

Basta voltar o arquivo ao normal e reiniciar o apache, que a interface gráfica também volta ao normal.
Interface Gráfica intacta após a remoção do Hack

Conclusões Iniciais

Devemos utilizar o arquivo frontend.po para gerar um arquivo frontend.mo atualizado. Mas como?

Observando o diretório /var/www/html/zabbix/locale temos um README e três scripts:
# ls -l *.sh README
-rwxr-xr-x 1 zabbix zabbix  385 Dez 21 05:08 add_new_language.sh
-rwxr-xr-x 1 zabbix zabbix  164 Mai 30 17:29 make_mo.sh
-rw-r--r-- 1 zabbix zabbix  957 Dez 21 05:08 README
-rwxr-xr-x 1 zabbix zabbix 1434 Dez 21 05:08 update_po.sh


No arquivo README encontramos a seguinte instrução:
If you want to update po files with new strings in the sourcefile, run update_po.sh . It will gather translatable strings from all files that end with ".php"

Maravilha é exatamente o que pretendemos fazer!

Vou mover o arquivo frontend.mo para o /root:
# mv /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo /root

E editar o arquivo frontend.po:
# vi /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.po
Alteramos as linhas 4592 até 4607, alterando as ocorrências de "host" para "sensor" e  de "hosts" para "sensores", e executamos o script:
# sh update_po.sh
Generating translation template...
Merging new strings in po files...
.
.
.
pt_BR
............................................................................................................................................................................................................................................................................................................................................. feito.
.
.
.
pt_BR/LC_MESSAGES/frontend.po   3316 mensagens traduzidas, 5 mensagens não traduzidas.
.
.
.


Mas... Não gerou um novo arquivo .mo:
# ls -l  /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.*
-rw-r--r-- 1 zabbix zabbix 649043 Mai 31 09:59 /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.po


Sem ele, mesmo com o idioma setado para Português (pt_BR)
Idioma setado como pt_BR
A interface gráfica fica em Inglês.
Interface Gráfica em Inglês

Basta trazer o arquivo de volta e reiniciar o apache:
# mv /root/frontend.mo /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/
# systemctl restart httpd


Que a interface gráfica volta ao normal.
Intreface Gráfica em pt_BR

Teste 02: Vamos rodar o update_po.sh e ver se ele atualiza o arquivo frontend.mo

# ls -l /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo
-rw-r--r-- 1 zabbix zabbix 309122 Mai 31 09:53 /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo
 

# sh update_po.sh
 

# ls -l /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo
-rw-r--r-- 1 zabbix zabbix 309122 Mai 31 09:53 /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo


E nada :-(

Teste 03: Vamos ver o que esse script faz ;-)

E na última instrução temos:
        # setting output file to /dev/null so that unneeded messages.mo file
        # is not created
        msgfmt --use-fuzzy -c --statistics -o /dev/null $translation

Achei!!! Esse script realmente não cria os arquivos.mo. Agora eu vou alterar ele para gerar os arquivos:
        #msgfmt --use-fuzzy -c --statistics -o /dev/null $translation
        msgfmt --use-fuzzy -c --statistics -o /root/$translation/frontend.mo $translation


Eu fiz a menor alteração possível, apenas substituindo "/dev/null" por "/root/$translation/frontend.mo". Isso poderia ficar bem mais elegante, mas preferi ser didático.

Vou criar apenas o diretório pt_BR, que será utilizado pela variável "$translation", os outros idiomas vão dar erro, mas nesse momento não tem problema:
# mkdir -p /root/pt_BR/LC_MESSAGES/frontend.po/

Vou guardar o antigo frontend.mo no /root
# mv /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo /root/

E rodar o script de update novamente:
# sh update_po.sh
Generating translation template...
Merging new strings in po files...
.
.
.
pt_BR
............................................................................................................................................................................................................................................................................................................................................. feito.
.
.
.
bg/LC_MESSAGES/frontend.po      msgfmt: erro ao abrir o arquivo "/root/bg/LC_MESSAGES/frontend.po/frontend.mo" para gravação: Arquivo ou diretório não encontrado
2052 mensagens traduzidas, 56 traduções aproximadas (fuzzy), 1213 mensagens não traduzidas.
.
.
.
pt_BR/LC_MESSAGES/frontend.po   3316 mensagens traduzidas, 5 mensagens não traduzidas.
.
.
.


E agora vamos colocar o novo frontend.mo na interface gráfica do Zabbix:
# cp /root/pt_BR/LC_MESSAGES/frontend.po/frontend.mo /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/

Reiniciar o apache
# systemctl restart httpd

E Voilà:

Interface Gráfica com a mensagem alterada
Volte o arquivo que você salvou no /root e reinicie o apache. Pois agora vamos fazer o trabalho, de verdade, vamos ter o Zabbix em Português com a interface intacta, e mais 3 variações do Português aplicado à nichos específicos.

Primeiro vamos criar a estrutura de diretórios para os idiomas Italiano (it), Francês (fr) e Russo (ru):
# mkdir -p /root/{it,fr,ru}/LC_MESSAGES/frontend.po/

Abaixo uma pequena cola, das alterações que vamos fazer:
pt_br - Hosts / Itens - Administrador da Rede Ethernet
it - Sensores / Métricas - Administrador da Rede de Sensores
fr - Plantas / Características - Usuário da Rede de Sensores - Ramo Agrícola
ru - Pacientes / Sinais Vitais - Usuário da Rede de Sensores - Ramo Medicina

Vamos copiar o arquivo frontend.po de pt_BR para os idiomas que vamos alterar:
# cd /var/www/html/zabbix/locale

# cp pt_BR/LC_MESSAGES/frontend.po it/LC_MESSAGES/frontend.po
cp: sobrescrever “it/LC_MESSAGES/frontend.po”? y

# cp pt_BR/LC_MESSAGES/frontend.po fr/LC_MESSAGES/frontend.po
cp: sobrescrever “fr/LC_MESSAGES/frontend.po”? y

# cp pt_BR/LC_MESSAGES/frontend.po ru/LC_MESSAGES/frontend.po
cp: sobrescrever “ru/LC_MESSAGES/frontend.po”? y


Primeiro vamos trabalhar no idioma Italiano e trocar todas as ocorrências de hosts por sensores e depois de host por sensor:
# sed -i -e ':g;/^msgstr/s/hosts/sensores/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/host/sensor/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Hosts/Sensores/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Host/Sensor/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po


Agora vamos trocar todas as ocorrências de itens por métricas e depois de item por métrica:
# sed -i -e ':g;/^msgstr/s/itens/métricas/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/item/métrica/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Itens/Métricas/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Item/Métrica/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po


Agora vamos ao idioma Francês, vamos trocar todas as ocorrências de hosts por plantas e depois de host por planta:
# sed -i -e ':g;/^msgstr/s/hosts/plantas/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/host/planta/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Hosts/Plantas/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Host/Planta/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po


Agora vamos trocar todas as ocorrências de itens por características e depois de item por característica:
# sed -i -e ':g;/^msgstr/s/itens/características/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/item/característica/g'  /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Itens/Características/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Item/Característica/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po


E finalmente vamos ao idioma Russo, vamos trocar todas as ocorrências de hosts por pacientes e depois de host por paciente:
# sed -i -e ':g;/^msgstr/s/hosts/pacientes/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/host/paciente/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Hosts/Pacientes/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Host/Paciente/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po


Agora vamos trocar todas as ocorrências de itens por sinais vitais e depois de item por sinal vital:
# sed -i -e ':g;/^msgstr/s/itens/sinais vitais/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/item/sinal vital/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Itens/Sinais Vitais/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Item/Sinal Vital/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po


Eentão gerar os nossos arquivos frontend.mo atualizados:
# sh update_po.sh

E coloca-los na interface gráfica do Zabbix:
# cp /root/fr/LC_MESSAGES/frontend.po/frontend.mo /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.mo
cp: sobrescrever “/var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.mo”? y

# cp /root/it/LC_MESSAGES/frontend.po/frontend.mo /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.mo
cp: sobrescrever “/var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.mo”? y

# cp /root/ru/LC_MESSAGES/frontend.po/frontend.mo /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.mo
cp: sobrescrever “/var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.mo”? y


Reiniciar o Apache
# systemctl restart httpd

E pronto:
Interface Gráfica com o Hack Aplicado

Conclusão:

Esse é apenas um pequeno exemplo de que com um pouco de criatividade e algum esforço, podemos levar o Zabbix a outros nichos e ampliar a nossa área de atuação, seja ela pessoal, acadêmica ou profissional.

quinta-feira, 25 de agosto de 2016

Utilização do RackTables

Introdução

No post anterior eu demonstrei como realizar a instalação do RackTables em CentOS 7, nesse eu vou demonstrar algumas das funcionalidades, não tenho a intenção de ser a referencia final e nem de cobrir tudo que o software pode fazer, mas sim, dar um norte inicial.

Diagrama da Rede

Abaixo temos um diagrama básico de uma rede que vamos documentar no RackTables.

Cadastro de VLANs

Na tela inicial clique em 802.1Q, clique na aba Manage domains e cadastre as VLANs.

Cadastro de Redes

Na tela inicial clique em IPv4 space, clique na aba Add e cadastre as redes. Nessa tela podemos associar as redes às VLANs.
Depois de cadastrar todas as redes clique na aba Browse, você verá um resumo de todas as suas redes.

Cadastro de Ativos

Na tela inicial clique em Objects, clique na aba Add more e cadastre os ativos.

Cadastro de Patch Panel

Na tela inicial clique em Objects, clique na aba Add more e cadastre os Patch Panels.

Cadastro de Patch Cables

Na tela inicial clique em Patch Cables, clique na aba Configure heaps e cadastre os Patch Cables.
Depois de cadastrados, você pode clicar na aba Consume/replenish e cadastrar a quantidade de Patch Cords disponível.

Cadastro de Tipos de Objetos

Existe um objeto do tipo Network security, mas eu quero cadastrar um objeto do tipo Firewall. Na tela inicial clique em Configuração, na lista de configurações, clique em Dictionary, na lista de dicionários, clique em ObjectType, clique na aba Edit e cadastre o tipo de objeto.
Volte no Cadastro de Ativos, e o tipo Firewall estará disponível.

Cadastro de Localizações

Na tela inicial clique em Rackspace, clique na aba Manage locations e cadastre as localizações. Observe que cadastrei a localização "Matriz Empresa" sem ser "filha" de ninguém e depois cadastrei as demais localizações como "filhas" de "Matriz Empresa". Portanto se a sua empresa possui várias filiais, ou vários prédios, não será problema documentar a infraestrutura no RackTables.
Clique na aba Manage rows e cadastre as localizações. Essa opção é útil para cadastrar a sala dentro do prédio, o andar, o anexo, etc.

Cadastro de Racks

Na tela inicial clique em Rackspace, na aba Browse clique no nome da Localização (Matriz Empresa), em Child Locations clique no Setor (Compras), em Rows clique na Localização (Sala 22 - 2º Andar), clique na aba Add new rack e cadastre o(s) Rack(s).

Visualizando a estrutura física da sua empresa

Na tela inicial clique em Rackspace. Observe à direita a opção de filtros.

Cadastro de detalhes adicionais dos Ativos

Na tela inicial clique em Objects, e depois em um dos ativos, clique na aba Properties. Podemos observar uma infinidade de detalhes que podem ser cadastrados como marca e modelo, versão do software, informações de garantia, contratos, etc.
 Clique na aba Rackspace e selecione um Rack (Rack TI), a tela muda e você pode escolher à direita a posição exata que o ativo ocupa no rack, pode manter um histórico em Comment, e depois basta salvar clicando no botão save.
Clique na aba Ports, podemos cadastrar uma ou mais portas. Inclusive cadastrar portas em lote.
Observe que antes de cadastrarmos as portas, podemos cadastrar o IP e usar a aba SNMP para detectar automáticamente as portas.
Clique na aba IP, podemos cadastrar um ou mais IPs e o tipo do IP.
E ainda temos uma aba para Log, NAT e Arquivos associados ao ativo.

Conexão dos Ativos com o Patch Panel

Para conectar os ativos no patch panel é preciso alterar a porta do patch panel para um tipo de porta compatível com o ativo.
Após salvar as alterações abra o objeto que você deseja ligar ao patch panel (Router L3) e, na linha da porta que será ligada clique no botão Link this port.
Na janela que vai surgir escolha a porta do patch panel na qual a porta do ativo se conecta, observe que podemos conectar um ativo em outro, cadastre o ID do cabo (opcional), selecione o patch cable que será utilizado e clique em Link.

Cadastro de Ambiente Virtual

Além de tudo que já foi descrito, o RackTables ainda nos permite cadastrar recursos virtuais como Clusters, Hypervisors, Switches Virtuais e Pools de Recursos.

Cadastro de Cluster

Na tela inicial clique em Objects, clique na aba Add more e cadastre o(s) Cluster(s).

Cadastro de  Hypervisor

Na tela inicial clique em Objects, clique na aba Add more e cadastre um ou mais Server(s).
Abra o Server, na aba Properties sete a opção Hypervisor como Yes e salve as alterações.

Associar o Hypervisor ao Cluster

Abra o Server, na aba Properties cliquem em Select a container.
Na janela que vai surgir escolha o container e clique em Proceed.
Você pode aproveitar e cadastrar qual é o Hypervisor na opção SW type.

Cadastro de  Outros Objetos Virtuais

Na tela inicial clique em Objects, clique na aba Add more e cadastre os demais objetos.
O processo de associação dos objetos segue o mesmo padrão descrito acima em Associar o Hypervisor ao Cluster.

Conclusão

O software RackTables é extremamente poderoso e de simples utilização, todo ambiente onde o mesmo for adotado terá ganhos, mas quanto maior e mais complexo o seu ambiente, mais necessário o mesmo se faz.
Como dito no início do  post, eu não pretendo ser a referência absoluta no assunto, mas acredito que colocando em prática o que foi demonstrado aqui, você será capaz de explorar as demais opções da ferramenta.

Instalação do RackTables em CentOS 7

Introdução

O RackTables é uma ferramenta fantástica para gerenciamento de toda a sua infraestrutura  de redes física e lógica, permite gerenciar Ranges de IPs, VLANs, Racks, Servidores, etc. Na página oficial existe um demo. Quem me falou dessa ferramenta foi meu grande amigo Rubens Zolotujin.

Ponto de partida

Eu parto do princípio que você já possui um Servidor CentOS 7 Básico.

Pré-Requisitos

Vamos suprir as dependências:
# yum install php-common php-cli php-ldap php-snmp

Reinicie o apache para que ele relei os novos módulos:
# service httpd restart

Instalação

A instalação é bastante simples, primeiro vamos fazer o download da última versão estável do software e descompactá-lo.
# cd /install
# wget http://downloads.sourceforge.net/project/racktables/RackTables-0.20.11.tar.gz

# tar -xzvf RackTables-0.20.11.tar.gz

O último passo é copiar o diretório com os arquivos php para o diretório padrão do CentOS.
# cp -r RackTables-0.20.11/wwwroot/ /var/www/html/racktables

Criar a base de dados

Vamos criar a base de dados que será posteriormente populada.
# mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE racktables;

MariaDB [(none)]>GRANT ALL ON racktables.* TO rackuser@localhost IDENTIFIED BY 'rackpw';
MariaDB [(none)]>FLUSH PRIVILEGES;
MariaDB [(none)]>QUIT

Instalação da Interface Gráfica

Para iniciar a instalação vamos abrir todas as permissões do diretório.
# chmod -R 777 /var/www/html/racktables/

Abra no navegador o endereço http://IP_do_Servidor/racktables
A mensagem de erro é normal, clique em here.
No passo 1 de 7, clique em proceed.
No passo 2 de 7, não se preocupe com a ausência do módulo PCNTL e nem com o fato de não estarmos usando https, clique em proceed. Leia sobre as implicações do PCNTL antes de habilitá-lo, quanto ao https pode (e deve) ser corrigido posteriormente.
No passo 3 de 7 recebemos uma mensagem de erro, que já traz os comandos necessários para resolver o problema.
# touch '/var/www/html/racktables/inc/secret.php'; chmod 666 '
/var/www/html/racktables/inc/secret.php'

Clique em retry. A tela muda e precisamos preencher as informações com as credencias do banco e clicar em retry.
O passo 3 é concluído com sucesso e podemos continuar, clique em proceed.
No passo 4 de 7 recebemos uma mensagem de erro, que já traz os comandos necessários para resolver o problema. Porém no CentOS não existe o grupo "nogroup" e sim o "nobody", então temos que mudar esse detalhe. 
# chown apache:nobody /var/www/html/racktables/inc/secret.php; chmod 400 /var/www/html/racktables/inc/secret.php 
Clique em retry. O passo 4 é concluído com sucesso e podemos continuar, clique em proceed.
No passo 5 de 7 a base de dados é populada, clique em proceed.
No passo 6 de 7 você deve setar a senha de administrador e clicar em retry.
O passo 6 é concluído com sucesso e podemos continuar, clique em proceed.
No passo 7 de 7 você é parabenizado e pode clicar em retry.
Tela de autenticação, entre com o usuário admin e com a senha cadastrada. Clique em OK.
Tela principal do RackTables

Referências

Wiki do RackTables
Unixmen