可视化开发示例
上一节,我们看到了一个完整的 Kibana4 插件的官方用例。一般来说,我们不太会需要自己从头到尾写一个 angular app 出来。最常见的情况,应该是在 Kibana 功能的基础上做一定的二次开发和扩展。其中,可视化效果应该是重中之重。本节,以一个红绿灯效果,演示如何开发一个 Kibana4 可视化插件。

插件目录生成
Kibana 开发组提供了一个简单的工具,辅助我们生成一个 Kibana4 插件的目录结构:
但是这个是针对完整的 app 扩展的,很多目录对于可视化插件来说,并没有用。所以,我们可以自己手动创建目录:
其中 index.js 内容如下:
package.json 内容如下:
这两个基础文件格式都比较固定,除了改个名就基本 OK 了。
然后我们看最关键的可视化对象定义 public/traffic_light_vis.js 内容:
然后就是可视化效果的模板页面了,traffic_light_vis.html 毫无疑问也是一个 angular 风格的:
这里可以看到:
把 div 绑定到了
TrafficLightVisController控制器上,这个也是之前在 js 里已经加载过的。通过
ng-repeat循环展示不同的 metric,也就是说模板渲染的时候,收到的是一个metrics数组。这个来源当然是在控制器里。然后具体的数据判断,即什么灯亮什么灯灭,通过了
vis.params.*的运算判断。这些变量当然是在编辑页面里设置的。
所以下一步看编辑页面 traffic_light_vis_params.html:
内容很简单,就是通过 ng-model 设置绑定变量,跟之前 HTML 里的联动。
最后一步,看控制器 traffic_light_vis_controller.js:
要点在:
$scope.$watch('esResponse', function(resp){})监听整个页面的请求响应,在有新数据过来的时候更新页面效果;agg_response/tabify/tabify把响应结果转换成二维表格形式。
最后加上一段样式表,这里就不贴了,见:https://github.com/logzio/kibana-visualizations/blob/master/traffic_light_vis/traffic_light_vis.less。
本节介绍的示例,出自 logz.io 官方博客和对应的 github 开源项目。logz.io 是基于 Kibana4.1 写的插件。我这里修正成了基于最新 Kibana4.3 的实现。
Last updated
Was this helpful?