소스 수정
This commit is contained in:
28
backend/api/server/location-stats.get.ts
Normal file
28
backend/api/server/location-stats.get.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { query } from '../../utils/db'
|
||||
|
||||
export default defineEventHandler(async () => {
|
||||
const stats = await query(`
|
||||
SELECT
|
||||
t.physical_location,
|
||||
COUNT(DISTINCT t.target_id) as server_count,
|
||||
ROUND(AVG(s.cpu_temp)::numeric, 1) as avg_temp,
|
||||
ROUND(SUM(n.speed_recv)::numeric, 0) as total_rx,
|
||||
ROUND(SUM(n.speed_sent)::numeric, 0) as total_tx
|
||||
FROM server_targets t
|
||||
LEFT JOIN server_snapshots s ON t.target_id = s.target_id
|
||||
AND s.collected_at::timestamp >= NOW() - INTERVAL '10 minutes'
|
||||
LEFT JOIN server_networks n ON t.target_id = n.target_id
|
||||
AND n.collected_at::timestamp >= NOW() - INTERVAL '10 minutes'
|
||||
WHERE t.is_active = 1
|
||||
GROUP BY t.physical_location
|
||||
ORDER BY t.physical_location
|
||||
`)
|
||||
|
||||
return stats.map((row: any) => ({
|
||||
location: row.physical_location || '미지정',
|
||||
serverCount: Number(row.server_count) || 0,
|
||||
avgTemp: row.avg_temp ? parseFloat(row.avg_temp) : null,
|
||||
totalRx: Number(row.total_rx) || 0,
|
||||
totalTx: Number(row.total_tx) || 0
|
||||
}))
|
||||
})
|
||||
Reference in New Issue
Block a user