Small fix in monitoring and useAsync
This commit is contained in:
+10
-39
@@ -29,20 +29,13 @@ const networkChartConfig = {
|
|||||||
} satisfies ChartConfig;
|
} satisfies ChartConfig;
|
||||||
|
|
||||||
export default function MonitoringPage() {
|
export default function MonitoringPage() {
|
||||||
const [data, setData] = useState<
|
|
||||||
{ time: string; cpu: number; memory: number; in: number; out: number }[]
|
|
||||||
>([]);
|
|
||||||
const isMobile = useIsMobile();
|
const isMobile = useIsMobile();
|
||||||
const [liveData, setLiveData] = useState<{
|
|
||||||
cpuUsage: number;
|
// Metrics polling every 30 seconds
|
||||||
ramUsage: number;
|
const { value: metrics } = useAsyncInterval([], getMetrics, 30000, []);
|
||||||
}>();
|
|
||||||
const [containerStats, setContainerStats] = useState<
|
|
||||||
(SimpleStats & { name: string })[]
|
|
||||||
>([]);
|
|
||||||
|
|
||||||
// Live nodes polling every 3 seconds
|
// Live nodes polling every 3 seconds
|
||||||
const { value: liveNodes } = useAsyncInterval(
|
const { value: liveData } = useAsyncInterval(
|
||||||
{ cpuUsage: 0, ramUsage: 0 },
|
{ cpuUsage: 0, ramUsage: 0 },
|
||||||
async () => {
|
async () => {
|
||||||
const nodes = await getLiveNodes();
|
const nodes = await getLiveNodes();
|
||||||
@@ -55,27 +48,9 @@ export default function MonitoringPage() {
|
|||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
|
|
||||||
// Update liveData state
|
// Container stats
|
||||||
useEffect(() => {
|
const { value: containerStats } = useAsync(
|
||||||
setLiveData(liveNodes);
|
[],
|
||||||
}, [liveNodes]);
|
|
||||||
|
|
||||||
// Metrics polling every 30 seconds
|
|
||||||
const { value: metrics } = useAsyncInterval(
|
|
||||||
[] as typeof data,
|
|
||||||
getMetrics,
|
|
||||||
30000,
|
|
||||||
[]
|
|
||||||
);
|
|
||||||
|
|
||||||
// Update data state
|
|
||||||
useEffect(() => {
|
|
||||||
setData(metrics);
|
|
||||||
}, [metrics]);
|
|
||||||
|
|
||||||
// Container stats fetched once
|
|
||||||
const { value: containers } = useAsync(
|
|
||||||
[] as typeof containerStats,
|
|
||||||
async () => {
|
async () => {
|
||||||
const nodes = await getNodes();
|
const nodes = await getNodes();
|
||||||
const dockerNodes = await getDocker(nodes);
|
const dockerNodes = await getDocker(nodes);
|
||||||
@@ -95,10 +70,6 @@ export default function MonitoringPage() {
|
|||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
setContainerStats(containers);
|
|
||||||
}, [containers]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DashboardLayout
|
<DashboardLayout
|
||||||
title="Monitoring"
|
title="Monitoring"
|
||||||
@@ -169,13 +140,13 @@ export default function MonitoringPage() {
|
|||||||
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4 mb-6">
|
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4 mb-6">
|
||||||
<GradientAreaChart
|
<GradientAreaChart
|
||||||
title="CPU Usage"
|
title="CPU Usage"
|
||||||
data={data}
|
data={metrics}
|
||||||
config={cpuChartConfig}
|
config={cpuChartConfig}
|
||||||
max={100}
|
max={100}
|
||||||
/>
|
/>
|
||||||
<GradientAreaChart
|
<GradientAreaChart
|
||||||
title="Memory Usage"
|
title="Memory Usage"
|
||||||
data={data}
|
data={metrics}
|
||||||
config={memoryChartConfig}
|
config={memoryChartConfig}
|
||||||
max={100}
|
max={100}
|
||||||
/>
|
/>
|
||||||
@@ -185,7 +156,7 @@ export default function MonitoringPage() {
|
|||||||
<div className="mb-6">
|
<div className="mb-6">
|
||||||
<GradientAreaChart
|
<GradientAreaChart
|
||||||
title="Network I/O"
|
title="Network I/O"
|
||||||
data={data}
|
data={metrics}
|
||||||
config={networkChartConfig}
|
config={networkChartConfig}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ export function useAsyncInterval<T>(
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let isMounted = true;
|
let isMounted = true;
|
||||||
|
|
||||||
const iid = setInterval(() => {
|
const run = () => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
asyncFunction()
|
asyncFunction()
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
@@ -56,7 +56,11 @@ export function useAsyncInterval<T>(
|
|||||||
.finally(() => {
|
.finally(() => {
|
||||||
if (isMounted) setLoading(false);
|
if (isMounted) setLoading(false);
|
||||||
});
|
});
|
||||||
}, interval);
|
};
|
||||||
|
|
||||||
|
const iid = setInterval(run, interval);
|
||||||
|
|
||||||
|
run();
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
isMounted = false;
|
isMounted = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user