From 7f50f6cfaa14177e1a2c0eadabc6f99dd841e8c1 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 16 Nov 2023 23:55:04 -0800 Subject: [PATCH] Fix: sum throughput data for docker stats (#2334) --- src/widgets/docker/component.jsx | 10 +++++----- src/widgets/docker/stats-helpers.js | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/widgets/docker/component.jsx b/src/widgets/docker/component.jsx index c88ef8f6a..1b36592bb 100644 --- a/src/widgets/docker/component.jsx +++ b/src/widgets/docker/component.jsx @@ -1,7 +1,7 @@ import useSWR from "swr"; import { useTranslation } from "next-i18next"; -import { calculateCPUPercent, calculateUsedMemory } from "./stats-helpers"; +import { calculateCPUPercent, calculateUsedMemory, calculateThroughput } from "./stats-helpers"; import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; @@ -41,7 +41,7 @@ export default function Component({ service }) { ); } - const network = statsData.stats.networks?.eth0 || statsData.stats.networks?.network; + const { rx_bytes, tx_bytes } = calculateThroughput(statsData.stats); return ( @@ -49,10 +49,10 @@ export default function Component({ service }) { {statsData.stats.memory_stats.usage && ( )} - {network && ( + {statsData.stats.networks && ( <> - - + + )} diff --git a/src/widgets/docker/stats-helpers.js b/src/widgets/docker/stats-helpers.js index 3e184e8a0..390c832ab 100644 --- a/src/widgets/docker/stats-helpers.js +++ b/src/widgets/docker/stats-helpers.js @@ -16,3 +16,18 @@ export function calculateUsedMemory(stats) { stats.memory_stats.usage - (stats.memory_stats.total_inactive_file ?? stats.memory_stats.stats?.inactive_file ?? 0) ); } + +export function calculateThroughput(stats) { + let rx_bytes = 0; + let tx_bytes = 0; + if (stats.networks?.network) { + rx_bytes = stats.networks?.network.rx_bytes; + tx_bytes = stats.networks?.network.tx_bytes; + } else if (stats.networks && Array.isArray(Object.values(stats.networks))) { + Object.values(stats.networks).forEach((containerInterface) => { + rx_bytes += containerInterface.rx_bytes; + tx_bytes += containerInterface.tx_bytes; + }); + } + return { rx_bytes, tx_bytes }; +}