前言

最近,关注了挺久的时序数据库GrepTime数据库终于开源并pre Release了。因为之前有过使用时序数据库的需求,所以这次也想体验一下新产品。

我自己对时序数据库的使用需求主要是数据监控,采用Grafana读取数据库里的数据并进行可视化。

Greptime声称支持多种数据库协议,包括MySQL, InfluxDB等。本人之前使用的是InfluxDB,Grafana对其支持不错。然而,简单尝试过后发现Grafana并不能直接从Greptime种读取数据。于是萌发了为其开发数据源插件的想法。

数据源插件开发整体流程 参考Grafana官方文档 https://grafana.com/tutorials/build-a-data-source-plugin/

准备开发环境

  • Grafana >=7.0
  • NodeJS >=14
  • yarn/npm

作为一个(没找到工作的)前端工程师,后面两项应该都有的。。

既然是开发Grafana插件,必然要有一个Grafana示例来测试。

准备Grafana

我自己服务器上有一个生产环境中的Grafana实例,然而肯定不能拿生产环境来测试。。所以又用docker开了一个临时开发用的实例。命令见下。

docker run -d -p 4000:3000 \ 
-v /home/ubuntu/projects/grafana-plugin-dev:/var/lib/grafana/plugins \
-e GF_DEFAULT_APP_MODE=development \
--name=grafana-plugin-dev  \
grafana/grafana:latest

端口和文件挂载位置可以随便选。。之后build出来的插件直接丢到这个文件夹里就可以了

注意需要额外设置环境变量 GF_DEFAULT_APP_MODE=development ,否则我们的插件因为未经审查,不会被Grafana加载。

准备js开发环境

使用 npx @grafana/create-plugin 安装并使用官方的插件开发模板

> npx @grafana/create-plugin
Need to install the following packages:
  @grafana/create-plugin
Ok to proceed? (y) 
y
? What is going to be the name of your plugin? 
Greptime
? What is the organization name of your plugin? 
GreptimeTeam
? How would you describe your plugin? 
Greptime datasource support for Grafana
? What kind of plugin would you like?  
datasource
? Do you want a backend part of your plugin? 
No
? Do you want to add Github CI and Release workflows? 
Yes
? Do you want to add a Github workflow for automatically checking "Grafana API compatibility" on PRs? 
Yes

进入新创建的文件夹,执行一次npm i。依赖安装完成后,我们的js开发环境就准备好啦。

插件加载测试

在正式开发之前,我们先来测试一下Grafana能否正确加载我们的插件。

直接执行npm run build,然后将打包完成的dist文件夹丢到我们之前容器挂载的文件夹下,最后重启Grafana容器。

登录Grafana查看,我们的插件已经成功加载了!


I am a noob