Voltar ao blog
pt-brnetbox

Tutorial: Gerar Diagramas de Banco de Dados NetBox com SchemaSpy

Passo a Passo para Fazer Diagramas do Banco de Dados do NetBox com SchemaSpy

pDamascenopDamasceno
12 de novembro de 20253 min de leitura
Tutorial: Gerar Diagramas de Banco de Dados NetBox com SchemaSpy

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.