前言
最近,关注了挺久的时序数据库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查看,我们的插件已经成功加载了!
Comments | NOTHING