kibana4打包和安装
对于Kibana4,官方只提供了一个打包好的JAVA的包(现在已经是用nodejs了,使用很方便,修改源码也很方便,所以后面这些话忽略吧). 如果想自己修改一些代码添加一些自定义功能, impossible. 至少我还是希望能像Kibana3一样,就是一普通的hmlt静态网站,放在nginx下面跑. 可以添加一些自己的panel. 好吧, 虽然Kibana4好像已经不需要添加什么panel了,但改改css, html总行吧. 而且还可以利用nginx做一些权限控制什么的.
虽然github有源码了,但做为一个新手, 对于grunt这些东西只是有最最最基本的一些了解,还是折腾了一会才搞定. 纪录一下.
以下操作都是基于8cef836c61b5749164156e19accb2a0881e902e4这个commit
-
从github下载kibana4代码.
git clone git@github.com:elasticsearch/kibana.git
-
默认你已经有node了, 如果没有, 用apt-get 或者 yum 或者brew等工具装上. 然后先把bower grunt装好, 接下来就要用.
npm install -g bower grunt-cli
-
进入kibana目录. 我没有在master分支, 我是切换到了v4.0.0-beta2分支上面.
cd kibana git checkout v4.0.0-beta2
-
安装需要的npm包.
其实, 我不确定是不是所有的包都要装, 我只是要用grunt build一下.甚至只是生成css文件而已.
这里要注意, 如果是用官方源, 而你身在大陆的话, 那就等死吧. 淘宝源在此npm install
-
bower install
安装需要的js css包. 从github下载. 对于大陆电信30M用户来说, 也是极其痛苦, 一个400K的包死活就是下载不下来.
osx系统的bower cache文件夹好像在这里/private/var/folders/j9/37cyszz92cg1xkfc46cl5w5r0000gn/T/yourusername/bower 浏览器明明能下载下来, bower就是死活不行. 没办法, 先用浏览器下载之后放在cache文件夹里面bower install
- grunt
可以看到默认是跑了两个任务.
grunt.registerTask(‘default’, [‘jshint:source’, ‘less’]); less生成css文件. jshint大概就是检查一下JS语法错误吧.
grunt
-
grunt build
其实生成css之后, 把src/kibana放在nginx下面就可以跑了.
build, 就是把一些文件合并压缩一下, 加速用户访问. -
config 配置.
grunt之后, 会在目录下生成一个config文件, 这是一个json文件, 里面是kibana4的一些配置. 里面的kibanaIndex需要改成kibana_index这种格式. 这个生成的原始配置文件应该是nodejs用的, nodejs应该会转成kibana_index这种格式, 但我们现在不用Nodejs做后端服务器了, 所以需要用人改一下.
{ "request_timeout": 60, "kibana_index": ".kibana", "bundled_plugin_ids": [ "plugins/dashboard/index", "plugins/discover/index", "plugins/settings/index", "plugins/table_vis/index", "plugins/vis_types/index", "plugins/visualize/index" ], "default_app_id": "discover", "host": "0.0.0.0", "shard_timeout": 30000, "plugins": [ "plugins/dashboard/index", "plugins/discover/index", "plugins/settings/index", "plugins/table_vis/index", "plugins/vis_types/index", "plugins/visualize/index" ], "port": 5601, "verifySSL": false }
-
还差一点点了.
到这里…居然还不行…
打开components/config/config.js, 可以看到:var configFile = JSON.parse(require('text!config')); configFile.elasticsearch = (function () { var a = document.createElement('a'); a.href = 'elasticsearch'; return a.href; }());
最重要的elasticsearch的配置, 不是放在配置文件里, 而是写在代码里面了. 这里改成真正的elasticsearch的地址就可以了.
- k4要求ES版本至少也是1.4. 但其实1.3版本的也可以正常使用. 我们就是1.3. 暂时也没打算升级. 限制的代码在index.js里面, 改成
constant('minimumElasticsearchVersion', '1.3.0')
就OK了.
OVER.
补充 (曾经的某个版本下还需要):
-
script_fileds
安全起见, 我们的ES禁用script.
但是k4有些请求, 至少在找index pattern的时候, 使用了script_fileds.
我简单粗暴的把components/courier/data_source/_abstract.js里面带script_fileds的代码注释了…
目前还没有发现副作用, 先这样用吧. -
要设置一个默认index pattern
新建index pattern之后, 要设置一个为默认. 否则k4有些2去找名叫.kibana这个index pattern, 当然找不到, 就报错了.
beta2还没这个要求.
我也不是完全确认就是这个原因造成的, 但的确设置一个默认之后就好了.