Appearance
Backup Observability Gateway
Gateway Node.js + TypeScript para centralizar integracoes de observabilidade em plataformas de backup. Atualmente expõe chamadas REST e metricas Prometheus para Veeam ONE, com estrutura preparada para crescer para outras APIs da Veeam e ExaGrid.
Stack
- Node.js + TypeScript
- Fastify
- Axios
- prom-client
- Vitest
- Docker + Docker Compose
- VitePress
Estrutura
text
src/
app.ts
server.ts
routers.ts
modules/
auth/
auth.service.ts
jobs/
backup-copy-jobs.controller.ts
backup-copy-jobs.service.ts
backup-to-tape-jobs.controller.ts
backup-to-tape-jobs.service.ts
vm-backup-jobs.controller.ts
vm-backup-jobs.service.ts
repositories/
repositories.controller.ts
repositories.service.ts
scaleout-repositories/
scaleout-repositories.controller.ts
scaleout-repositories.service.ts
exporters/
jobs.exporter.ts
repositories.exporter.ts
docker/
Dockerfile
Dockerfile.vitepress
docker-compose.yml
.env.example
prometheus/
prometheus.yml
grafana/
provisioning/
dashboards/
deploy/
deploy_docker.sh
destroy_docker.sh
docs/
index.md
docker.md
running.md
routes.mdResponsabilidades
server.ts: le.env, cria Axios, autenticacao, service, controller e exporter.app.ts: cria a instancia Fastify e registra tratamento de erro.routers.ts: registra/health, rotas separadas de jobs, rotas de repositórios e/metrics.auth.service.ts: faz login, cacheia token em memoria e renova quando expira.*-jobs.service.ts: cada arquivo consulta um endpoint especifico do Veeam ONE e contem sua propria paginacao/retry.*-jobs.controller.ts: cada arquivo entrega uma rota HTTP especifica.repositories.service.ts: repassa chamadas REST paraGET /vbr/repositoriese preserva o payload original.scaleout-repositories.service.ts: repassa chamadas REST paraGET /vbr/scaleoutRepositoriese preserva o payload original.jobs.exporter.ts: atualiza e renderiza metricas Prometheus comprom-client.repositories.exporter.ts: cria metricas de capacidade e uso a partir dos payloads brutos de repositórios e SOBR.