mirror of
				https://github.com/csehviktor/status-monitor.git
				synced 2025-08-08 18:06:14 +02:00 
			
		
		
		
	cleanup redundant code
This commit is contained in:
		| @@ -1,6 +1,6 @@ | |||||||
| import type { StatusMessage } from "@/services/types"; | import type { StatusMessage } from "@/services/types"; | ||||||
| import { addRealtimeData, getRealtimeData } from "@/services/data_service"; | import { addDataPoint, getRealtimeData } from "@/services/store"; | ||||||
| import { formatTimestamp } from "@/services/utils"; | import { formatTimestamp, calcPercentage } from "@/services/utils"; | ||||||
| import { useEffect } from "react"; | import { useEffect } from "react"; | ||||||
|  |  | ||||||
| export type ChartData = { | export type ChartData = { | ||||||
| @@ -22,82 +22,95 @@ export function useChartData(data: StatusMessage | null): ChartDataReturns { | |||||||
|     useEffect(() => { |     useEffect(() => { | ||||||
|         if (!data) return; |         if (!data) return; | ||||||
|  |  | ||||||
|         addRealtimeData(data); |         addDataPoint(data); | ||||||
|     }, [data]); |     }, [data]); | ||||||
|  |  | ||||||
|     const cpuPoints = getRealtimeData("cpu"); |     const realtimeData = getRealtimeData(); | ||||||
|     const cpuUserPoints = getRealtimeData("cpu_user"); |  | ||||||
|     const cpuSystemPoints = getRealtimeData("cpu_system"); |  | ||||||
|     const cpuIdlePoints = getRealtimeData("cpu_idle"); |  | ||||||
|     const cpuStealPoints = getRealtimeData("cpu_steal"); |  | ||||||
|     const cpuIowaitPoints = getRealtimeData("cpu_iowait"); |  | ||||||
|     const memoryPoints = getRealtimeData("memory"); |  | ||||||
|     const swapPoints = getRealtimeData("swap"); |  | ||||||
|     const networkUpPoints = getRealtimeData("network_up"); |  | ||||||
|     const networkDownPoints = getRealtimeData("network_down"); |  | ||||||
|  |  | ||||||
|     return { |     return { | ||||||
|         cpuData: { |         cpuData: { | ||||||
|             labels: cpuPoints.map((p) => formatTimestamp(p.timestamp)), |             labels: realtimeData.map((p) => formatTimestamp(p.timestamp)), | ||||||
|             datasets: [ |             datasets: [ | ||||||
|                 { |                 { | ||||||
|                     label: "Total CPU (%)", |                     label: "Total CPU (%)", | ||||||
|                     data: cpuPoints.map((p) => p.value), |                     data: realtimeData.map(({ metrics }) => metrics.cpu.usage), | ||||||
|                     color: "#3b82f6", |                     color: "#3b82f6", | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                     label: "User (%)", |                     label: "User (%)", | ||||||
|                     data: cpuUserPoints.map((p) => p.value), |                     data: realtimeData.map( | ||||||
|  |                         ({ metrics }) => metrics.cpu.breakdown.user, | ||||||
|  |                     ), | ||||||
|                     color: "#10b981", |                     color: "#10b981", | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                     label: "System (%)", |                     label: "System (%)", | ||||||
|                     data: cpuSystemPoints.map((p) => p.value), |                     data: realtimeData.map( | ||||||
|  |                         ({ metrics }) => metrics.cpu.breakdown.system, | ||||||
|  |                     ), | ||||||
|                     color: "#f59e0b", |                     color: "#f59e0b", | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                     label: "I/O Wait (%)", |                     label: "I/O Wait (%)", | ||||||
|                     data: cpuIowaitPoints.map((p) => p.value), |                     data: realtimeData.map( | ||||||
|  |                         ({ metrics }) => metrics.cpu.breakdown.iowait, | ||||||
|  |                     ), | ||||||
|                     color: "#ef4444", |                     color: "#ef4444", | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                     label: "Steal (%)", |                     label: "Steal (%)", | ||||||
|                     data: cpuStealPoints.map((p) => p.value), |                     data: realtimeData.map( | ||||||
|  |                         ({ metrics }) => metrics.cpu.breakdown.steal, | ||||||
|  |                     ), | ||||||
|                     color: "#8b5cf6", |                     color: "#8b5cf6", | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                     label: "Idle (%)", |                     label: "Idle (%)", | ||||||
|                     data: cpuIdlePoints.map((p) => p.value), |                     data: realtimeData.map( | ||||||
|  |                         ({ metrics }) => metrics.cpu.breakdown.idle, | ||||||
|  |                     ), | ||||||
|                     color: "#6b7280", |                     color: "#6b7280", | ||||||
|                 }, |                 }, | ||||||
|             ], |             ], | ||||||
|         }, |         }, | ||||||
|         memoryData: { |         memoryData: { | ||||||
|             labels: memoryPoints.map((p) => formatTimestamp(p.timestamp)), |             labels: realtimeData.map((p) => formatTimestamp(p.timestamp)), | ||||||
|             datasets: [ |             datasets: [ | ||||||
|                 { |                 { | ||||||
|                     label: "Memory Usage (%)", |                     label: "Memory Usage (%)", | ||||||
|                     data: memoryPoints.map((p) => p.value), |                     data: realtimeData.map(({ metrics }) => | ||||||
|  |                         calcPercentage( | ||||||
|  |                             metrics.memory.used, | ||||||
|  |                             metrics.memory.total, | ||||||
|  |                         ), | ||||||
|  |                     ), | ||||||
|                     color: "#10b981", |                     color: "#10b981", | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                     label: "Swap Usage (%)", |                     label: "Swap Usage (%)", | ||||||
|                     data: swapPoints.map((p) => p.value), |                     data: realtimeData.map(({ metrics }) => | ||||||
|  |                         calcPercentage( | ||||||
|  |                             metrics.memory.swap_used, | ||||||
|  |                             metrics.memory.swap_total, | ||||||
|  |                         ), | ||||||
|  |                     ), | ||||||
|                     color: "#f59e0b", |                     color: "#f59e0b", | ||||||
|                 }, |                 }, | ||||||
|             ], |             ], | ||||||
|         }, |         }, | ||||||
|         networkData: { |         networkData: { | ||||||
|             labels: networkUpPoints.map((p) => formatTimestamp(p.timestamp)), |             labels: realtimeData.map((p) => formatTimestamp(p.timestamp)), | ||||||
|             datasets: [ |             datasets: [ | ||||||
|                 { |                 { | ||||||
|                     label: "Upload (B/s)", |                     label: "Upload (B/s)", | ||||||
|                     data: networkUpPoints.map((p) => p.value), |                     data: realtimeData.map(({ metrics }) => metrics.network.up), | ||||||
|                     color: "#ef4444", |                     color: "#ef4444", | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                     label: "Download (B/s)", |                     label: "Download (B/s)", | ||||||
|                     data: networkDownPoints.map((p) => p.value), |                     data: realtimeData.map( | ||||||
|  |                         ({ metrics }) => metrics.network.down, | ||||||
|  |                     ), | ||||||
|                     color: "#3b82f6", |                     color: "#3b82f6", | ||||||
|                 }, |                 }, | ||||||
|             ], |             ], | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ import { getLastMessage, setLastMessage } from "@/services/store"; | |||||||
| import { | import { | ||||||
|     formatBytes, |     formatBytes, | ||||||
|     formatPercentage, |     formatPercentage, | ||||||
|     breakdownMetrics, |     calcPercentage, | ||||||
| } from "@/services/utils"; | } from "@/services/utils"; | ||||||
| import { initializeConnection } from "@/services/websocket"; | import { initializeConnection } from "@/services/websocket"; | ||||||
| import { useEffect, useState } from "react"; | import { useEffect, useState } from "react"; | ||||||
| @@ -54,19 +54,18 @@ export function AgentPage() { | |||||||
|         return "critical"; |         return "critical"; | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     const { |     const cpuUsage = metrics?.cpu.usage ?? 0; | ||||||
|         cpuThreads, |  | ||||||
|         cpuUsage, |  | ||||||
|         memoryUsage, |  | ||||||
|         memoryUsed, |  | ||||||
|         memoryTotal, |  | ||||||
|         diskUsage, |  | ||||||
|         diskFree, |  | ||||||
|         diskTotal, |  | ||||||
|         networkUp, |  | ||||||
|         networkDown, |  | ||||||
|     } = breakdownMetrics(message?.metrics); |  | ||||||
|  |  | ||||||
|  |     const memoryUsed = metrics?.memory.used ?? 0; | ||||||
|  |     const memoryTotal = metrics?.memory.total ?? 0; | ||||||
|  |     const memoryUsage = calcPercentage(memoryUsed, memoryTotal); | ||||||
|  |  | ||||||
|  |     const diskFree = (metrics?.disk.total ?? 0) - (metrics?.disk.free ?? 0); | ||||||
|  |     const diskTotal = metrics?.disk.total ?? 0; | ||||||
|  |     const diskUsage = calcPercentage(diskFree, diskTotal); | ||||||
|  |  | ||||||
|  |     const networkUp = metrics?.network.up ?? 0; | ||||||
|  |     const networkDown = metrics?.network.down ?? 0; | ||||||
|     const networkUsage = networkUp + networkDown; |     const networkUsage = networkUp + networkDown; | ||||||
|  |  | ||||||
|     return ( |     return ( | ||||||
| @@ -92,7 +91,7 @@ export function AgentPage() { | |||||||
|                                 title: "CPU USAGE", |                                 title: "CPU USAGE", | ||||||
|                                 value: formatPercentage(cpuUsage), |                                 value: formatPercentage(cpuUsage), | ||||||
|                                 status: getMetricStatus(cpuUsage), |                                 status: getMetricStatus(cpuUsage), | ||||||
|                                 subtitle: `${cpuThreads} threads`, |                                 subtitle: `${metrics?.cpu.threads} threads`, | ||||||
|                             }} |                             }} | ||||||
|                         > |                         > | ||||||
|                             <DonutChart |                             <DonutChart | ||||||
|   | |||||||
| @@ -1,82 +0,0 @@ | |||||||
| import type { StatusMessage } from "@/services/types"; |  | ||||||
| import { breakdownMetrics } from "@/services/utils"; |  | ||||||
|  |  | ||||||
| type HistoricalDataPoint = { |  | ||||||
|     timestamp: string; |  | ||||||
|     value: number; |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| type HistoricalMetrics = { |  | ||||||
|     cpu: HistoricalDataPoint[]; |  | ||||||
|     cpu_user: HistoricalDataPoint[]; |  | ||||||
|     cpu_system: HistoricalDataPoint[]; |  | ||||||
|     cpu_idle: HistoricalDataPoint[]; |  | ||||||
|     cpu_steal: HistoricalDataPoint[]; |  | ||||||
|     cpu_iowait: HistoricalDataPoint[]; |  | ||||||
|     memory: HistoricalDataPoint[]; |  | ||||||
|     swap: HistoricalDataPoint[]; |  | ||||||
|     network_up: HistoricalDataPoint[]; |  | ||||||
|     network_down: HistoricalDataPoint[]; |  | ||||||
| }; |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| //export type TimePeriod = "realtime" | "hour" | "day" | "week"; |  | ||||||
|  |  | ||||||
| const realtimeData = new Map<string, HistoricalDataPoint[]>(); |  | ||||||
| const maxRealtimePoints = 50; |  | ||||||
|  |  | ||||||
| function addDataPoint(metric: string, timestamp: string, value: number) { |  | ||||||
|     if (!realtimeData.has(metric)) { |  | ||||||
|         realtimeData.set(metric, []); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     const data = realtimeData.get(metric)!; |  | ||||||
|     data.push({ timestamp, value }); |  | ||||||
|  |  | ||||||
|     if (data.length > maxRealtimePoints) { |  | ||||||
|         data.shift(); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| export const addRealtimeData = (data: StatusMessage): void => { |  | ||||||
|     const timestamp = data.timestamp; |  | ||||||
|  |  | ||||||
|     const { |  | ||||||
|         cpuUsage, |  | ||||||
|         cpuUser, |  | ||||||
|         cpuSystem, |  | ||||||
|         cpuIdle, |  | ||||||
|         cpuSteal, |  | ||||||
|         cpuIowait, |  | ||||||
|         memoryUsage, |  | ||||||
|         swapUsage, |  | ||||||
|         networkUp, |  | ||||||
|         networkDown, |  | ||||||
|     } = breakdownMetrics(data.metrics); |  | ||||||
|  |  | ||||||
|     addDataPoint("cpu", timestamp, cpuUsage); |  | ||||||
|     addDataPoint("cpu_user", timestamp, cpuUser); |  | ||||||
|     addDataPoint("cpu_system", timestamp, cpuSystem); |  | ||||||
|     addDataPoint("cpu_idle", timestamp, cpuIdle); |  | ||||||
|     addDataPoint("cpu_steal", timestamp, cpuSteal); |  | ||||||
|     addDataPoint("cpu_iowait", timestamp, cpuIowait); |  | ||||||
|     addDataPoint("memory", timestamp, memoryUsage); |  | ||||||
|     addDataPoint("swap", timestamp, swapUsage); |  | ||||||
|     addDataPoint("network_up", timestamp, networkUp); |  | ||||||
|     addDataPoint("network_down", timestamp, networkDown); |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| export function getRealtimeData(metric: string): HistoricalDataPoint[] { |  | ||||||
|     return realtimeData.get(metric) || []; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| export async function getHistoricalData(period: TimePeriod): Promise<HistoricalMetrics> { |  | ||||||
|     return ...todo |  | ||||||
| } |  | ||||||
|  |  | ||||||
| function clearRealtimeData() { |  | ||||||
|     realtimeData.clear(); |  | ||||||
| } |  | ||||||
| */ |  | ||||||
| @@ -10,3 +10,17 @@ export function getLastMessage(): StatusMessage | null { | |||||||
| export function setLastMessage(message: StatusMessage) { | export function setLastMessage(message: StatusMessage) { | ||||||
|     store.set(message); |     store.set(message); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | const realtimeData: StatusMessage[] = []; | ||||||
|  | const maxRealtimePoints = 50; | ||||||
|  |  | ||||||
|  | export function addDataPoint(value: StatusMessage) { | ||||||
|  |     realtimeData.push(value); | ||||||
|  |  | ||||||
|  |     if (realtimeData.length > maxRealtimePoints) { | ||||||
|  |         realtimeData.shift(); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | export function getRealtimeData(): StatusMessage[] { | ||||||
|  |     return realtimeData ?? []; | ||||||
|  | } | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| import type { Metrics, UptimeMessage } from "@/services/types"; | import type { UptimeMessage } from "@/services/types"; | ||||||
|  |  | ||||||
| export function isAgentOnline(data: UptimeMessage): boolean { | export function isAgentOnline(data: UptimeMessage): boolean { | ||||||
|     const timeDiff = new Date().getTime() - new Date(data.last_seen).getTime(); |     const timeDiff = new Date().getTime() - new Date(data.last_seen).getTime(); | ||||||
| @@ -66,54 +66,3 @@ export function calcPercentage( | |||||||
| export function formatPercentage(val: number | undefined) { | export function formatPercentage(val: number | undefined) { | ||||||
|     return `${(val ?? 0).toFixed(2)}%`; |     return `${(val ?? 0).toFixed(2)}%`; | ||||||
| } | } | ||||||
|  |  | ||||||
| export type BrokedownMetrics = { |  | ||||||
|     cpuThreads: number; |  | ||||||
|     cpuUsage: number; |  | ||||||
|     cpuUser: number; |  | ||||||
|     cpuSystem: number; |  | ||||||
|     cpuIdle: number; |  | ||||||
|     cpuSteal: number; |  | ||||||
|     cpuIowait: number; |  | ||||||
|     memoryUsage: number; |  | ||||||
|     memoryUsed: number; |  | ||||||
|     memoryTotal: number; |  | ||||||
|     swapUsage: number; |  | ||||||
|     diskUsage: number; |  | ||||||
|     diskFree: number; |  | ||||||
|     diskTotal: number; |  | ||||||
|     networkUp: number; |  | ||||||
|     networkDown: number; |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| export function breakdownMetrics( |  | ||||||
|     metrics: Metrics | undefined, |  | ||||||
| ): BrokedownMetrics { |  | ||||||
|     return { |  | ||||||
|         cpuThreads: metrics?.cpu.threads ?? 0, |  | ||||||
|         cpuUsage: metrics?.cpu.usage ?? 0, |  | ||||||
|         cpuUser: metrics?.cpu.breakdown.user ?? 0, |  | ||||||
|         cpuSystem: metrics?.cpu.breakdown.system ?? 0, |  | ||||||
|         cpuIdle: metrics?.cpu.breakdown.idle ?? 0, |  | ||||||
|         cpuSteal: metrics?.cpu.breakdown.steal ?? 0, |  | ||||||
|         cpuIowait: metrics?.cpu.breakdown.iowait ?? 0, |  | ||||||
|         memoryUsage: calcPercentage( |  | ||||||
|             metrics?.memory.used, |  | ||||||
|             metrics?.memory.total, |  | ||||||
|         ), |  | ||||||
|         memoryUsed: metrics?.memory.used ?? 0, |  | ||||||
|         memoryTotal: metrics?.memory.total ?? 0, |  | ||||||
|         swapUsage: calcPercentage( |  | ||||||
|             metrics?.memory.swap_used, |  | ||||||
|             metrics?.memory.swap_total, |  | ||||||
|         ), |  | ||||||
|         diskUsage: calcPercentage( |  | ||||||
|             (metrics?.disk.total ?? 0) - (metrics?.disk.free ?? 0), |  | ||||||
|             metrics?.disk.total, |  | ||||||
|         ), |  | ||||||
|         diskFree: metrics?.disk.free ?? 0, |  | ||||||
|         diskTotal: metrics?.disk.total ?? 0, |  | ||||||
|         networkUp: (metrics?.network.up ?? 0) / 1024, |  | ||||||
|         networkDown: (metrics?.network.down ?? 0) / 1024, |  | ||||||
|     }; |  | ||||||
| } |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user