首页 > 其他分享 >dbeaver Community :自定义内部 dashboard 模版

dbeaver Community :自定义内部 dashboard 模版

时间:2023-09-01 09:33:05浏览次数:42  
标签:自定义 模版 dbeaver Community 查询 dashboard PROCESSLIST

dbeaver的官方文档并没说明怎么去自定义内部的 dashboard 模版。

但是,他是开源的,有源代码可查的。

而且,他是java的,即使没有源代码,你也可以简单的去反编译class来读取源代码!

#==========================================================

以下是我的一点研究。

#==========================================================

 不得不说 dbeaver 的实现真的很优雅。这种普遍的、灵活的、繁琐的需求,人家早就通过一套机制简单的处理了。 dashboard 模版自定义可以简单的通过修改 [DBEAVER_INSTALL_HOME]\plugins\org.jkiss.dbeaver.ext.mysql_????????.jar\plugin.xml 文件来实现。   说明:
<mapQuery id="mysql.query.status" updatePeriod="1000">SHOW GLOBAL STATUS</mapQuery>
  这是dbeaver全局的查询(注意其id="mysql.query.status",sql语句是"SHOW GLOBAL STATUS"),这个查询具有全局的查询频次(updatePeriod="1000")  
        <dashboard id="mysql.traffic" mapQuery="mysql.query.status" label="MySQL Net Traffic" defaultView="timeseries" group="Status"
            calc="delta" value="bytes" mapKeys="Bytes_sent,Bytes_received"  mapLabels="Sent,Received" measure="Kb/s"
            showByDefault="true" description="Server outbound traffic">
            <datasource id="mysql"/>
        </dashboard>

这是dbeaver内置的、不可编辑的内置dashboard。每个属性,基本上可以通过字面意思明白。

需要注意的是:他们的查询都是通过调用全局的查询(mapQuery)来获取数据源的 ,其字段来源于全局查询的行记录,标题可以通过对应数量的自定了标签来实现。

值得注意的是:这种通过mapQuery的方式,本质上还是适用于类似 show global status的查询;其特点是【n行2列:n行中的每一行都有其独立的意义】,我们可以只观测自己关心的某一行或多行,不需要关注整体的意义。

#==========================================================

 例子: 绿色背景的是我自己自定义的。  
    <extension point="org.jkiss.dbeaver.dashboard">

        <mapQuery id="mysql.query.status" updatePeriod="1000">SHOW GLOBAL STATUS</mapQuery>
        <mapQuery id="mysql.query.connect" updatePeriod="5000">
select t.PROCESSLIST_USER as user,count(t.PROCESSLIST_HOST) as hosts
 from performance_schema.threads t
 where t.PROCESSLIST_USER is not null
 group by t.PROCESSLIST_USER
 order by 1
        </mapQuery>

        <dashboard id="mysql.user_connect" mapQuery="mysql.query.connect" label="MySQL user connect" defaultView="timeseries" group="Status"
            calc="value" value="integer" mapKeys="root"  mapLabels="root user"
            showByDefault="false" description="MySQL root user">
            <datasource id="mysql"/>
        </dashboard>



        <dashboard id="mysql.traffic" mapQuery="mysql.query.status" label="MySQL Net Traffic" defaultView="timeseries" group="Status"
            calc="delta" value="bytes" mapKeys="Bytes_sent,Bytes_received"  mapLabels="Sent,Received" measure="Kb/s"
            showByDefault="true" description="Server outbound traffic">
            <datasource id="mysql"/>
        </dashboard>

        <dashboard id="mysql.innodb.data" mapQuery="mysql.query.status" label="InnoDB data IO" defaultView="timeseries" group="Status"
                   calc="delta" value="bytes" mapKeys="Innodb_data_read,Innodb_data_written" mapLabels="Read,Write" measure="Kb/s"
                   showByDefault="true" description="InnoDB data stats">
            <datasource id="mysql"/>
        </dashboard>

        <dashboard id="mysql.innodb.lock_cw" mapQuery="mysql.query.status" label="InnoDB lock" defaultView="timeseries" group="Status"
                   calc="value" value="integer" mapKeys="Innodb_row_lock_current_waits" mapLabels="Innodb_row_lock_current_waits"
                   showByDefault="false" description="Innodb_row_lock_current_waits">
            <datasource id="mysql"/>
        </dashboard>

        <dashboard id="mysql.innodb.memory" mapQuery="mysql.query.status" label="InnoDB memory" defaultView="timeseries" group="Status"
                   calc="value" value="bytes" mapKeys="Innodb_mem_total,Innodb_mem_dictionary,Innodb_mem_adaptive_hash" mapLabels="Total,Dict,Hash"
                   showByDefault="false" description="InnoDB memory stats">
            <datasource id="mysql"/>
        </dashboard>


        <dashboard id="mysql.com.queries" mapQuery="mysql.query.status" label="DML Queries" defaultView="timeseries" group="Status"
                   calc="delta" value="integer" mapKeys="Com_select,Com_insert,Com_update,Com_delete" mapLabels="Select,Insert,Update,Delete"
                   showByDefault="true" description="Queries stats">
            <datasource id="mysql"/>
        </dashboard>


        <dashboard id="mysql.Threads_running" mapQuery="mysql.query.status" label="Threads_running" defaultView="timeseries" group="Status" updatePeriod="1000"
            calc="value" value="integer" mapKeys="Threads_running" mapLabels="Threads_running"
            showByDefault="true" description="Threads_running">
            <datasource id="mysql"/>
        </dashboard>

    </extension>

 

标签:自定义,模版,dbeaver,Community,查询,dashboard,PROCESSLIST
From: https://www.cnblogs.com/jinzhenshui/p/17670961.html

相关文章

  • js_通过js主动触发原生事件, 以及通过js注册自定义事件并手动触发
    现实情景:在对博客园的样式进行修改时,需要对博客园的中某些DOM的绑定事件进行手动触发主动触发原生事件,以click为例constoBtn2=document.querySelector('#btn2')oBtn2.addEventListener('click',()=>{console.log('click')})constevObj=document.createEv......
  • Log4j输出到多个自定义文件
     引入:log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在现有的log4j基础上稍加配置即可轻松实现这一功能。 实例: 对于log4j的简单配置,可以参见log4j文档说明,这里先来看一......
  • 自定义镜像-镜像结构
       ......
  • Swagger3 (OpenAPI3)自定义参数对象渲染设置ModelConverter
    Swagger2设置方法以SpringDataJPA里的分页参数Pageable为例,在使用Swagger2的时候,可以通过自定义AlternateTypeRule,修改参数对象的参数渲染;如下/***分页参数实体类参数转换,让swagger显示正常的传参**@paramresolver*@return*/@BeanpublicAlternateTy......
  • C# 在datatable中添加自定义字段
    DataTabledt=newDataTable();sql.Append("SELECTafromb");dt=SqlHelper.GetDataTable(sql.ToString());sql=newStringBuilder();sql.Append("SELECTcfromd");varjcdt=SqlHelper.GetDataTable(sql.ToString());......
  • dbeaver 使用教程(简版)
    dbeaver使用教程(简版)原文链接:https://www.jianshu.com/p/597535271ae1DBeaver脚本窗口字体调整、放大和缩小字体技巧一、菜单栏-窗口-编辑器 快捷键:ctrl++ 技巧二、脚本关键字大小、窗口-首选项-SQL格式化-关键字大小写(调整字体) 技巧三:快捷键汇总ctrl+enter执......
  • DBeaver——设置字体大小
    DBeaver——设置字体大小原文链接:https://blog.csdn.net/qq_36501591/article/details/126130838DBeaver脚本窗口字体调整、放大和缩小字体技巧一、菜单栏-窗口-编辑器 快捷键:ctrl++ 技巧二、脚本关键字大小、窗口-首选项-SQL格式化-关键字大小写(调整字体) 技巧三:快......
  • RTSP/Onvif协议安防视频平台EasyNVR录像模式自定义操作
    TSINGSEE青犀视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif流媒体协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。在智慧安防等视频监控场景中,EasyNVR可提供视频实时监控直播、云端录像、云存储、录像检索与回看、告......
  • webman:自定义配置文件(v1.5.7)
    一,官方文档地址:https://www.workerman.net/doc/webman/config.html二,代码:1,.env:GOODS_IMAGE_DIR=/var/www/html/goodsImageGOODS_IMAGE_HOST=http://192.168.219.62,config/images.php12345<?phpreturn[   "goodsImageDir"=>getenv(......
  • Kubernetes编程—— 如何操作自定义资源
    如何操作自定义资源client-go为每种kubernetes内置资源提供对应的clientset和informer。那如果我们要监听和操作自定义资源对象,应该如何做呢?这里我们有两种方式:我理解意思是说:1、使用client-go提供的dynamicClient来操作自定义操作资源对象,当......