67 lines
1.9 KiB
TypeScript
67 lines
1.9 KiB
TypeScript
import { defineEventHandler } from 'h3'
|
|
import { databaseManager } from '~~/server/utils/database-manager'
|
|
import { getInstanceId } from '~~/server/utils/instance-id'
|
|
import { isTelemetryEnabled } from '~~/server/utils/telemetry'
|
|
|
|
export default defineEventHandler(async () => {
|
|
try {
|
|
const instanceId = await getInstanceId()
|
|
const telemetryEnabled = await isTelemetryEnabled()
|
|
|
|
// 获取数据库连接状态
|
|
const dbStatus = await databaseManager.getConnectionStatus()
|
|
let poolStatus = null
|
|
try {
|
|
poolStatus = await databaseManager.getConnectionPoolStatus()
|
|
} catch (poolError) {
|
|
console.warn('[System Status] Failed to get database pool status:', poolError)
|
|
}
|
|
|
|
// 数据库连接测试结果
|
|
const dbTestResult = dbStatus.connected
|
|
const dbError = dbStatus.connected ? null : dbStatus.error
|
|
|
|
// 获取系统信息
|
|
const systemInfo = {
|
|
timestamp: new Date().toISOString(),
|
|
uptime: process.uptime(),
|
|
nodeVersion: process.version,
|
|
platform: process.platform,
|
|
arch: process.arch,
|
|
memory: {
|
|
used: Math.round(process.memoryUsage().heapUsed / 1024 / 1024),
|
|
total: Math.round(process.memoryUsage().heapTotal / 1024 / 1024),
|
|
external: Math.round(process.memoryUsage().external / 1024 / 1024)
|
|
}
|
|
}
|
|
|
|
// 返回完整的系统状态
|
|
return {
|
|
status: 'ok',
|
|
instance: {
|
|
instanceId,
|
|
telemetryEnabled
|
|
},
|
|
database: {
|
|
connected: dbTestResult,
|
|
poolStatus: poolStatus,
|
|
connectionInfo: dbStatus,
|
|
error: dbError
|
|
},
|
|
system: systemInfo
|
|
}
|
|
} catch (error) {
|
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error'
|
|
|
|
return {
|
|
status: 'error',
|
|
error: errorMessage,
|
|
database: {
|
|
connected: false,
|
|
poolStatus: null,
|
|
error: errorMessage
|
|
}
|
|
}
|
|
}
|
|
})
|