Kibana 插件環境搭建教程

原文

環境背景, Kibana 7.4.0, Elasticsearch 7.4.0

注意, 執行以下命令時, 盡量在管理員許可權的命令行窗口裡執行, 避免一些沒有許可權的報錯;

1. 準備 Kibana 源碼

git clone //github.com/elastic/kibana.git

如果 github 訪問過慢, 可以切換加速通道: //github.com.cnpmjs.org/elastic/kibana.git

切換對應 ES 版本的分支/標籤:

cd kibana
git fetch # 取回所有分支和標籤的更新
git tag -l | findstr 7.4.0 # windows 下查看 7.4.0 版本的標籤
git checkout v7.4.0 # 切換 7.4.0 標籤

2. 安裝依賴軟體

2.1 node

安裝 .node-version 文件里標記的 node 版本

cat .node-version

2.2 nvm

windows 可以安裝 nvm-windows 工具來管理 node 版本;

nvm list # 查看已安裝的 node 版本列表
nvm use <version> # 切換 node 到指定版本
nvm install <version> # 安裝指定版本的 node

2.3 yarn

npm install --global yarn

3. 初始化 Kibana

3.1 chromedriver

npm install chromedriver --chromedriver_cdnurl=//cdn.npm.taobao.org/dist/chromedriver

3.2 node-gyp

用於編譯插件模組的工具, Kibana 初始化過程中會遇到問題, 所以提前先準備好;

npm install -g node-gyp

設置 npm 指定的 python 版本, 如果已安裝有不同版本的 python:

node-gyp set python /path/to/executable/python

如果之前已經安裝好了的, 會出現以下異常, 可以忽略不管:

***\kibana>npm install -g node-gyp
npm WARN deprecated [email protected]: request has been deprecated, see //github.com/request/request/issues/3142
npm WARN deprecated [email protected]: this library is no longer supported
npm ERR! path ***\Node\global\node-gyp.cmd
npm ERR! code EEXIST
npm ERR! Refusing to delete ***\Node\global\node-gyp.cmd: is outside ***\Node\global\node_modules\node-gyp and not a link
npm ERR! File exists: ***\Node\global\node-gyp.cmd
npm ERR! Move it away, and try again.

npm ERR! A complete log of this run can be found in:
npm ERR!     ***\Node\cache\_logs\2021-02-08T09_20_46_911Z-debug.log

3.3 初始化

yarn kbn bootstrap

初始化完成的時候如下圖所示:

image-20210201075541173

如果想切換分支刪除已經下載的依賴, 或者下載的依賴有問題需要清除, 執行一下命令:

yarn kbn clean
yarn cache clean

注意, 清空之後需要回到 3.1 再按照流程安裝相應的依賴包;

4. 環境配置

Kibana 是個大項目, 一些命令容易觸發默認的堆記憶體限制導致記憶體溢出, 可以修改 --max_old_space_size 配置調大最大堆記憶體限制;

export NODE_OPTIONS="--max_old_space_size=2048"

windows 環境下沒有找到配置的位置, 再調試插件的時候也沒有出現記憶體溢出的情況, 暫時不考慮;

5. 連接 ES 集群

準備運行的 Elasticsearch 環境(略)

修改 config/kibana.yml 文件:

elasticsearch.hosts: ["//test-es-host:9200"]

6. 從源碼啟動 Kibana

kibana 根目錄下執行命令 yarn start , 即可啟動 Kibana 進程, 並連接上面配置的 ES 集群;

啟動成功後, 在本地瀏覽器中訪問 //localhost:5601, 有時候是 5603 等其他埠, 要注意啟動成功的命令行窗口裡的提示, 根據提示修改對應訪問的埠號;

Q. 問題

  1. Current existing ChromeDriver binary is unavailable, proceding with download and extraction.

先安裝 chromedriver

npm install --global chromedriver --chromedriver_cdnurl=//cdn.npm.taobao.org/dist/chromedriver
  1. Error: Failed to parse .i18nrc.json file at ….i18nrc.json, info:TypeError: Cannot read property ‘forEach’ of undefined

異常原因是因為 .i18nrc.json 文件中沒有配置翻譯文件; 通過 gen 腳本創建初始化的插件, 一上來就會有這個問題~

{
  "paths": {
    "mycol": "./"
  },
  "translations": ["translations/zh-CN.json"] # 添加這一行配置即可, 語言選擇對應的 json 文件即可
}

R. 參考資料

  1. //www.elastic.co/guide/en/kibana/7.10/development-getting-started.html
  2. //blog.csdn.net/qq_41882147/article/details/81222054
  3. kibana 使用備忘錄