【问题标题】:Understanding OpenTSDB timestamp了解 OpenTSDB 时间戳
【发布时间】:2026-02-05 13:40:01
【问题描述】:

我想为 OpenTSDB 创建一个非常简单的收集器, 例如,我正在考虑创建一个简单的 javascript 文件来写入一些随机值。

我不明白这些随机值的格式。 我必须编写一个写入字符串的程序,例如 metric.name timestamp value ,或者我的简单程序只写入一个值就足够了?

【问题讨论】:

  • 你是否已经在 J​​S 中实现了一些东西?你如何从终端执行你的 JS 代码?
  • 不,我只是想安装 node.js。但我不知道这是否是一个好的解决方案:)
  • 无论如何,因为 shell 示例使用这种方式来表示指标: '{ print "put proc.loadavg.1m " now " " $1 " host=" host; print "put proc.loadavg.5m " now " " $2 " host=" host }' 也许我也应该使用类似的东西。

标签: javascript opentsdb


【解决方案1】:

Javascript 不是执行此类任务的最佳选择,我会使用 Python、Bash、Perl 或 Ruby。我不是 JS 方面的专家,但希望这个例子对你有用。

首先,您需要创建生成输出的文件。所以 foo.js 会生成随机数并以秒为单位打印它们以及指标名称和时间戳:

var randvar = Math.random();
var ts = Math.round(new Date().getTime() / 1000);
print ("metric.name "+ts+" "+randvar);

其次,您需要一个启动 foo.js 的可执行文件,该文件将是 foo.sh。你必须给它执行权限chmod +x foo.sh。我正在使用 rhino 运行 JS 代码,您可以使用任何其他解释器:

#!/bin/bash
rhino rand_tsd.js

最后,您必须将文件放在tcollector/collectors/NUM/ 文件夹下,其中NUM 是两次执行之间的间隔(以秒为单位)。然后启动 tcollector 守护进程。

【讨论】:

  • 对不起先生,经过几周的考试学习,我回到了opentsdb。我不明白一件事,为什么我需要使用 rhyno?我将 foo.js 和 foo.sh 放在特定的收集器文件夹中,然后在控制台上写入 ./startstop/tcollector/collectors/NUMBER (例如,数字是分钟“3”吗?
  • 正如我告诉你的,我不是 javascript 专家,我使用了 rhino,但你可以使用任何你想要的东西,只要你从控制台使用任何命令执行它就能得到正确的输出。 OpenTSDB 会像你一样执行你的脚本,你的脚本是否生成了正确的输出,你执行得好吗?如果是这样,OpenTSDB 将正常工作。 Buona fortuna :)
  • 我的问题是我已经按照你所说的创建了 foo.js,并且我把它放在收集器内的一个文件夹中。我不明白的是如何创建外壳以及如何执行它。你写了“#!/bin/bash rhino rand_tsd.js”,那是要放入 foo.sh 的代码吗?
  • 无论如何,如果它更容易并且可能的话,我也知道一点java。因此,如果可以制作一个简单的脚本来生成一些随机值并且对于每个值它给我时间,我会使用它。我不太了解shell脚本角色,因为我从未使用过它。 :) 感谢您的宝贵时间!!