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>
34 lines
992 B
JavaScript
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;
|