我的目标是通过Java代码直接将数据插入TSDB,为此,我尝试创建将数据打印到STDOUT的可执行jar.然后,我编写了收集器以运行此jar,并将其放入tcollector / collectors / 0中.最后,我尝试以两种方式执行收集器,一种是在shell脚本中,另一种是在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进行处理的最好方法?
解决方法:
tcollector不在乎您编写的收集器是使用Python还是Shell脚本或其他工具.只要将收集器放在tcollector / collectors / 0中,它就会自动被拾取.如果不是,请检查您的Shell脚本是否可执行(chmod a x),并以shebang开头(例如#!/ bin / sh).
标签:hadoop,hbase,opentsdb,python,java
来源: https://codeday.me/bug/20191122/2062951.html