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

服务器端的入口为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\public
server.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.js
uiExports: {
      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源代码的层次结构。

你可能感兴趣的:(kibana,kibana,源代码,解读)