1. 程式人生 > >Kibana(二):伺服器端解碼解讀

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原始碼的層次結構。