Dockerized NodeJS 容器应用程序监控自己分配的 CPU 使用情况
Dockerized NodeJS container app monitoring its own allocated CPU usage
我希望我的容器化 NodeJS 应用程序能够跟踪它自己的 CPU 使用情况,但没有找到实现它的方法(我发现的只是监控主机内核的使用情况)。
我不想在容器内使用 docker 统计数据,因为它需要在特权模式下 运行 它。
我使用以下方法找到了解决方案:
-
CPU 计数要点(函数 getCpuLimits()):https://github.com/xiaoxiaojx/get_cpus_length/blob/master/index.js
const cgroup = require('@adobe/cgroup-metrics');
const delay = ms => new Promise(_ => setTimeout(_, ms));
// **COPY PASTE HERE THE GIST FUNCTIONS**
const run = async () => {
const cpu = cgroup.cpu;
const cpuacct_usage = await cpu.usage();
// Wait 1s
await delay(1000);
const cpuacct_usage2 = await cpu.usage();
const calculateUsage = await cpu.calculateUsage(cpuacct_usage, cpuacct_usage2);
console.log('calculatedUsage', calculateUsage / getCpuLimits());
return run();
};
run();
我希望我的容器化 NodeJS 应用程序能够跟踪它自己的 CPU 使用情况,但没有找到实现它的方法(我发现的只是监控主机内核的使用情况)。 我不想在容器内使用 docker 统计数据,因为它需要在特权模式下 运行 它。
我使用以下方法找到了解决方案:
CPU 计数要点(函数 getCpuLimits()):https://github.com/xiaoxiaojx/get_cpus_length/blob/master/index.js
const cgroup = require('@adobe/cgroup-metrics'); const delay = ms => new Promise(_ => setTimeout(_, ms)); // **COPY PASTE HERE THE GIST FUNCTIONS** const run = async () => { const cpu = cgroup.cpu; const cpuacct_usage = await cpu.usage(); // Wait 1s await delay(1000); const cpuacct_usage2 = await cpu.usage(); const calculateUsage = await cpu.calculateUsage(cpuacct_usage, cpuacct_usage2); console.log('calculatedUsage', calculateUsage / getCpuLimits()); return run(); }; run();