一、簡介
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/zh-tw/n/183187.html