feat(opsserver,web): add real-time platform service log streaming to the dashboard
This commit is contained in:
@@ -222,9 +222,20 @@ export class ObViewServices extends DeesElement {
|
||||
domain: s.domain || null,
|
||||
status: mapStatus(s.status),
|
||||
}));
|
||||
const displayStatus = (status: string) => {
|
||||
switch (status) {
|
||||
case 'running': return 'Running';
|
||||
case 'stopped': return 'Stopped';
|
||||
case 'starting': return 'Starting...';
|
||||
case 'stopping': return 'Stopping...';
|
||||
case 'failed': return 'Failed';
|
||||
case 'not-deployed': return 'Not Deployed';
|
||||
default: return status;
|
||||
}
|
||||
};
|
||||
const mappedPlatformServices = this.servicesState.platformServices.map((ps) => ({
|
||||
name: ps.displayName,
|
||||
status: ps.status === 'running' ? `Running` : ps.status,
|
||||
status: displayStatus(ps.status),
|
||||
running: ps.status === 'running',
|
||||
type: ps.type,
|
||||
}));
|
||||
@@ -384,14 +395,36 @@ export class ObViewServices extends DeesElement {
|
||||
(ps) => ps.type === this.selectedPlatformType,
|
||||
);
|
||||
const stats = this.servicesState.currentPlatformServiceStats;
|
||||
const metrics = stats
|
||||
? {
|
||||
cpu: Math.round(stats.cpuPercent),
|
||||
memory: Math.round(stats.memoryPercent),
|
||||
storage: 0,
|
||||
connections: 0,
|
||||
}
|
||||
: undefined;
|
||||
const metrics = {
|
||||
cpu: stats ? Math.round(stats.cpuPercent) : 0,
|
||||
memory: stats ? Math.round(stats.memoryPercent) : 0,
|
||||
storage: 0,
|
||||
connections: undefined as number | undefined,
|
||||
};
|
||||
|
||||
// Real service info per platform type
|
||||
const serviceInfo: Record<string, { host: string; port: number; version: string; config: Record<string, any> }> = {
|
||||
mongodb: { host: 'onebox-mongodb', port: 27017, version: '4.4', config: { engine: 'WiredTiger', authEnabled: true } },
|
||||
minio: { host: 'onebox-minio', port: 9000, version: 'latest', config: { consolePort: 9001, region: 'us-east-1' } },
|
||||
clickhouse: { host: 'onebox-clickhouse', port: 8123, version: 'latest', config: { nativePort: 9000, httpPort: 8123 } },
|
||||
caddy: { host: 'onebox-caddy', port: 80, version: '2-alpine', config: { httpsPort: 443, adminApi: 2019 } },
|
||||
};
|
||||
const info = platformService
|
||||
? serviceInfo[platformService.type] || { host: 'unknown', port: 0, version: '', config: {} }
|
||||
: { host: '', port: 0, version: '', config: {} };
|
||||
|
||||
// Map backend status to catalog-compatible status
|
||||
const mapPlatformStatus = (status: string): 'running' | 'stopped' | 'error' => {
|
||||
switch (status) {
|
||||
case 'running': return 'running';
|
||||
case 'failed': return 'error';
|
||||
case 'starting':
|
||||
case 'stopping':
|
||||
case 'stopped':
|
||||
case 'not-deployed':
|
||||
default: return 'stopped';
|
||||
}
|
||||
};
|
||||
|
||||
return html`
|
||||
<ob-sectionheading>Platform Service</ob-sectionheading>
|
||||
@@ -406,15 +439,11 @@ export class ObViewServices extends DeesElement {
|
||||
id: platformService.type,
|
||||
name: platformService.displayName,
|
||||
type: platformService.type,
|
||||
status: platformService.status === 'running'
|
||||
? 'running'
|
||||
: platformService.status === 'failed'
|
||||
? 'error'
|
||||
: 'stopped',
|
||||
version: '',
|
||||
host: 'localhost',
|
||||
port: 0,
|
||||
config: {},
|
||||
status: mapPlatformStatus(platformService.status),
|
||||
version: info.version,
|
||||
host: info.host,
|
||||
port: info.port,
|
||||
config: info.config,
|
||||
metrics,
|
||||
}
|
||||
: null}
|
||||
|
||||
Reference in New Issue
Block a user