一、简介
Kibana是一个数据可视化分析的平台,而KibanaDevTools则是一个Kibana插件开发的全套工具。它允许用户在Kibana中创建定制的插件,以适应特定的需求。通过KibanaDevTools,用户可以快速开发和测试插件,然后进行部署。
二、为什么要选择KibanaDevTools?
对于想要开始Kibana插件开发的开发人员来说,KibanaDevTools是一个非常有力的助手。它提供了多种工具和模板,以帮助开发人员更快速、更高效地创建插件。例如,KibanaDevTools提供了一个内置的插件生成器,可快速生成一个插件的基本文件结构。此外,KibanaDevTools还提供了一个命令行工具,用于进行本地快速测试。
三、KibanaDevTools的主要特点
以下是KibanaDevTools的主要特点:
1.插件生成器
可以使用插件生成器来获得Kibana插件的基本文件结构,快速启动您的开发。这个生成器会生成一个包含所需目录和文件的项目结构,并包含您的插件的基本元数据。
kibana-plugin generate your-plugin-name
2.命令行工具
KibanaDevTools还包括一个命令行工具,该工具为Kibana插件的开发提供了快速的本地测试环境。它允许您在开发过程中更快地迭代您的插件,并在您完成之前进行输出和调试。
kibana-plugin run
3.文档和示例
KibanaDevTools提供了很多文档和示例,可帮助您理解Kibana插件的开发过程,以及如何使用该工具来加速您的开发。例如,官方网站上提供了一个示例插件,让您更方便了解Kibana插件的工作原理。
4.完全开放源代码
所有的KibanaDevTools工具和库都是完全开放源代码的。这意味着您可以自由地查看和修改代码,以满足您的特定需求。
5.良好的社区支持
KibanaDevTools拥有一个充满活力的社区,用户可以通过该社区获得支持和建议,并共建插件以丰富Kibana生态系统。
四、基本插件代码示例
以下是一个简单的Kibana插件代码示例,它使用React作为视图层框架:
import React, { Component } from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; import { EuiButton, EuiButtonEmpty, EuiFieldText, EuiFlexGroup, EuiFlexItem, EuiForm, EuiFormRow, EuiSpacer, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { PLUGIN_NAME } from '../../../common'; import { AppContextProvider, AppMountParameters } from '../../../public'; import { AppPluginStartDependencies } from '../../types'; import { HelloWorldApp } from './hello_world_app'; interface HelloWorldProps { apiBaseUrl: string; } interface HelloWorldState { name: string; greeting: string; isFetching: boolean; } export class HelloWorld extends Component { constructor(props: HelloWorldProps) { super(props); this.state = { name: '', greeting: '', isFetching: false, }; } private requestGreeting = async () => { const response = await fetch(`${this.props.apiBaseUrl}/greet/${this.state.name}`); const greeting = await response.text(); this.setState({ isFetching: false, greeting }); }; private handleNameChange = (e: React.ChangeEvent) => { this.setState({ name: e.target.value.trim() }); }; private handleGreetClick = () => { if (!this.state.name) { return; } this.setState({ isFetching: true }); this.requestGreeting(); }; public componentDidMount() { console.log(`[${PLUGIN_NAME}] plugin mounted`); } public componentWillUnmount() { console.log(`[${PLUGIN_NAME}] plugin will unmount`); } public render() { const isDisabled = !this.state.name || this.state.isFetching; return ( {i18n.translate('helloWorld.ButtonText', { defaultMessage: 'Greet', })} ); } } export const renderApp = ( // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types { element, history }: AppMountParameters, // eslint-disable-next-line @typescript-eslint/no-explicit-any { apiBaseUrl }: AppPluginStartDependencies ) => { render( , element ); // eslint-disable-next-line @typescript-eslint/no-explicit-any return (): any => { unmountComponentAtNode(element); }; }; export { HelloWorldApp };
五、总结
KibanaDevTools是一个非常有用的Kibana开发工具,它提供了很多便捷的功能和特性来加速您的插件开发。如果您是一位Kibana插件开发人员,那么KibanaDevTools肯定值得一试。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/183187.html