시스템 모니터

This commit is contained in:
2025-12-28 12:03:48 +09:00
parent dbae6649bc
commit a871ec8008
73 changed files with 21354 additions and 1 deletions

View File

@@ -0,0 +1,27 @@
import { getDb } from '../../../utils/db'
import { refreshServerTimer } from '../../../utils/server-scheduler'
export default defineEventHandler(async (event) => {
const targetId = getRouterParam(event, 'id')
if (!targetId) {
throw createError({
statusCode: 400,
message: 'target_id is required'
})
}
// 스케줄러에서 제거
refreshServerTimer(Number(targetId))
const db = getDb()
const result = db.prepare(`
DELETE FROM server_targets WHERE target_id = ?
`).run(targetId)
return {
success: true,
changes: result.changes
}
})

View File

@@ -0,0 +1,36 @@
import { getDb } from '../../../utils/db'
import { refreshServerTimer } from '../../../utils/server-scheduler'
export default defineEventHandler(async (event) => {
const targetId = getRouterParam(event, 'id')
const body = await readBody(event)
const { server_name, server_ip, glances_url, is_active, collect_interval } = body
if (!targetId) {
throw createError({
statusCode: 400,
message: 'target_id is required'
})
}
const db = getDb()
const result = db.prepare(`
UPDATE server_targets
SET server_name = ?,
server_ip = ?,
glances_url = ?,
is_active = ?,
collect_interval = ?,
updated_at = datetime('now', 'localtime')
WHERE target_id = ?
`).run(server_name, server_ip, glances_url, is_active ? 1 : 0, collect_interval || 60, targetId)
// 스케줄러에 반영
refreshServerTimer(Number(targetId))
return {
success: true,
changes: result.changes
}
})

View File

@@ -0,0 +1,12 @@
import { getDb } from '../../../utils/db'
export default defineEventHandler(() => {
const db = getDb()
const targets = db.prepare(`
SELECT * FROM server_targets
ORDER BY target_id ASC
`).all()
return targets
})

View File

@@ -0,0 +1,33 @@
import { getDb } from '../../../utils/db'
import { refreshServerTimer } from '../../../utils/server-scheduler'
export default defineEventHandler(async (event) => {
const body = await readBody(event)
const { server_name, server_ip, glances_url, is_active = 1, collect_interval = 60 } = body
if (!server_name || !server_ip || !glances_url) {
throw createError({
statusCode: 400,
message: 'server_name, server_ip, glances_url are required'
})
}
const db = getDb()
const result = db.prepare(`
INSERT INTO server_targets (server_name, server_ip, glances_url, is_active, collect_interval)
VALUES (?, ?, ?, ?, ?)
`).run(server_name, server_ip, glances_url, is_active ? 1 : 0, collect_interval)
const targetId = result.lastInsertRowid as number
// 스케줄러에 반영
if (is_active) {
refreshServerTimer(targetId)
}
return {
success: true,
target_id: targetId
}
})