
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.

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

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.
