Files

58 lines
2.1 KiB
Markdown

---
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`