fix: TypeScript errors in server-metrics service
This commit is contained in:
@@ -11,5 +11,14 @@ FRONTEND_URL=http://localhost:5173
|
||||
# Hetzner Cloud API
|
||||
HETZNER_TOKEN=your_hetzner_api_token_here
|
||||
|
||||
# SSH Servers (for metrics collection)
|
||||
SERVER_HOST=176.9.3.158
|
||||
SERVER_USER=root
|
||||
SERVER_PASS=your_cwp_server_password
|
||||
|
||||
EASY_HOST=178.63.18.51
|
||||
EASY_USER=root
|
||||
EASY_PASS=your_easypanel_password
|
||||
|
||||
# Production URLs
|
||||
# FRONTEND_URL=https://dash.descomplicar.pt
|
||||
|
||||
24
CHANGELOG.md
24
CHANGELOG.md
@@ -2,6 +2,30 @@
|
||||
|
||||
Todas as alterações notáveis neste projecto serão documentadas neste ficheiro.
|
||||
|
||||
## [2.3.0] - 2026-02-04
|
||||
|
||||
### Added
|
||||
- ✅ **Server Metrics Unified** - Métricas de todos os servidores (Hetzner + SSH)
|
||||
- Serviço `/api/services/server-metrics.ts` - Collector unificado
|
||||
- Rota `/api/server-metrics/collect` - Recolhe todas as métricas
|
||||
- Rota `/api/server-metrics/ssh` - Métricas CWP e EasyPanel via SSH
|
||||
- Rota `/api/server-metrics/hetzner` - Sync Hetzner para monitoring
|
||||
- Integração com `tbl_eal_monitoring` existente
|
||||
|
||||
### Endpoints Server Metrics
|
||||
- `POST /api/server-metrics/collect` - Recolhe métricas de todos os servidores
|
||||
- `POST /api/server-metrics/ssh` - Apenas CWP Server e EasyPanel (via SSH)
|
||||
- `POST /api/server-metrics/hetzner` - Sync Hetzner para tabela monitoring
|
||||
|
||||
### Technical Notes
|
||||
- Servidores SSH: CWP Server (176.9.3.158), EasyPanel (178.63.18.51)
|
||||
- Servidores Hetzner: MCP Hub, Meet, WhatsApp, WhatSMS
|
||||
- Métricas: CPU%, RAM%, Disk%, Load Average, Network I/O
|
||||
- Actualiza `tbl_eal_monitoring` com dados reais
|
||||
- Cron recomendado: `curl -X POST localhost:3001/api/server-metrics/collect` a cada 5 min
|
||||
|
||||
---
|
||||
|
||||
## [2.2.0] - 2026-02-04
|
||||
|
||||
### Added
|
||||
|
||||
@@ -34,7 +34,7 @@ router.post('/ssh', async (_req: Request, res: Response) => {
|
||||
try {
|
||||
const result = await collectSSHMetrics()
|
||||
res.json({
|
||||
success: true,
|
||||
ok: true,
|
||||
message: `SSH: ${result.success} OK, ${result.failed} failed`,
|
||||
...result
|
||||
})
|
||||
|
||||
@@ -10,6 +10,7 @@ import monitorRouter from './routes/monitor.js'
|
||||
import diagnosticRouter from './routes/diagnostic.js'
|
||||
import hetznerRouter from './routes/hetzner.js'
|
||||
import wpMonitorRouter from './routes/wp-monitor.js'
|
||||
import serverMetricsRouter from './routes/server-metrics.js'
|
||||
|
||||
const app = express()
|
||||
const PORT = process.env.API_PORT || 3001
|
||||
@@ -32,6 +33,7 @@ app.use('/api/monitor', monitorRouter)
|
||||
app.use('/api/diagnostic', diagnosticRouter)
|
||||
app.use('/api/hetzner', hetznerRouter)
|
||||
app.use('/api/wp-monitor', wpMonitorRouter)
|
||||
app.use('/api/server-metrics', serverMetricsRouter)
|
||||
|
||||
// Error handling
|
||||
app.use((err: any, _req: express.Request, res: express.Response, _next: express.NextFunction) => {
|
||||
|
||||
@@ -6,9 +6,7 @@
|
||||
import db from '../db.js'
|
||||
import { collectAllMetrics as collectHetznerMetrics } from './hetzner.js'
|
||||
|
||||
// Hetzner API Configuration
|
||||
const HETZNER_API_URL = 'https://api.hetzner.cloud/v1'
|
||||
const HETZNER_TOKEN = process.env.HETZNER_TOKEN || ''
|
||||
// Hetzner API Configuration (used by hetzner.ts service)
|
||||
|
||||
// SSH Configuration (from MCP ssh-unified)
|
||||
interface SSHServer {
|
||||
@@ -185,7 +183,7 @@ export async function syncHetznerToMonitoring(): Promise<number> {
|
||||
m.status = 'up',
|
||||
m.last_check = NOW()
|
||||
WHERE m.category = 'server' AND m.name = ?
|
||||
`, [hetznerName.includes('.') ? hetznerName : hetznerName, monitorName])
|
||||
`, [namePattern, monitorName])
|
||||
|
||||
if ((result as any).affectedRows > 0) synced++
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user