使用top和nodeJS创建时间序列

时间:2018-11-28 16:52:29

标签: node.js time-series influxdb

我想创建一个时间序列并将其注入InfluxDb中进行演示。我考虑过使用top命令(top -pid 1393 -stats cpu),并使用CPU值。然后使用NodeJS提取数据并将其注入InfluxDB中。但是,有几个但是...: 1- top命令的显示部分:可以将其删除吗? 2-在Node中,我会(反复地)使用“ -l 1”选项调用“ top -pid 1393 -stats cpu -l 1”,以仅获取单样本。我觉得这是对top按给定时间间隔生成数据这一事实的误用(基本上,我在Node中重新创建top自动执行的操作)

是否有更好的方法来执行此操作-在理想的世界中,我将在节点顶部启动并将输出流以异步方式“传递”到变量中(以执行向InfluxDB的插入操作)。

感谢您的任何提示。 克里斯蒂安

3 个答案:

答案 0 :(得分:0)

实际上,有一个用于此的节点模块:请参阅npm用法。 请注意,在安装由node-gyp rebuild生成的用法模块时,您可能会遇到问题(用法需要此模块,在Mac平台中需要XCode-请参见https://github.com/nodejs/node-gyp)。要解决此问题,请看这里:xcode-select active developer directory error) 谢谢-C

答案 1 :(得分:0)

要监视流程的资源消耗指标(如果我误解了我的意思,请纠正我),根本不需要NodeJS。

您需要做的就是在要定位的计算机上运行已配置this plugin的Telegraf代理。

将输出插件指向您的Influx-就是这样。

答案 2 :(得分:0)

如其他注释中所述,有用于该任务的特定工具。无论如何,如果您仍然想以编程方式进行操作,我建议您选择以下一种方法:

  1. 以非交互模式运行while (flock(fd, type | block)) { ... case EBADF: /* since Linux 3.4 (commit 55725513) */ /* Probably NFSv4 where flock() is emulated by fcntl(). * Let's try to reopen in read-write mode. */ ,如此处所述:https://unix.stackexchange.com/questions/255100/get-top-output-for-non-interactive-shell
  2. 直接从top读取您所需的信息