Dockerized NodeJS 容器应用程序监控自己分配的 CPU 使用情况

Dockerized NodeJS container app monitoring its own allocated CPU usage

我希望我的容器化 NodeJS 应用程序能够跟踪它自己的 CPU 使用情况,但没有找到实现它的方法(我发现的只是监控主机内核的使用情况)。 我不想在容器内使用 docker 统计数据,因为它需要在特权模式下 运行 它。

我使用以下方法找到了解决方案:

  • @adobe/cgroup-metrics

  • 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();