opentsdb源码分析-查询

来源:互联网 发布:域名交易网站 编辑:程序博客网 时间:2024/05/17 22:58

在上一篇文章中安装了tcollector,这样在hbase中就可以查看到数据了。


这是运行了一段时间scan 'tsdb'的结果截图。


用源码启动opentsdb,调试运行,怎么用源码启动会在另一篇文章中中再详细描述

在opentsdb中web页面中页面的图形是用gwt来编写的,至于gwt是什么以及怎样使用百度一下就行,使用的类是QueryUI类,在界面中改变控件的值会调用refreshGraph方法来刷新图形,每次刷新图形的时候都要去进行查询。

查询时会生成一个url串来发送请求, /q?start=2016/01/01-00:00:00&ignore=83&m=sum:proc.meminfo.vmalloctotal&o=&m=sum:proc.interrupts&o=&m=sum:proc.loadavg.total_threads&o=&m=sum:proc.meminfo.active&o=&m=sum:hbase.master.assignmentmanger.assign_max&o=&m=sum:df.bytes.total&o=&yrange=%5B0:%5D&wxh=1260x461&json

RpcHandler接收到请求,判断如果是HttpRequest,因为之前配置过/q是通过GraphHandler来处理,所以转到GraphHandler的doGraph方法来处理。

对要查询的指标构造了Query接口,调用Query的run方法获取到Datapoints[].

TsdbQuery实现了Query接口,通过调试发现,都是直接走到TsdbQuery的run方法中,然后调用了runAsync方法,返回的是Deferred<DataPoints[]>

,在opentsdb中运用了大量了Deferred,就我的理解,它就是返回一个未知的结果,有可能成功也有可能失败,调用后并不等执行而是马上返回,执行成功后会根据callback再执行下面的操作,在runAsync方法中,会新建scanner对象,最后根据async hbase的scanner.nextrows()查找。




0 0
原创粉丝点击