diff --git a/management/src/pages/System.jsx b/management/src/pages/System.jsx
index e0583df..d457d70 100644
--- a/management/src/pages/System.jsx
+++ b/management/src/pages/System.jsx
@@ -103,24 +103,31 @@ const System = () => {
{name.replace('drone-detection-', '').replace('uamils-', '')}
-
-
-
CPU
-
{metrics.cpu}
+ {metrics.error ? (
+
+
Not Available
+
{metrics.message}
-
-
Memory
-
{metrics.memory.percentage}
+ ) : (
+
+
+ CPU
+ {metrics.cpu}
+
+
+ Memory
+ {metrics.memory.percentage}
+
+
+ Network I/O
+ {metrics.network}
+
+
+ Disk I/O
+ {metrics.disk}
+
-
- Network I/O
- {metrics.network}
-
-
- Disk I/O
- {metrics.disk}
-
-
+ )}
)
@@ -233,26 +240,33 @@ const System = () => {
-
-
-
-
CPU Usage
-
{systemInfo.system.cpu.usage}
+ {systemInfo.system.error ? (
+
+
System metrics unavailable
+
{systemInfo.system.message}
+
+ ) : (
+
+
+
+ CPU Usage
+ {systemInfo.system.cpu.usage}
+
+
-
-
-
-
-
Memory
-
{systemInfo.system.memory.used} / {systemInfo.system.memory.total}
+
+
+ Memory
+ {systemInfo.system.memory.used} / {systemInfo.system.memory.total}
+
+
+
+
+ Disk
+ {systemInfo.system.disk}
-
-
- Disk
- {systemInfo.system.disk}
-
-
+ )}
@@ -290,11 +304,19 @@ const System = () => {
{/* Container Metrics */}
-
- {Object.entries(systemInfo.containers).map(([name, metrics]) => (
-
- ))}
-
+ {systemInfo.containers.error ? (
+
+
+
Docker containers not available
+
{systemInfo.containers.message}
+
+ ) : (
+
+ {Object.entries(systemInfo.containers).map(([name, metrics]) => (
+
+ ))}
+
+ )}
diff --git a/server/routes/management.js b/server/routes/management.js
index e95acda..e054f3e 100644
--- a/server/routes/management.js
+++ b/server/routes/management.js
@@ -151,26 +151,9 @@ router.get('/system-info', async (req, res) => {
}, {});
} catch (dockerError) {
console.log('Docker stats not available:', dockerError.message);
- // Fallback to mock data for development
containerMetrics = {
- 'drone-detection-backend': {
- cpu: '2.5%',
- memory: { usage: '256MB / 1GB', percentage: '25.6%' },
- network: '1.2MB / 3.4MB',
- disk: '45MB / 12MB'
- },
- 'drone-detection-frontend': {
- cpu: '0.8%',
- memory: { usage: '128MB / 512MB', percentage: '25%' },
- network: '800KB / 2.1MB',
- disk: '12MB / 5MB'
- },
- 'drone-detection-management': {
- cpu: '1.2%',
- memory: { usage: '192MB / 512MB', percentage: '37.5%' },
- network: '500KB / 1.2MB',
- disk: '8MB / 3MB'
- }
+ error: 'Docker not available or containers not running',
+ message: dockerError.message
};
}
@@ -202,9 +185,11 @@ router.get('/system-info', async (req, res) => {
} catch (sysError) {
console.log('System metrics not available:', sysError.message);
systemMetrics = {
- memory: { used: '1.2GB', total: '4GB', percentage: 30 },
- cpu: { usage: '15.5%', percentage: 15.5 },
- disk: '2.1GB / 20GB (11%)'
+ error: 'System metrics not available',
+ message: sysError.message,
+ memory: { used: 'N/A', total: 'N/A', percentage: 0 },
+ cpu: { usage: 'N/A', percentage: 0 },
+ disk: 'N/A'
};
}
@@ -261,18 +246,21 @@ router.get('/system-info', async (req, res) => {
});
};
- // Check SSL for main domains
- const sslChecks = await Promise.all([
- checkSSLCert('dev.uggla.uamils.com'),
- checkSSLCert('uamils-ab.dev.uggla.uamils.com'),
- checkSSLCert('management.dev.uggla.uamils.com')
- ]);
+ // Check SSL for management host only
+ const managementHost = 'management.dev.uggla.uamils.com';
+ let sslStatus = {};
- const sslStatus = {
- 'dev.uggla.uamils.com': sslChecks[0],
- 'uamils-ab.dev.uggla.uamils.com': sslChecks[1],
- 'management.dev.uggla.uamils.com': sslChecks[2]
- };
+ try {
+ const sslCheck = await checkSSLCert(managementHost);
+ sslStatus[managementHost] = sslCheck;
+ } catch (sslError) {
+ console.log('SSL check failed:', sslError.message);
+ sslStatus[managementHost] = {
+ status: 'error',
+ expiresAt: null,
+ error: 'SSL check failed: ' + sslError.message
+ };
+ }
res.json({
success: true,