Kibana(二):服务器端解码解读

来源:互联网 发布:大数据龙头股票 编辑:程序博客网 时间:2024/05/24 07:37

服务器端的入口为src\server\kbn_server.js,这也是系统启动的核心,这里采用了mixin方式,代码结构虽然清晰,但是代码分布在各处,配置信息的传递十分复杂,其关键代码如下:

this.ready = constant(this.mixin(    configSetupMixin,    httpMixin,    loggingMixin,    warningsMixin,    statusMixin    //  还有很多项,在此不一一列举    ));

追溯上面的mixin,我们可以看出,Kibana采用的WEB框架为hapi.js,其相关的配置信息尽在src\server\http\index.js中。

1. 进入调试模式

直接运行kibana,会进入生产模式,要进入调试模式,可采用–dev参数,如下:

#   请务必加上--no-base-path配置,能减少很多出错信息.\bin\kibana.bat --dev --no-base-path

2 静态文件路由配置

在这里,同样可以添加自己需要的静态资源,可参照如下的代码格式。

//  ui/public的绝对位置为src\ui\publicserver.exposeStaticDir('/ui/fonts/{path*}', resolve(__dirname, '../../ui/public/assets/fonts'));server.exposeStaticDir('/ui/favicons/{path*}', resolve(__dirname, '../../ui/public/assets/favicons'));

3 插件扫描范围

默认的插件扫描地址有两个,分别为:
1. 系统根目录下plugins文件夹,从外部安装的插件都放入此目录下,比如官方强烈推荐sense;
2. src/core_plugins目录,系统内置的插件尽放入此处,自己定制开发的插件推荐放于此处。

4 插件注册机制

这是Kibana的核心机制,所有的视图与功能都是基于插件模式,kibnana也是其中的一个插件,包含了dashboard、discover、visualize等五个模块,其中links信息用于左侧菜单信息,uiExports属性用于注册插件信息,如下:

//  以下源代码引用至src\core_plugins\kibana\index.jsuiExports: {      hacks: ['plugins/kibana/dev_tools/hacks/hide_empty_tools'],      //    用于初始化UiApp      app: {        id: 'kibana',        title: 'Kibana',        listed: false,        description: 'the kibana you know and love',        main: 'plugins/kibana/kibana',        uses: [          'visTypes',          'spyModes',          'fieldFormats',          'navbarExtensions',          'managementSections',          'devTools',          'docViews'        ]}

结论

只有理解了Kibana的插件机制,才能理解Kibana源代码的层次结构。