58 lines
2.1 KiB
Markdown
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`
|