diff --git a/management/src/pages/System.jsx b/management/src/pages/System.jsx index 9d7726b..5495ace 100644 --- a/management/src/pages/System.jsx +++ b/management/src/pages/System.jsx @@ -105,6 +105,7 @@ const System = () => { case 'cache': return '⚡'; case 'proxy': return '🌐'; case 'application': return '📱'; + case 'app': return '📱'; case 'logging': return '📋'; case 'monitoring': return '📊'; default: return '📦'; @@ -116,13 +117,33 @@ const System = () => { case 'database': return 'border-l-blue-500'; case 'cache': return 'border-l-yellow-500'; case 'proxy': return 'border-l-green-500'; - case 'application': return 'border-l-purple-500'; + case 'application': case 'app': return 'border-l-purple-500'; case 'logging': return 'border-l-orange-500'; case 'monitoring': return 'border-l-red-500'; default: return 'border-l-gray-500'; } }; + const getStatusColor = (status) => { + switch (status) { + case 'healthy': case 'responding': return 'text-green-600'; + case 'timeout': case 'warning': return 'text-yellow-600'; + case 'unreachable': case 'error': case 'health_check_failed': return 'text-red-600'; + case 'running': case 'Up': return 'text-green-600'; + default: return 'text-gray-600'; + } + }; + + const getStatusIcon = (status) => { + switch (status) { + case 'healthy': case 'responding': return '✅'; + case 'timeout': return '⏱️'; + case 'unreachable': case 'error': return '❌'; + case 'running': case 'Up': return '🟢'; + default: return '⚪'; + } + }; + return (
@@ -137,77 +158,71 @@ const System = () => { )}
- {metrics.error || metrics.status === 'health_check_failed' || metrics.status === 'unreachable' ? ( -
-
- {metrics.status === 'health_check_failed' ? 'Health Check Failed' : - metrics.status === 'unreachable' ? 'Unreachable' : - metrics.status === 'timeout' ? 'Timeout' : 'Not Available'} -
-
{metrics.error || metrics.message}
+
+
+ Status + + {getStatusIcon(metrics.status)} + {metrics.status === 'health_check_failed' ? 'Failed' : + metrics.status.charAt(0).toUpperCase() + metrics.status.slice(1)} +
- ) : metrics.status === 'responding' ? ( -
-
- Status - Responding + + {metrics.error && ( +
+
Error Details:
+
{metrics.error}
-
- Basic connectivity confirmed + )} + + {metrics.raw && metrics.status === 'healthy' && ( +
+
Response: {metrics.raw.trim()}
-
- ) : metrics.source === 'docker_compose' || metrics.source === 'process_list' ? ( -
-
- Status - - {metrics.status} - -
- {metrics.health && ( + )} + + {/* Show resource metrics if available */} + {metrics.cpu && ( + <>
- Health - {metrics.health} + CPU + {metrics.cpu}
- )} - {metrics.ports && (
- Ports - {metrics.ports} + Memory + {metrics.memory?.percentage || metrics.memory}
- )} -
+
+ Network I/O + {metrics.network} +
+
+ Disk I/O + {metrics.disk} +
+ + )} + + {metrics.health && metrics.health !== 'unknown' && ( +
+ Health + {metrics.health} +
+ )} + + {metrics.ports && ( +
+ Ports + {metrics.ports} +
+ )} + + {metrics.source && ( +
Source: {metrics.source.replace('_', ' ').toUpperCase()}
-
- ) : ( -
-
- CPU - {metrics.cpu} -
-
- Memory - {metrics.memory?.percentage || metrics.memory} -
-
- Network I/O - {metrics.network} -
-
- Disk I/O - {metrics.disk} -
- {metrics.source && ( -
- Source: {metrics.source.replace('_', ' ').toUpperCase()} -
- )} -
- )} + )} +
); }; @@ -326,6 +341,25 @@ const System = () => { Uptime {systemInfo.platform.uptime}
+ {/* Container Health Summary */} +
+
Service Health
+
+ {Object.entries(systemInfo.containers).map(([name, metrics]) => { + const isHealthy = metrics.status === 'healthy' || metrics.status === 'responding'; + return ( +
+ ); + })} +
+