vlambda博客
学习文章列表

Kibana插件开发之环境搭建

1. 简介

Kibana是 Elastic Stack(简称ES)的一个窗口,通过它你可以很轻易对ES内部的数据进行处理。例如可以通过Kibana对Elasticsearch(Elasticsearch简单的讲就是一个数据库)内的数据进行搜索、分析和可视化等操作。它已经预定义了很多可视化模板,通常这些模板是可以满足需求的。但是数据形形色色,总会有那么一些数据不能很好的套用到模板中,或者你期望以更独特的方式来展现、可视化你的数据。因此,Kibana从4.2.0开始支持自定义插件。

既然是做开发,通常可以分为两部分:

  1. 环境搭建;

  2. 代码实现。

今天就先来说说环境搭建。

2. 环境搭建

Kibana更新迭代速度很快,而且它不会保证插件的向后兼容,因此插件的兼容是开发者自己的事情。Kibana一般情况下需要搭配Elasticsearch使用。这里以Kibana v7.6为例(目前源码最新分支是v8.0, 2020-05-09)。

环境搭建可以分为三部分:

  1. Kibana的获取;

  2. 依赖软件的安装;

  3. Elasticsearch的获取;

  4. Kibana启动。

2.1. Kibana的获取

为了能够开发Kibana插件,需要在本地有一个Kibana代码的副本,理论上,直接使用官方发布的产品包也可以,但是产品包缺乏插件重加载等功能,对于开发时非常不适合的,也及其不推荐。因此,需要获取到Kibana的源码进行开发。获取很简,克隆Kibana仓库到本地检出对应分支就行。(注:官方要求是先将仓库fork到自己的仓库再克隆,但我们不打算向官方贡献我们的代码所以我们直接克隆)

git clone https://github.com/elastic/kibana.git kibanacd kibanagit checkout origin/7.6 remotes/origin/7.6

2.2. 依赖软件的安装

Kibana插件的开发使用的是JavaScript,经过简单的配置也可以使用TypeScript,和Web前端开发很相似,主要使用的是NodeJS,因此首先安装Node.js。需要注意的是,不同的版本的Kibana依赖不同版本的Node,具体的版本可以通过以下命令查看:

cd kibanacat .node-version

获取到版本信息后到Node官网获取对应版本进行安装。

除了安装Node,还需要安装nvm和yarn,使用以下命令进行安装。

sudo apt-get updatesudo apt-get install build-essential libssl-devcurl https://raw.githubusercontent.com/creationix/nvm/v0.25.0/install.sh | bashsource ~/.profilecurl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.listsudo apt-get update && sudo apt-get install yarn

2.3. Elasticsearch的获取

Kibana和Elasticsearch更新迭代速度都很快,而且兼容性上不太好,因此,对于每个版本的Kibana,需要对应版本的Elasticsearch作配合,一个简单的方法就是选择一个和Kibana版本号相同的Elasticsearch。例如我们在Kibana v7.6上进行插件开发,我们就选择一个Elasticsearch v7.6.2就行。这里的Elasticsearch可以是官方Release的产品包,亦可以是自己下载源代码编译,为了简单,我么 直接使用产品包。

2.4. Kibana启动

Kibana从源码启动的过程中需要下载一些依赖,访问一些特定的网站,在中国大陆,由于防火墙原因,某些网站可能无法访问而导致启动失败。因此,在启动Kibana之前需要先设置一个代理,设置方法如下:

export HTTP_PROXY=your.proxy.server.domain:portexport HTTPS_PROXY=your.proxy.server.domain:port

设置好代理以后,执行以下命令进行初始化:

# Set PATH environment variable to the dir of Node executableexport PATH=/path/to/node/binyarn kbn bootstrap

Kibana会自动下载所需要的依赖,需要做的就是等待提示完成。如果想切换分支删除已经下载的依赖或者下载的依赖有问题需要清除,可以执行以下命令:

yarn kbn cleanyarn cache clean

依赖下载完成以后就可以正式启动了,启动Kibana之前需要先启动Elasticsearch,依次执行以下命令:

cd elasticsearch./bin/elasticsearchcd ../kibanayarn start

至此,环境的搭建就完成了。

3. 环境验证

下面我们通过一个hello world验证环境是否搭建正确。
执行以下命令:

cd kibananode scripts/generate_plugin.js your_plugin_name# for example:# node scripts/generate_plugin.js my_test.js
cd plugins/<your_plugin_name>/# for example:# cd plugins/my_test_js/ yarn start

等待启动完成你会看到类似于下面一行log:

server log [09:53:39.956] [info][server][Kibana][http] http server running at http://<your ip/localhost/hostname>:port/kpg# for example:# http://192.168.0.6:5603/kpg

Fig 1 Test environment



C++ | Python | Linux |  | AI


4. References

[1] https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#setting-up-your-development-environment