AUTONETOPS

Cover Image for Tutorial: Gerar Diagramas de Banco de Dados NetBox com SchemaSpy

Tutorial: Gerar Diagramas de Banco de Dados NetBox com SchemaSpy

·

3 min read

Enquanto tentava entender melhor alguns relacionamentos do banco de dados do NetBox, senti falta de um diagrama de esquema. Após procurar na documentação e no repositório do código, não encontrei nada. Precisava de uma ferramenta que gerasse automaticamente diagramas a partir de um banco de dados existente.

💡
Instalar Netbox com Docker aqui

Uma pesquisa rápida me levou a algumas opções interessantes:

SchemaSpy

Ferramenta open source baseada em Java que analisa os metadados do banco de dados e gera diagramas interativos em HTML, além de relatórios detalhados.

Ideal para: Gerar automaticamente relatórios e diagramas completos a partir de um banco de dados existente.

— DBeaver

Ferramenta universal de gerenciamento de bancos de dados, compatível com diversos sistemas (MySQL, PostgreSQL, Oracle, etc.). Permite gerar diagramas de esquemas a partir de um banco existente.

Ideal para: Administrar múltiplos sistemas de banco e visualizar esquemas complexos.

— DbSchema

Ferramenta universal de banco de dados que pode realizar engenharia reversa p criar um diagrama visual, além de permitir desenhar esquemas e exportá-los como SQL.

Ideal para: Usuários que precisam de uma representação visual e também da funcionalidade de exportação em SQL.

SchemaSpy

Documentacao

Fiz uma nova instalação do NetBox via Docker e baixei o SchemaSpy a partir do repositório Docker Hub junto com suas dependências.

Criando o diretório de saída

mkdir schemaspy
cd schemaspy

Criando o arquivo de configuração do banco de dados

As informações do banco de dados do NetBox estão no arquivo /env/postgres.env:

POSTGRES_DB=netbox
POSTGRES_PASSWORD=FAKE_PASSWORD
POSTGRES_USER=netbox

Para entender os valores que podemos definir no arquivo de configuração, consulte

Crie um arquivo chamado postgresdb.properties com o seguinte conteúdo:

# Tipo de banco de dados. Execute com -dbhelp para mais detalhes
schemaspy.t=pgsql11
# Propriedades do banco: host, porta, nome, usuário e senha
schemaspy.host=postgres
schemaspy.port=5432
schemaspy.db=netbox
schemaspy.u=netbox
schemaspy.p=FAKE_PASSWORD

Executando

A documentação lista todas as opções necessárias.
Basta informar o caminho de saída, as credenciais do banco e o formato desejado.
O comando abaixo executa o container e gera o relatório da estrutura do banco:

docker run \
    -v "$PWD/output:/output" \
    --network netbox-docker_default \
    -v "./postgresdb.properties:/schemaspy.properties" \
    schemaspy/schemaspy:latest

Saída

O SchemaSpy gera um relatório navegável em HTML dentro do diretório output, repleto de informações interessantes sobre o banco de dados.

Ao acessar a aba “Relationships”, você verá um diagrama das tabelas e seus relacionamentos — exatamente o que eu estava procurando!

Resultado

O SchemaSpy gera dois diagramas:

  • Um compacto

  • E outro amplo, localizado em /diagrams/summary

A versão do NetBox utilizada neste teste foi NetBox Community v4.1.6.

Revisão

Os diagramas são bem detalhados, mas há muitas interseções de setas, o que pode dificultar a leitura.
Como o arquivo é exportado em HTML, não é possível arrastar ou reorganizar as tabelas.

Abaixo está um exemplo da tabela dcim_device. É possível perceber que, com o aumento de relacionamentos, o diagrama se torna mais denso:

O SchemaSpy é uma ferramenta extremamente útil para quem deseja compreender a estrutura de bancos de dados complexos como o do NetBox.

;