kibana4 插件开发1-基础篇

来源:互联网 发布:java adb命令 编辑:程序博客网 时间:2024/06/05 16:17

kibana4 插件开发1-基础篇

本文为译文,译者英文较渣,看不下去的请看原文,链接如下:
https://www.timroes.de/2015/12/02/writing-kibana-4-plugins-basics/
原文作者:tim rose

译者tip:
想二次开发,先看官方文档:
https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#setting-up-your-development-environment
再看这篇文章可以更好的理解

  从kibana 4.2.0以后kibana可以自定义不同类型插件并提供给其他kibana用户使用。本教程系列将指导您编写您的第一个插件,并告诉你插件可以做哪些事情,例如添加自定义可视化,编写新的“app”(从4.2.0开始,kibana本身就是一个在框架中的app),或者添加新的选项卡到可视化的标签栏。

提示:kibana
4.2.0提供了一个插件安装的功能。它没有提供公共的API进行开发。然而他们的宣传中说道了插件开发,因此我决定写一个公开的教程。由于私有和公共API之间没有分离,您的插件可能会在下一个补丁版本更新后不能使用,因为它们可能会更改您插件中使用的服务。所以,如果你想开发插件,你要为一个非常具体的Kibana版本开发一个插件,你必须测试你的插件与每个Kibana版本。有关公共API的讨论可以在这个GitHub中找到。本教程版本为Kibana 4.3.0,我不会为kibana新版本更改和重新测试这个教程。

  本教程(编写Kibana插件)要求您拥有Web开发经验。以下技能是必备条件,在本教程中对这些技能不再进行讲解:
- JavaScript development (npm modules; ..)
- AngularJS
- RequireJS(译者:新的版本好像改成了webpack和grunt)

  本教程系列的第一部分介绍了如何构建系统、开发插件和所有插件的基本结构。你应该阅读这部分,然后可以跳转到任何其他部分,看看不同类型的插件。


安装插件构建系统

更新:在youtube上有一个如何安装插件构建系统的视频:The Contributor’s Guide to the Kibana Galaxy(链接:https://www.youtube.com/watch?v=FZEKhPz7SPQ)
在开始开发之前,您将需要基本的Web开发环境,即安装NodeJS和npm。

1.下载Kibana:要开发插件,您需要一个本地的Kibana实例进行开发。由于我们需要插件的重新加载功能,您需要下Kibana的源代码。通过git检出或在GitHub上选择,从https://github.com/elastic/kibana下载源代码为zip文件。在本教程中,我们将使用Kibana 4.3.0。

2.在Kibana中安装依赖关系:下载了Kibana源代码,您需要npm install 在源代码中执行以安装所有必需的依赖关系。

3.启动一个可用的Elasticsearch:除了运行Kibana,你还需要一个Elasticsearch实例,Kibana连接到该实例。您可以在其中config/kibana.yml配置的elasticsearch的URL 。也可以从Kibana开发环境启动Elasticsearch实例。这样有一个优点,Kibana知道它需要什么Elasticsearch版本,并将启动一个适当的版本。要启动Elasticsearch实例,请在Kibana文件夹中启动命令行输入以下内容:

> npm run elasticsearch

可能需要一些时间,下载相应的版本并启动它。完成后,您将看到一个包含端口和集群名称的表。
4.启动 Kibana完成后,您可以通过在Kibana源代码文件夹中执行以下命令来启动kibana:

> npm start

这将在开发模式下启动Kibana,这意味着如果您对其进行更改,它将自动重新加载所有插件。启动可能需要几分钟,完成后,您看到一些关于“Lazy optimization success”的消息。
您应该将插件的源代码放在installedPlugins文件夹中。Kibana将自动扫描此文件夹以进行更改。注意:你不能链接你的插件文件夹到这个文件夹,由于一些依赖解析问题。您的插件源代码实际上必须放在该文件夹中。(这段installedplugins存疑!!!!)
要创建新插件,请在installedPlugins文件夹中创建一个新文件夹。文件夹的名称必须是您的插件的名称,这将在下一章中介绍。
每次你在插件中改变一个文件,Kibana将重新进行打包和优化。这可能需要一些时间。您将在控制台上看到这一点,您在其中启动Kibana时会显示以下消息:

restarting server due to changes in - "installedPlugins/tr-k4p-clock/index.js"server log [21:49:59.323] [info][status][plugin:tr-k4p-clock] Status changed from uninitialized to green - Ready[...]server log [21:49:59.421] [info][listening] Server running at http://0.0.0.0:5601optmzr log [21:50:07.177] [info][optimize] Lazy optimization startedoptmzr log [21:50:13.834] [info][optimize] Lazy optimization success in 6.66 seconds

当Lazy optimization success,这些更改就会应用到kibana。成功后,你可以刷新浏览器查看。有时Kibana无法正确重新加载更改。在这种情况下,关闭再重新启动看看是否修复了这个问题。


插件基础

每个插件是一个npm模块。所以它至少需要两个文件。

你需要把一个package.json放入你的插件的根文件夹。它是常规的npm包管理文件。您至少需要指定插件名称、版本。对于我们的第一个插件,包文件可能类似于以下内容:

{  "name": "tr-k4p-myplugin",  "version": "0.1.0"}

package.json的name一定要与插件名和文件夹名相一致。
第二个必须的文件是主模块文件:index.js,除非你在package.json中指定了其他文件名。它是npm模块,并设置你的插件需要的一切。您的模块必须有一个kibana插件的新实例,如下所示:

module.exports = function(kibana) {  return new kibana.Plugin({    // Your plugin configuration  });};

这两个文件组成了一个最简单的插件,Kibana可以加载,它确实,很令人惊讶,但还远远不够。在本教程的以下部分中,我们将看到您可以插入到index.js(和更多文件)中的所有代码,以便用使插件来
功能更加强大。

除了这两个文件,大多数插件将在其根目录中有一个名为public的文件夹。所有不会运行服务器端但会被传输到客户端浏览器的文件都会进入这个文件夹。(应该指的静态文件)

包和插件名称

您用的包ID和名称应该是全局唯一的。它将被Kibana用来解析你的插件中的文件,不应该与任何其他插件混淆。这就是为什么我建议加上一些自定义字符串来标识你的插件的原因。例如我在本教程系列的大多数部分使用tr-k4p(Tim Roes,Kibana 4 Plugin)作为前缀。

Yeoman Generator

Yeoman Generator,帮助你引导Kibana插件。你可以在npm package generator-kibana-plugin(链接:https://www.npmjs.com/package/generator-kibana-plugin )中找到它。强烈建议实际使用这个Yeoman Generator。我们将不会在第一部分使用它,因为它创建了很多示例代码,我们将反复详细地查看所有必需的文件。但在教程后,你应该使用Yeoman Generator。

要获取有关如何使用Yeoman Generator的说明,请参阅相应npm页面(上段中的链接)。

在最新版本中,使用Yeoman Generator还将创建构建任务,自动启动您的Kibana实例。所以如果你使用Yeoman Generator,跳过上面的步骤4,不要启动自己的Kibana。

如何发布和安装插件

即使你的插件还没有什么功能,它有最少的代码要加载到Kibana。
在开发过程中,您不需要安装插件,因为我们在installedPlugins目录中工作。当你完成了你的插件,你需要安装到一个的Kibana实例中去。
要发布你的插件,你需要压缩你的目录的内容。
关于node_modules的提示:如果您需要运行时依赖关系,package.json将需要将这些依赖关系(即相应的node_modules子文件夹)捆绑到zip中。如果你使用上面提到的生成器,你可以执行npm run build创建一个捆绑的zip文件。
你必须使这个zip在任何地方都可以使用,并把它安装在你的Kibana实例中,如下:

bin/kibana plugin --install plugin-name -u https://url.to/plugin

您还可以从本地文件夹中指定要安装的文件模式的URL。

安装插件的更多资料可在中找到Kibana插件文件。( https://www.elastic.co/guide/en/kibana/master/kibana-plugins.html )

插件类型

插件可以通过几种方式扩展Kibana。一个插件可以有到一个或多个扩展功能,以提供新的功能。最常见的扩展功能很可能是:

  • visTypes: 向Kibana添加新的可视化类型。
  • apps : Kibana有可能添加完全独立的应用程序,可以提供新的功能。一个着名的例子可能是timelion,这是Kibana内的一个应用程序。
  • fieldFormats : 将新字段格式化程序添加到Kibana
  • 其他
    本教程系列将主要关注向Kibana添加新的可视化。如果你想为其他扩展点创建插件,我建议查看一些其他插件的来源(也有一些在Kibana的核心),这是类似于你想做的。
4 0
原创粉丝点击