一、简介
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
微信扫一扫
支付宝扫一扫