Fix: sum throughput data for docker stats (#2334)

pull/2336/head
shamoon 6 months ago committed by GitHub
parent c9991bc2a2
commit 7f50f6cfaa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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 (
<Container service={service}>
@ -49,10 +49,10 @@ export default function Component({ service }) {
{statsData.stats.memory_stats.usage && (
<Block label="docker.mem" value={t("common.bytes", { value: calculateUsedMemory(statsData.stats) })} />
)}
{network && (
{statsData.stats.networks && (
<>
<Block label="docker.rx" value={t("common.bytes", { value: network.rx_bytes })} />
<Block label="docker.tx" value={t("common.bytes", { value: network.tx_bytes })} />
<Block label="docker.rx" value={t("common.bytes", { value: rx_bytes })} />
<Block label="docker.tx" value={t("common.bytes", { value: tx_bytes })} />
</>
)}
</Container>

@ -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 };
}

Loading…
Cancel
Save