3

我的目标是通过java代码直接将数据插入TSDB,为此,我尝试创建将数据打印到STDOUT的可执行jar。然后我写了收集器来运行这个 jar 并把它放进去tcollector/collectors/0。最后,我尝试以两种方式执行收集器,一种在 shell 脚本中,另一种在 python 中。

Python 收集器:

def main():
    while True:
        os.system("java -jar ./TCollectorTSDB.jar")
        sys.stdout.flush()
        time.sleep(COLLECTION_INTERVAL)    
if __name__ == "__main__":
    sys.stdin.close()
    sys.exit(main())

上面的收集器工作得很好,但是当我尝试从 shell 脚本运行同一个 jar 时,收集器没有选择 shell 脚本。

Shell 脚本收集器:

java -jar "./TCollectorTSDB.jar"

我必须配置一些东西来注册这个收集器吗?如果我们必须通过 Java 插入数据,那么使用 Collector 做同样的事情的最好方法是什么?

4

1 回答 1

3

tcollector 不关心您编写的收集器是用 Python 还是 shell 脚本或什么。只要你把收集器放进去,tcollector/collectors/0它应该会自动捡起来。如果不是,请检查您的 shell 脚本是否可执行(chmod a+x)以及它是否以 shebang 开头(#!/bin/sh例如)。

于 2013-08-28T17:03:24.693 回答