我们知道OpenTSDB提供了丰富的HTTP API包括对metric/tagk/tagv/timeseries元数据的管理。
其中接口/api/search/* 就是用于查询相关元数据信息的
然而要使用这个查询接口,必须在OpenTSDB中集成一个search plugin,也就是一个搜索引擎。
目前OpenTSDB已经实现了一个search plugin也就是OpenTSDB-Elasticsearch
具体项目可看:https://github.com/manolama/opentsdb-elasticsearch
咋一看这个项目已经一年没有更新了,使用起来让人觉得隐隐不安,可是不管怎么样先试着吧。
按照它提供的README一步一步来。
这个插件项目中明确提出“Compile OpenTSDB 2.0 (the "next" branch from Github) to get the jar”
也就是要编译OpenTSDB项目中next分支下的源码,其实这个next分支就是2.1版本的源码。
我也不知道这个2.1版本源码完成的怎么样,是否完善了,更不知道为何官方至今没有发布2.1版本的发行版。
目前官网能下载的也就是2.0版本。
但是我们从官方帮助文档中可以看到,尤其是API文档中,提供的很多接口都是需要2.1版本的。
不是很能了解为何官方不发布2.1版本。
好了直接奔主题吧,编译。
1,下载源码
2,解压,执行./build.sh(这个命令包含了./bootstrap ./configure make)进行编译
OK,开始编译了,从不同地方下载各种第三方依赖包,这个时候问题来了。
下载到log-back-classic-1.0.13jar包的时候下载不了了。
应该是无法连接到opentsdb.google.com(opentsdb官方难倒没关注到么),好了就卡这了没法继续编译了。
这个时候能想到的办法就是既然这个下载地址不可以,我 换个下载地址不就行了,
修改./Makefile.in文件,
将其中的OPENTSDB_THIRD_PARTY_BASE_URL := http://opentsdb.googlecode.com/files
改为OPENTSDB_THIRD_PARTY_BASE_URL := http://192.168.1.22:8080/files
这个地方:你可以直接搭建个tomcat,然后将需要的Jar包放到tomcat中 然后提供这个下载连接。
OK,tomcat服务器搭建好了,我也把需要的jar包log-back-classic-1.0.13jar放到了下载地址下,
接着执行./build.sh进行编译
jar包成功下载到了,但是下载完成后进行验证环节又出错了。
希望得到的校验码是:b4dc8eb42150aafd6d9fd3d211807621
但是下载的jar包的校验码是:b32c8f023fb954ceaaa5b0f5f56859bf
得到这个错误的原因是,我们这个jar包不是从它提供的官网上下的,是我们部署在服务器上的,所以校验不通过。
opentsdb为每个jar包都提供了一个.jar.md5文件位于 ./third_party/相应的目录下
例如log-back-classic-1.0.13jar的验证文件在/thrid_party/logback/logback-classic-1.0.13.jar.md5
打开该文件可以看到它的校验码为:b4dc8eb42150aafd6d9fd3d211807621
我们只要把该文件中的校验码改为,我们部署jar包的校验码:b32c8f023fb954ceaaa5b0f5f56859bf即可。
OK,继续执行./build.sh编译
成功下载并校验通过。
但是接下来又会发现,无法下载一些jar包,
那是因为我们部署的服务器上还没有放置这些jar包,
跟之前一样,将丢失的jar包,放置到我们部署的服务器上即可。
部署完之后,执行编译又会发现md5校验失败,按照上面的将md5文件中内容改掉即可。
按照这样的方式,最终可以完成整个项目编译!
最后在build文件下就可以看到编译后的jar包和tsd脚本
没错就是2.1版本!
如果想将该项目可以发布到其他机器上,并且在不需要联网的情况下就能完成编译,那么执行./build.sh dist
这样即可生成打包好的tar.gz归档文件。将这个归档文件发布到其他机器上执行编译的时候就不需要从网上下载依赖包了,因为归档文件中已经包含了,直接执行./build.sh编译就OK!