首页 > 其他分享 >grafana插件开发

grafana插件开发

时间:2025-01-21 18:22:15浏览次数:1  
标签:插件 const grafana start 开发 props query

搭建环境&创建项目

npm install -g @grafana/toolkit
grafana-toolkit plugin:create my-grafana-plugin
插件项目结构
一个典型的 Grafana 插件项目包含以下主要文件和目录:
src:包含插件的源代码。
module.ts:用于导入和导出插件模块。
plugin.ts:插件的主要实现文件,通常包含 PanelPlugin 或 DataSourcePlugin 的定义。
components:存储 React 组件的目录。
types.ts:定义插件使用的数据类型和接口。
dist:包含构建后的插件文件,通常在构建过程中生成。
README.md:插件的说明文档。

  

开发面板插件

1.module.ts

import { PanelPlugin } from '@grafana/data';
import { MyPanel } from 'MyPanel';

export const plugin = new PanelPlugin(MyPanel).setPanelOptions((builder) => {
    return builder..addTextInput({
    path: 'text',
    name: 'test',
    description: 'Enter some text',
    defaultValue: 'test',
  })


  });

2.MyPanel.tsx

import React from 'react';
import { getAppEvents,RefreshEvent,TimeRangeUpdatedEvent  } from '@grafana/runtime';
import {PanelProps  } from '@grafana/data';
 
type State = {
    query: any
    from:number
    to:number
}

export class MyPanel extends React.Component<PanelProps, State> {
  private subscription:any;
  private subscription1:any;
  constructor(props: {} |any) {
    super(props);
    this.state = {
        query: {},
        start:0,
        end:0,
    };
}

  async componentDidMount() {
    

          //时间范围更新
          this.subscription = this.props.eventBus.getStream(TimeRangeUpdatedEvent).subscribe((event) => {
            const payload = event.payload; 
            const start = payload.from.unix()*1000; 
            const end = payload.to.unix()*1000;
            this.setState({
              start: start,
              end:end
            })
              
          });

          //重新加载数据或执行刷新操作
          this.subscription1 = this.props.eventBus.getStream(RefreshEvent).subscribe((event) => {
            console.log(`Received event: ${event.type}`);
            cosnt Variable = this.props.replaceVariables('${Variable}');  
            //const start = this.props.timeRange.from.unix()*1000;
            this.setState({
              query: Variable,
            })
            
          });

          
          

    
}





componentWillUnmount() {
  // 取消订阅,防止内存泄漏
  if (this.subscription) {
    this.subscription.unsubscribe();
  }
  if (this.subscription1) {
    this.subscription1.unsubscribe();
  }
}



    render() {
        const {
          width,
          height,
        } = this.props;

        return (
          <>

            <div style={{ position: 'absolute', width: `${width}px`, height: `${height}px` }}>
            <p> test:{this.props.options.test}</p>
            <p> query:{this.state.query}</p>
            <p> from:{this.state.start} to:{this.state.end}</p>
            </div>
     
          </>
        );
      }    


}

 

安装依赖&编译

yarn install
yarn build

 

添加插件

修改defaults.ini

[plugins]
allow_loading_unsigned_plugins = <plugin-id-1>,<plugin-id-2>


[plugin.my-panel]
path = /home/grafame/plugins/my-panel

  

 

  

 

标签:插件,const,grafana,start,开发,props,query
From: https://www.cnblogs.com/boye169/p/18684086

相关文章

  • 字玩FontPlayer开发笔记12 Vue3撤销重做功能
    字玩FontPlayer开发笔记12Vue3撤销重做功能字玩FontPlayer是笔者开源的一款字体设计工具,使用Vue3+ElementUI开发,源代码:github|gitee笔记撤销重做功能是设计工具必不可少的模块,以前尝试使用成熟的库实现撤销重做功能,但是细节问题有很多,就一直搁置了。这几天着手自己......
  • 微信小程序安全开发、测试的一些记录
    目录开发原则漏洞类型——越权漏洞类型——信息泄露漏洞类型——爬虫遍历漏洞类型——授权用户信息变更不跟进漏洞类型——注入类漏洞类型——上传、下载类Reference本文基于微信开发者平台发布的文章,增加了一些自己的思考。背景:小程序的业务接口在开发过程中如果不考虑安全,......
  • Vue 3 开发必备 VS Code 插件推荐
    在Vue3开发中,合适的插件可以大幅提升效率和代码质量。以下是一些推荐插件的简要介绍:AutoCloseTag自动补全HTML和Vue模板中的关闭标签,减少手动输入,支持多种文件类型。AutoRenameTag修改标签时自动同步更新闭合标签,避免手动错误,支持HTML、Vue等文件。Chinese(Si......
  • [Tools] 自定义ESLint插件
    自定义ESLint插件ESLint插件主要是用来扩展ESLint本身没有的功能,这里包括扩展规则、扩展配置、扩展解析器。90%的ESLint插件都是以扩展规则为主,所以这些插件里面会包含大量的自定义规则。像这一类的插件,一般一条规则会对应一个JS文件,JS文件里面需要导出一个对象:module.expo......
  • 一个由 Go 语言开发的开源屏幕共享工具,免费好用,高质量无延迟,保证数据安全(带私活源码)
    想必大家在日常的工作中,会经常需要分享代码、演示项目或者进行在线教学,这就需要一个既高效又便捷的屏幕共享工具。然而,现有的一些解决方案往往存在延迟高、画质差等问题。今天就分享一个开源的屏幕共享项目-screego,不但免费,还能在我们自己的服务器上运行,保证数据安全。项......
  • 我们开发了一个强大的 shell 脚本用于收集系统内存信息
    在Linux系统管理中,监控内存使用情况至关重要。我们开发了一个强大的shell脚本用于收集系统内存信息。该脚本以/bin/bash为解释器,首先创建/var/log/meminfo_collector.log日志文件,若创建失败则记录错误并终止,以方便后续追踪调试。接着根据当前日期在/root/kylin_s......
  • 计算机毕业设计Springboot二手房交易系统设计与实现 基于Spring Boot框架的二手房交易
    计算机毕业设计Springboot二手房交易系统设计与实现6u9qwob8 (配套有源码程序mysql数据库论文)本套源码可以先看具体功能演示视频领取,文末有联xi可分享随着城市化进程的加速,二手房市场在房地产领域中的地位愈发重要。然而,二手房交易过程复杂,信息不对称、交易风险高、流程......
  • JSP农村房屋和人员管理系统72k64(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、项目背景与意义随着农村经济的......
  • JSP农产品溯源系统d5091(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、研究背景随着食品安全问题的日......
  • JSP内部行文管理系统1l2l1--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、项目背景随着企业规模的扩大和......