# vlademirjunior/docker_monitor architecture

> Architecture diagram of the GitHub repository vlademirjunior/docker_monitor, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vlademirjunior/docker_monitor
- Repository: https://github.com/vlademirjunior/docker_monitor

## Overview

docker_monitor é uma CLI e dashboard TUI para consultar e administrar containers Docker e stacks Compose. O fluxo principal despacha comandos para um cliente Docker unificado, que seleciona socket Unix ou HTTP/TCP; resultados são formatados ou usados em monitoramento e alertas. O dashboard acrescenta coleta em background e exibe containers, stacks, host, disco e métricas do próprio processo. Também estão representadas capacidades documentadas como logs, inspeção, imagens não utilizadas e operações de lifecycle. As relações do dashboard e recursos não amostrados seguem a documentação; detalhes de ligação não comprovados foram omitidos.

Main entry points: [`src/main.rs`](https://github.com/vlademirjunior/docker_monitor/blob/main/src/main.rs) (CLI dispatcher), [`src/client.rs`](https://github.com/vlademirjunior/docker_monitor/blob/main/src/client.rs) (Cliente unificado), [`src/dashboard.rs`](https://github.com/vlademirjunior/docker_monitor/blob/main/src/dashboard.rs) (Dashboard TUI), [`src/monitor.rs`](https://github.com/vlademirjunior/docker_monitor/blob/main/src/monitor.rs) (Alertas recursos)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["CLI e Dashboard"]
  node_cli["CLI dispatcher<br/>[main.rs]"]
  node_formatter["Saída terminal<br/>[formatador.rs]"]
  node_dashboard["Dashboard TUI<br/>[dashboard.rs]"]
  node_setup["Auto-instalação<br/>[setup.rs]"]
end

subgraph group_containers["Containers e Monitoramento"]
  node_container_ops["Consulta e lifecycle<br/>[client.rs]"]
  node_monitor["Alertas recursos<br/>[monitor.rs]"]
  node_images["Imagens não usadas<br/>[docker_api.rs]"]
end

subgraph group_stacks["Stacks Compose"]
  node_stacks["Descoberta e controle<br/>[stacks.rs]"]
end

subgraph group_transport["Acesso Docker"]
  node_client["Cliente unificado<br/>[client.rs]"]
  node_tcp["API HTTP TCP<br/>[docker_api.rs]"]
  node_unix["API socket Unix<br/>[docker_socket.rs]"]
end

subgraph group_observability["Host e Diagnóstico"]
  node_host["Info e disco Docker<br/>[docker_api.rs]"]
  node_self_metrics["Métricas do processo<br/>[recursos_app.rs]"]
  node_logger[("Logs diários<br/>[logger.rs]")]
end

node_operator(("Operador"))
node_daemon(("Docker daemon"))
node_compose(("Docker Compose"))

node_operator -->|"executa comandos"| node_cli
node_cli -->|"cria cliente"| node_client
node_cli -->|"despacha ações"| node_container_ops
node_cli -->|"inicia monitoramento"| node_monitor
node_cli -->|"despacha ações"| node_stacks
node_cli -->|"abre interface"| node_dashboard
node_cli -->|"executa setup"| node_setup
node_container_ops -->|"consulta e altera"| node_client
node_client -->|"usa TCP"| node_tcp
node_client -->|"usa socket"| node_unix
node_tcp -->|"envia HTTP"| node_daemon
node_unix -->|"envia requisições"| node_daemon
node_monitor -->|"lê containers e stats"| node_client
node_monitor -->|"registra alertas"| node_logger
node_container_ops -->|"formata resultados"| node_formatter
node_cli -->|"apresenta resultados"| node_formatter
node_client -->|"consulta imagens"| node_images
node_images -->|"exibe uso"| node_formatter
node_cli -->|"consulta diagnóstico"| node_host
node_host -->|"consulta daemon"| node_client
node_dashboard -->|"coleta e executa ações"| node_client
node_dashboard -->|"consulta e controla"| node_stacks
node_dashboard -->|"exibe estado"| node_host
node_dashboard -->|"coleta métricas"| node_self_metrics
node_self_metrics -->|"mede arquivos"| node_logger
node_stacks -->|"executa operações"| node_compose
node_cli -->|"registra execução"| node_logger

click node_cli "https://github.com/vlademirjunior/docker_monitor/blob/main/src/main.rs"
click node_formatter "https://github.com/vlademirjunior/docker_monitor/blob/main/src/formatador.rs"
click node_dashboard "https://github.com/vlademirjunior/docker_monitor/blob/main/src/dashboard.rs"
click node_client "https://github.com/vlademirjunior/docker_monitor/blob/main/src/client.rs"
click node_tcp "https://github.com/vlademirjunior/docker_monitor/blob/main/src/docker_api.rs"
click node_unix "https://github.com/vlademirjunior/docker_monitor/blob/main/src/docker_socket.rs"
click node_container_ops "https://github.com/vlademirjunior/docker_monitor/blob/main/src/client.rs"
click node_monitor "https://github.com/vlademirjunior/docker_monitor/blob/main/src/monitor.rs"
click node_images "https://github.com/vlademirjunior/docker_monitor/blob/main/src/docker_api.rs"
click node_stacks "https://github.com/vlademirjunior/docker_monitor/blob/main/src/stacks.rs"
click node_host "https://github.com/vlademirjunior/docker_monitor/blob/main/src/docker_api.rs"
click node_self_metrics "https://github.com/vlademirjunior/docker_monitor/blob/main/src/recursos_app.rs"
click node_logger "https://github.com/vlademirjunior/docker_monitor/blob/main/src/logger.rs"
click node_setup "https://github.com/vlademirjunior/docker_monitor/blob/main/src/setup.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_formatter,node_dashboard,node_setup toneBlue
class node_container_ops,node_monitor,node_images toneAmber
class node_stacks toneMint
class node_client,node_tcp,node_unix toneRose
class node_host,node_self_metrics,node_logger,node_operator,node_daemon,node_compose toneIndigo
```

## Components

### CLI e Dashboard

- [CLI dispatcher](https://github.com/vlademirjunior/docker_monitor/blob/main/src/main.rs): `src/main.rs`
- [Saída terminal](https://github.com/vlademirjunior/docker_monitor/blob/main/src/formatador.rs): `src/formatador.rs`
- [Dashboard TUI](https://github.com/vlademirjunior/docker_monitor/blob/main/src/dashboard.rs): `src/dashboard.rs`
- [Auto-instalação](https://github.com/vlademirjunior/docker_monitor/blob/main/src/setup.rs): `src/setup.rs`

### Containers e Monitoramento

- [Consulta e lifecycle](https://github.com/vlademirjunior/docker_monitor/blob/main/src/client.rs): `src/client.rs`
- [Alertas recursos](https://github.com/vlademirjunior/docker_monitor/blob/main/src/monitor.rs): `src/monitor.rs`
- [Imagens não usadas](https://github.com/vlademirjunior/docker_monitor/blob/main/src/docker_api.rs): `src/docker_api.rs`

### Stacks Compose

- [Descoberta e controle](https://github.com/vlademirjunior/docker_monitor/blob/main/src/stacks.rs): `src/stacks.rs`

### Acesso Docker

- [Cliente unificado](https://github.com/vlademirjunior/docker_monitor/blob/main/src/client.rs): `src/client.rs`
- [API HTTP TCP](https://github.com/vlademirjunior/docker_monitor/blob/main/src/docker_api.rs): `src/docker_api.rs`
- [API socket Unix](https://github.com/vlademirjunior/docker_monitor/blob/main/src/docker_socket.rs): `src/docker_socket.rs`

### Host e Diagnóstico

- [Info e disco Docker](https://github.com/vlademirjunior/docker_monitor/blob/main/src/docker_api.rs): `src/docker_api.rs`
- [Métricas do processo](https://github.com/vlademirjunior/docker_monitor/blob/main/src/recursos_app.rs): `src/recursos_app.rs`
- [Logs diários](https://github.com/vlademirjunior/docker_monitor/blob/main/src/logger.rs): `src/logger.rs`

### Other components

- **Operador**
- **Docker daemon**
- **Docker Compose**

## Connections

- Operador → CLI dispatcher: executa comandos
- CLI dispatcher → Cliente unificado: cria cliente
- CLI dispatcher → Consulta e lifecycle: despacha ações
- CLI dispatcher → Alertas recursos: inicia monitoramento
- CLI dispatcher → Descoberta e controle: despacha ações
- CLI dispatcher → Dashboard TUI: abre interface
- CLI dispatcher → Auto-instalação: executa setup
- Consulta e lifecycle → Cliente unificado: consulta e altera
- Cliente unificado → API HTTP TCP: usa TCP
- Cliente unificado → API socket Unix: usa socket
- API HTTP TCP → Docker daemon: envia HTTP
- API socket Unix → Docker daemon: envia requisições
- Alertas recursos → Cliente unificado: lê containers e stats
- Alertas recursos → Logs diários: registra alertas
- Consulta e lifecycle → Saída terminal: formata resultados
- CLI dispatcher → Saída terminal: apresenta resultados
- Cliente unificado → Imagens não usadas: consulta imagens
- Imagens não usadas → Saída terminal: exibe uso
- CLI dispatcher → Info e disco Docker: consulta diagnóstico
- Info e disco Docker → Cliente unificado: consulta daemon
- Dashboard TUI → Cliente unificado: coleta e executa ações
- Dashboard TUI → Descoberta e controle: consulta e controla
- Dashboard TUI → Info e disco Docker: exibe estado
- Dashboard TUI → Métricas do processo: coleta métricas
- Métricas do processo → Logs diários: mede arquivos
- Descoberta e controle → Docker Compose: executa operações
- CLI dispatcher → Logs diários: registra execução
