시스템 모니터
This commit is contained in:
59
backend/api/server/history/snapshots.get.ts
Normal file
59
backend/api/server/history/snapshots.get.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import { getDb } from '../../../utils/db'
|
||||
|
||||
export default defineEventHandler((event) => {
|
||||
const query = getQuery(event)
|
||||
const targetId = query.target_id as string
|
||||
const period = (query.period as string) || '1h'
|
||||
|
||||
if (!targetId) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
message: 'target_id is required'
|
||||
})
|
||||
}
|
||||
|
||||
// 기간별 시간 계산
|
||||
const periodMap: Record<string, string> = {
|
||||
'1h': '-1 hour',
|
||||
'2h': '-2 hours',
|
||||
'3h': '-3 hours',
|
||||
'4h': '-4 hours',
|
||||
'5h': '-5 hours',
|
||||
'6h': '-6 hours',
|
||||
'12h': '-12 hours',
|
||||
'18h': '-18 hours',
|
||||
'24h': '-24 hours',
|
||||
'7d': '-7 days',
|
||||
'30d': '-30 days'
|
||||
}
|
||||
|
||||
const timeOffset = periodMap[period] || '-1 hour'
|
||||
|
||||
const db = getDb()
|
||||
|
||||
const snapshots = db.prepare(`
|
||||
SELECT
|
||||
snapshot_id,
|
||||
cpu_percent,
|
||||
cpu_temp,
|
||||
load_percent,
|
||||
memory_percent,
|
||||
memory_used,
|
||||
memory_total,
|
||||
swap_percent,
|
||||
swap_used,
|
||||
swap_total,
|
||||
is_online,
|
||||
collected_at
|
||||
FROM server_snapshots
|
||||
WHERE target_id = ?
|
||||
AND collected_at >= datetime('now', 'localtime', ?)
|
||||
ORDER BY collected_at ASC
|
||||
`).all(targetId, timeOffset)
|
||||
|
||||
return {
|
||||
target_id: targetId,
|
||||
period,
|
||||
data: snapshots
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user