Kibana(二):伺服器端解碼解讀
阿新 • • 發佈:2019-01-10
伺服器端的入口為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原始碼的層次結構。