Grafana的Datasource插件开发实践一

我们可以开发任何数据库的插件,插件通过http协议与数据库进行通信。

项目目录结构

├── src
    ├── css
    ├── img
    │   └── server-logo.png
    ├── module
    │   ├── annotationsQueryCtrl.js
    │   ├── configCtrl.js
    │   ├── datasource.js
    │   ├── queryCtrl.js
    │   └── queryOptionsCtrl.js
    ├── module.js
    ├── page
    │   ├── annotationsQuery.html
    │   ├── config.html
    │   ├── query.html
    │   └── queryOptions.html
    └── plugin.json
├── Gruntfile.js
├── README.md
├── package.json
复制代码

元数据文件有plugin.jsonREADME.md两个,Gruntfile.js是grunt工具的元数据文件,这三个文件就不多少了。 datasource plugin的主要源码在src文件中,css文件夹存放样式文件,img文件夹放图片文件,也可以直接略过。 剩下的是module文件夹、page文件夹、module.js文件和plugin.json文件。

plugin.json文件

在plugin.json文件中,有两个关于datasource特定的设置,其中一个必须为true

"metrics": true,  // 是否在panel中支持metrics
"annotations": false,  // 在dashboard中支持annotations查询
复制代码

plugin.json保存plugin的元数据,Grafana在扫描插件目录时查找plugin.json文件,并自动注册插件,文件中的内容会被提取并封装成对象使用。 plugin.json文件示例:

{
  "name": "代理服务端",
  "id": "grafana-server-datasource",
  "type": "datasource",
  "metrics": true,
  "annotations": true,
  "info": {
    "description": "代理服务端作为数据源",
    "author": {
      "name": "liuchunhui",
      "url": "https://grafana.com"
    },
    "logos": {
      "small": "img/server-logo.png",
      "large": "img/server-logo.png"
    },
    "links": [
      {"name": "Github", "url": ""},
      {"name": "MIT License", "url": ""}
    ],
    "version": "1.0.0",
    "updated": "2018-04-23"
  },

  "dependencies": {
    "grafanaVersion": "3.x.x",
    "plugins": []
  }
}
复制代码
module.js

module.js文件非常重要,它是插件加载的起点文件。与Grafana的其余部分进行交互,插件文件需要导出以下5个模块:

Datasource  // Required
QueryCtrl  // Required
ConfigCtrl  // Required
QueryOptionsCtrl  // 
AnnotationsQueryCtrl  //
复制代码

所以在module中,负责导出这五个模块。 module.js文件代码示例:

import GenericAnnotationsQueryCtrl from './module/annotationsQueryCtrl';
import GenericConfigCtrl from './module/configCtrl';
import GenericDatasource from './module/datasource';
import GenericQueryCtrl from './module/queryCtrl';
import GenericQueryOptionsCtrl from './module/queryOptionsCtrl';

export {
    GenericAnnotationsQueryCtrl as AnnotationsQueryCtrl,
    GenericConfigCtrl as ConfigCtrl,
    GenericDatasource as Datasource,
    GenericQueryCtrl as QueryCtrl,
    GenericQueryOptionsCtrl as QueryOptionsCtrl
};
复制代码
module文件夹
    │   ├── annotationsQueryCtrl.js
    │   ├── configCtrl.js
    │   ├── datasource.js
    │   ├── queryCtrl.js
    │   └── queryOptionsCtrl.js
复制代码

这五个文件对应module.js需要导出的五个模块,将来会被转换为五个angular的控制器。

page文件夹
    │   ├── annotationsQuery.html
    │   ├── config.html
    │   ├── query.html
    │   └── queryOptions.html
复制代码

这四个文件对应module文件夹下annotationsQueryCtrlconfigCtrlqueryCtrlqueryOptionsCtrl四个模块需要绑定的页面模板, datasource模块不需要页面模板。

下一篇详细介绍在开发中的内容Grafana的Datasource插件开发实践二

转载于:https://juejin.im/post/5addbcbd5188256715474452

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Grafana 是一款功能强大的数据可视化工具,而 grafana-api-datasource 则是 Grafana 的一个插件。这个插件的作用是可以从外部的 API 接口获取 JSON 数据,并将这些数据解析出来用于 Grafana 的数据展示。 使用 grafana-api-datasource 插件,我们可以通过调用外部的 API 接口获取需要展示的数据。这些 API 接口返回的数据通常是以 JSON 格式进行返回的,而 grafana-api-datasource 可以解析并读取这些数据。这样,我们就能够将外部的数据与 Grafana 的可视化功能相结合,展示出更加丰富和有意义的图表和面板。 使用 grafana-api-datasource 插件,我们可以配置数据源并指定 API 的地址和相应的参数。插件会通过调用这个 API 接口来获取数据,并将返回的 JSON 数据解析出来。解析后的数据可以被 Grafana 使用,我们可以根据需要选择展示的字段和指标,创建相应的仪表盘和图表。 这个插件的好处在于,它提供了与外部系统集成的能力。我们可以从各种各样的数据源中获取数据,比如数据库、第三方 API 以及其他服务。无论是获取实时数据还是历史数据,我们只需要通过配置相应的 API 接口,grafana-api-datasource 插件就可以帮助我们获取和展示这些数据。 总之,grafana-api-datasourceGrafana 的一个插件,它可以通过调用外部的 API 接口获取 JSON 数据并解析出来。这个插件的作用在于,让 Grafana 可以与各种外部的数据源进行集成,将这些数据以更直观和有意义的方式展示出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值