Kibana 7.6.3 源码编译 + 构建踩坑
最近工作上接到个需求,需要对 Kibana 做简单的二次开发,而我也是第一次接触 Kibana,于是记录一下踩过的坑。
环境信息
- MacOS v10.13.6 + MacBook Pro 15 寸 2018 款
- Kibana 7.6.3 + Elastic Search 7.6.1
- node 10.19.0
注:理论上应该保证 Kibana 和 Elastic 版本完全一致的…… 但毕竟只给了个 warning,而到目前为止没遇到问题
重要提示
1. 请务必保证 kibana 的版本与 elastic 的版本一致。
2. 最好不要使用 root,否则安装依赖的时候会有问题
Step1:准备操作
- 下载 Kibana 7.6.3 源码
- 使用 nvm 切换至对应 node.js 版本
- 安装 kbn:yarn add kbn —g
- 确保 git master 上有 commit 记录,否则:
Step2:编译阶段
|
|
在此特别感谢这篇文章kibana7.6.2 源码开发编译给与的帮助,以下报错信息的 QA 几乎都参考了此文:
iedriver 问题
原因:网络问题
解决方案:package.json 中删除 iedriver 的依赖。iedriver 主要是用来给 Selenium 作自动化测试用。
chromedriver 问题
原因:网络问题
解决方案:使用 TB 源
|
|
puppeteer 问题
Failed to download Chromium r662092! Set “PUPPETEER_SKIP_CHROMIUM_DOWNLOAD” env variabled to skip download.
原因:网络问题
解决方案 1: 设置环境变量来阻止下载最新版本的 Chromium
|
|
解决方案 2: 重新设置下载地址
|
|
geckodriver 问题
原因:网络问题
解决方案:使用 TB 源
|
|
最后,yarn kbn bootstrap
成功~ (不出意外的话)
Step3:构建阶段
|
|
业务代码开发完后,准备打包构建,这部分遇到的坑的解决方法都是看官方文档 Building a Kibana distributable + 看运气。
下载 node.js 包超时
原因:源码中 node.js 下载地址以及 sha256 签名文件的地址都是这样定义的
|
|
解决方案:改源码中的下载站点为 nodejs.org
|
|
Webpack 打包内存溢出
根据网上相关文章 的说法,这个问题是由于 node 消耗的内存超过了预设值(64 位系统:1.4 GB,32 位系统:0.7 GB)。
可以通过在 build 命令中加入 --max-old-space-size=4096
参数来调整 node 最大允许使用内存
|
|
或者 node v8.0 以上可以通过以下命令调整全局设置
|
|
如图报错,deb、OS 相关报错
原因:当前操作系统非 Linux,并且执行的命令没有带上 --skip-os-packages
参数
Packages are built using fpm, dpkg, and rpm. Package building has only been tested on Linux and is not supported on any other platform.
解决方案:老老实实看官方文档别偷懒
|
|
相关参数说明:
成功,但……
总共花了 2330 秒,将近 40 分钟,四舍五入就是一小时…… 时间有点久
构建优化
省去下载 nodejs 步骤
默认情况下,每次 build 都会先清空之前下载好的 nodejs 库,本着能省就省的态度,可以略过这环节
再配合 –skip-node-download 的构建参数,略过下载 nodejs 环节。
|
|
友情提示:如果 Kibana 版本变动后导致所需 nodejs 版本也变了,此处还是需要改回来,老老实实再下载一份配套的 nodejs
减少构建
观察了一下打包后的文件,除了 linux 版本,还有 windows 和 mac 版的
因为实际生产环境只需要 linux 版本,于是想办法干掉 windows 和 mac 版
- 修改 src/dev/build/lib/config.js, 只打包 Linux 包
- 修改 package.json,去掉 –all-platforms
对比
简单优化后构建耗时 1875 秒,半小时左右,提升了差不多 10 分钟……
理论上还有更多优化空间,下次一定专门研究一下。
踩坑总结
这次 Kibana 7.6.3 二次开发体验下来耗时耗力的坑有两方面确定的原因:
- 编译/构建时的网络问题
- 构建时不熟悉官方文档
前者网络问题通过修改下载源可以解决,但如果不提前了解相关的坑,新接触该项目时仍会一个一个遇到相关问题,花不少时间浪费在了网络超时的等待时间中。
后者主要是体现在构建时偷懒,输入 yarn build
,忽略了官方文档上说明的相关参数,直接莽。其实只要看一眼花个 1 分钟就可以了。
另外不太确定的点是
- 机器硬件性能
之前在网上看到相关文档说建议用性能好的机子去构建项目,原本认为自己机器 18 年的 pro 应该没啥问题的,但还是花了半个小时以上… 由于还没有用其他机器构建过,所以不太确定是我机器问题,还是说项目构建代码仍有较大的优化空间。
以上,记录下自己遇到的问题,希望这篇文章对入坑 Kibana 二次开发的小伙伴有帮助。
也感谢阅读到这里,第一次接触 Kibana,如果有错误,欢迎各位大佬拍砖指正~