Kibana报表
Elastic Stack 本身作为一个实时数据检索聚合的系统,在定期报表方面,是有一定劣势的。因为基本上不可能把源数据长期保存在 Elasticsearch 集群中。即便保存了,为了一些已经成形的数据,再全面查询一次过久的冷数据,也是有额外消耗的。那么,对这种报表数据的需求,如何处理?其实很简单,把整个 Kibana 页面截图下来即可。
FireFox 有插件用来截全网页图。不过如果作为定期的工作,这么搞还是比较麻烦的,需要脚本化下来。这时候就可以用上 phantomjs 软件了。phantomjs 是一个基于 webkit 引擎做的 js 脚本库。可以通过 js 程序操作 webkit 浏览器引擎,实现各种浏览器功能。
phantomjs 在 Linux 平台上没有二进制分发包,所以必须源代码编译:
想要给 kibana 页面截图,几行代码就够了。
Kibana3 截屏代码
下面是一个 Kibana3 的截屏示例。 capture-kibana.js
如下:
然后运行 phantomjs capture-kibana.js
命令,就能得到截图生成的 kibana.png 图片了。
这里两个要点:
要设置
viewportSize
里的宽度,否则效果会变成单个 panel 依次往下排列。要设置
setTimeout
,否则在获取完 index.html 后就直接返回了,只能看到一个大白板。用 phantomjs 截取 angularjs 这类单页 MVC 框架应用时一定要设置这个。
Kibana4 的截屏开源项目
Kibana4 的 dashboard 同样可以采取上面 Kibana3 的方式自己实现。不过社区最近有人完成了一个辅助项目,把截屏配置、历史记录展示等功能都界面化了。项目地址见:https://github.com/parvez/snapshot_for_kibana。
Last updated