mirror of
https://github.com/gethomepage/homepage.git
synced 2025-05-24 02:02:35 -04:00
Fix: kubernetes statistics not respecting selector (#5199)
This commit is contained in:
parent
1fe4f49771
commit
d99c3cb691
@ -53,9 +53,11 @@ export default async function handler(req, res) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const podNames = new Set();
|
||||||
let cpuLimit = 0;
|
let cpuLimit = 0;
|
||||||
let memLimit = 0;
|
let memLimit = 0;
|
||||||
pods.forEach((pod) => {
|
pods.forEach((pod) => {
|
||||||
|
podNames.add(pod.metadata.name);
|
||||||
pod.spec.containers.forEach((container) => {
|
pod.spec.containers.forEach((container) => {
|
||||||
if (container?.resources?.limits?.cpu) {
|
if (container?.resources?.limits?.cpu) {
|
||||||
cpuLimit += parseCpu(container?.resources?.limits?.cpu);
|
cpuLimit += parseCpu(container?.resources?.limits?.cpu);
|
||||||
@ -66,42 +68,32 @@ export default async function handler(req, res) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
const podStatsList = await Promise.all(
|
const namespaceMetrics = await metricsApi
|
||||||
pods.map(async (pod) => {
|
.getPodMetrics(namespace)
|
||||||
let depMem = 0;
|
.then((response) => response.items)
|
||||||
let depCpu = 0;
|
.catch((err) => {
|
||||||
const podMetrics = await metricsApi
|
// 404 generally means that the metrics have not been populated yet
|
||||||
.getPodMetrics(namespace, pod.items)
|
if (err.statusCode !== 404) {
|
||||||
.then((response) => response.items)
|
logger.error("Error getting pod metrics: %d %s %s", err.statusCode, err.body, err.response);
|
||||||
.catch((err) => {
|
|
||||||
// 404 generally means that the metrics have not been populated yet
|
|
||||||
if (err.statusCode !== 404) {
|
|
||||||
logger.error("Error getting pod metrics: %d %s %s", err.statusCode, err.body, err.response);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
if (podMetrics) {
|
|
||||||
podMetrics.forEach((metrics) => {
|
|
||||||
metrics.containers.forEach((container) => {
|
|
||||||
depMem += parseMemory(container.usage.memory);
|
|
||||||
depCpu += parseCpu(container.usage.cpu);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
return {
|
return null;
|
||||||
mem: depMem,
|
});
|
||||||
cpu: depCpu,
|
|
||||||
};
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
const stats = {
|
const stats = {
|
||||||
mem: 0,
|
mem: 0,
|
||||||
cpu: 0,
|
cpu: 0,
|
||||||
};
|
};
|
||||||
podStatsList.forEach((podStat) => {
|
|
||||||
stats.mem += podStat.mem;
|
if (namespaceMetrics) {
|
||||||
stats.cpu += podStat.cpu;
|
const podMetrics = namespaceMetrics.filter((item) => podNames.has(item.metadata.name));
|
||||||
});
|
podMetrics.forEach((metrics) => {
|
||||||
|
metrics.containers.forEach((container) => {
|
||||||
|
stats.mem += parseMemory(container.usage.memory);
|
||||||
|
stats.cpu += parseCpu(container.usage.cpu);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
stats.cpuLimit = cpuLimit;
|
stats.cpuLimit = cpuLimit;
|
||||||
stats.memLimit = memLimit;
|
stats.memLimit = memLimit;
|
||||||
stats.cpuUsage = cpuLimit ? 100 * (stats.cpu / cpuLimit) : 0;
|
stats.cpuUsage = cpuLimit ? 100 * (stats.cpu / cpuLimit) : 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user