--- type: Entity layer: wiki tags: [stack, dashdescomplicar, backend, integracao, hetzner, api] title: "Integracao-Hetzner" --- # Integracao-Hetzner Integração com Hetzner Cloud API para monitorização de servidores VPS. Sincroniza lista de servidores, recolhe métricas (CPU, disco, rede) e armazena histórico na MySQL do Desk CRM. ## Responsabilidades - **Sync**: Sincronizar lista de servidores da API Hetzner → `tbl_eal_hetzner_servers` - **Métricas**: Recolher CPU%, disk IOPS, network BPS via `/servers/{id}/metrics` - **Dashboard**: Agregar servidores + últimas métricas para o painel Monitor - **Histórico**: Armazenar métricas em `tbl_eal_hetzner_metrics` para gráficos - **Cleanup**: Limpeza de métricas antigas (>30 dias) ## Stack - **API**: `https://api.hetzner.cloud/v1` (Bearer token `HETZNER_TOKEN`) - **DB**: MySQL via `db.ts` (pool) - **Validação**: Tipos TypeScript (sem Zod nesta rota) ## Rotas | Método | Rota | Função | |---|---|---| | `GET` | `/api/hetzner` | Dashboard (servidores + últimas métricas) | | `POST` | `/api/hetzner/sync` | Sincronizar lista de servidores | | `POST` | `/api/hetzner/collect` | Recolher métricas de todos os servidores | | `POST` | `/api/hetzner/collect/:hetzner_id` | Recolher métricas de servidor específico | | `GET` | `/api/hetzner/history/:server_id` | Histórico de métricas para gráficos | | `POST` | `/api/hetzner/cleanup` | Limpar métricas antigas | ## Servidores Monitorizados - **CWP Server** (VM 100): IP `5.9.90.105` — hosting clientes - **EasyPanel** (VM 101): IP `5.9.90.70` — Docker Swarm (46 serviços) - **Gateway** (VM 103): proxy Nginx - **Proxmox Host**: hypervisor físico ## Localizações - **Código**: `api/services/hetzner.ts` (266 linhas), `api/routes/hetzner.ts` (141 linhas) - **DB**: `tbl_eal_hetzner_servers`, `tbl_eal_hetzner_metrics` ## Dependências - **Hetzner Cloud API**: Token `HETZNER_TOKEN` em `.env` - **MySQL-Pool**: Armazenamento de servidores e métricas ## Fornece a - **Painel-Monitor**: Dados de servidores exibidos na secção "Servidores" - **Express-API**: Rota `/api/hetzner`