tractatus/src/routes/diskMetrics.routes.js
TheFlow 18bb173c95 feat: add disk monitoring system for dev and production
Add comprehensive disk monitoring with real-time metrics:
- Backend API endpoints for disk/memory metrics (local + remote)
- Admin UI page with CSP-compliant DOM rendering
- Health status indicators with color-coded thresholds
- SSH-based remote metrics collection from OVH VPS
- Auto-refresh every 5 minutes

Backend:
- src/models/DiskMetrics.model.js: Metrics collection model
- src/controllers/diskMetrics.controller.js: 3 admin endpoints
- src/routes/diskMetrics.routes.js: Admin-authenticated routes
- src/routes/index.js: Register disk-metrics routes

Frontend:
- public/admin/disk-monitoring.html: Admin dashboard page
- public/js/admin-disk-monitoring.js: CSP-compliant UI rendering
- public/js/components/navbar-admin.js: Add disk monitoring link

Documentation:
- deployment-quickstart/UPTIME_MONITORING_SETUP.md

API endpoints:
- GET /api/admin/disk-metrics (all systems)
- GET /api/admin/disk-metrics/local (dev system)
- GET /api/admin/disk-metrics/remote (production VPS)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 11:53:55 +13:00

34 lines
992 B
JavaScript

/**
* Disk Metrics Routes
* Admin-only endpoints for system disk monitoring
*/
const express = require('express');
const router = express.Router();
const diskMetricsController = require('../controllers/diskMetrics.controller');
const { asyncHandler } = require('../middleware/error.middleware');
const { authenticateToken, requireRole } = require('../middleware/auth.middleware');
// All routes require admin authentication
router.use(authenticateToken);
router.use(requireRole('admin'));
/**
* GET /api/admin/disk-metrics
* Get metrics for all systems (local + remote)
*/
router.get('/', asyncHandler(diskMetricsController.getAllMetrics));
/**
* GET /api/admin/disk-metrics/local
* Get local system metrics only
*/
router.get('/local', asyncHandler(diskMetricsController.getLocalMetrics));
/**
* GET /api/admin/disk-metrics/remote
* Get remote production metrics only
*/
router.get('/remote', asyncHandler(diskMetricsController.getRemoteMetrics));
module.exports = router;