grafana插件动态数据

举报
Nick Qiu 发表于 2021/03/26 00:35:47 2021/03/26
【摘要】 简介 前一篇文章,笔者探讨了如何使用grafana创建插件,以及制作配置面板,本文介绍如何把sql查询结果内的数据显示到pannel面板内。 数据准备 mysql 数据源 drop table if EXISTS `table1`; CREATE TABLE `table1` ( `id` INT ( 11 ) NOT NULL AUTO_INCREMENT, `create...

简介

前一篇文章,笔者探讨了如何使用grafana创建插件,以及制作配置面板,本文介绍如何把sql查询结果内的数据显示到pannel面板内。

数据准备

mysql 数据源

drop table if EXISTS  `table1`;
CREATE TABLE `table1` ( `id` INT ( 11 ) NOT NULL AUTO_INCREMENT, `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '销售记录的月份', `value` INT ( 11 ) DEFAULT 0 COMMENT '值',
PRIMARY KEY ( `id` ) 
) ENGINE = INNODB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8;

insert into table1 (`create_time`,`value`) VALUES ("2020-10-18 00:00:00",1), ("2020-10-19 00:00:00",2), ("2020-10-20 00:00:00",60);

操作步骤

  • 新建pannel查询,在dashboard上新建上一篇文章创建好的pannel,编辑sql语句,填入如下sql:
SELECT
  create_time AS "time",
  `value` AS `value`
FROM table1
--  WHERE
--  $__timeFilter(create_time)
  • 数据源的查询结果在插件内可以通过data传递给pannel组件,在SimplePanel.tsx文件内添加如下代码,读取查询结果number类型的列的最后一个数据。
const radii = data.series
 .map(series => series.fields.find(field => field.type === 'number'))
 .map(field => field?.values.get(field.values.length - 1));

  • SimplePanel.tsx 组件渲染代码内使用该参数,圆的半径动态的传入
 <svg className={styles.svg} width={width} height={height} xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" viewBox={`-${width / 2} -${height / 2} ${width} ${height}`} > {/* 修改后代码 */} <g fill={color}> {radii.map((radius, index) => { return <circle r={radius} />; })} </g> {/* 修改前代码 <g> <circle style={{ fill: color }} r={100} /> </g> */} </svg>

完整代码

文章来源: www.jianshu.com,作者:Nick_4438,版权归原作者所有,如需转载,请联系作者。

原文链接:www.jianshu.com/p/bcec02984939

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。