--- type: Entity layer: wiki tags: [stack, dashdescomplicar, backend, integracao, ssh, metricas] title: "Integracao-SSH-Metrics" --- # Integracao-SSH-Metrics Colector de métricas de servidores via SSH (biblioteca `ssh2`). Recolhe CPU, RAM, disco, load e containers do EasyPanel Server. ## Responsabilidades - **SSH Connection**: Ligação ao EasyPanel (`5.9.90.70:22`) com password auth - **Métricas**: Executa comandos remotos para recolher CPU%, RAM%, disco%, load avg, nº containers - **Parsing**: Extrai valores de output formatado (`CPU:`, `MEM:`, `DISK:`, `LOAD:`, `CONTAINERS:`) - **Sync**: Sincroniza servidores Hetzner para `tbl_eal_monitoring` ## Stack - **Library**: `ssh2` 1.17 (Client, exec) - **Timeout**: 20 segundos por ligação SSH - **Auth**: Password (não suporta chave privada no container) ## Servidores | Nome | Host | Porta | Auth | Notas | |---|---|---|---|---| | EasyPanel | `5.9.90.70` | 22 | Password | Docker Swarm — 46 serviços | | CWP Server | `5.9.90.105` | 22 | ❌ Chave ed25519 | NÃO acessível do container | ## Rotas | Método | Rota | Função | |---|---|---| | `POST` | `/api/server-metrics/collect` | Recolher todas as métricas | | `POST` | `/api/server-metrics/ssh` | Apenas métricas SSH | | `POST` | `/api/server-metrics/hetzner` | Sync Hetzner → monitoring | ## Localizações - **Código**: `api/services/server-metrics.ts` (188 linhas), `api/routes/server-metrics.ts` (68 linhas) - **DB**: `tbl_eal_monitoring` ## Dependências - **EasyPanel Server**: SSH acesso (`.env`: `EASY_HOST`, `EASY_USER`, `EASY_PASS`) - **MySQL-Pool**: Armazenamento de métricas ## Fornece a - **Painel-Monitor**: Métricas SSH exibidas na secção "Infraestrutura" - **Express-API**: Rota `/api/server-metrics`