【发布时间】:2018-07-09 14:39:34
【问题描述】:
我正在 docker 容器中运行 node.js 应用程序。我正在尝试检索运行 node.js 应用程序的容器的系统使用指标。现在我正在使用https://www.npmjs.com/package/dockerstats,但它始终显示没有 cpu 或内存使用情况,运行 docker stats 显示每个使用情况。
我的代码如下所示:
let dockerId = setUp.getDockerId();
dockerId.then(dockerId => {
if (dockerId !== null) {
console.log(`dockerId: ${dockerId}`);
dockerstats.dockerContainerStats(dockerId, data => {
console.log(`cpu_percent: ${data.cpu_percent}`);
console.log(`memPercent: ${data.memPercent}`);
console.log(`memUsage: ${data.memUsage}`);
});
}
});
setUp 类类似于以下内容并使用https://www.npmjs.com/package/docker-container-id:
const getId = require('docker-container-id');
module.exports = class setUp {
getDockerId () {
return getId().then(id => {
if (!id) {
return null;
}
return id;
});
}
}
【问题讨论】:
-
由于 Docker 容器(通常)在您的控制下运行单个进程,并且“容器”没有太多其他功能,因此在容器内的
/proc/self或/proc/1中四处寻找可能以相对较少的特权为您提供所需的信息。 -
@DavidMaze 那么 docker 容器的文件系统中有 /proc/self 或 /proc/1 吗?对于我正在研究的解决方案,我将挂载 /proc/stat 和在容器的 cgroup 中找到的 cpuacct.usage 并从中读取。
标签: node.js docker usage-statistics