建立一个流数据源端插件

bob电竞频道Grafana实验室团队
由Grbob电竞频道afana实验室团队

最后更新于2022年11月9日

初学者

介绍

Grafana支持广泛的数据源,包括普罗米修斯,MySQL,甚至Datadog。在之前的教程,我们展示了如何扩展Grafana功能查询自定义数据源建立一个后端数据源插件。在本教程中我们将进一步给后端数据源添加流媒体功能插件。流允许插件将尽快Grafana面板数据(不定期轮询从UI)。

关于后台插件的更多信息,请参阅文档后端插件

在本教程中,您将:

  • 使用流媒体功能扩展后端插件

先决条件

设置您的环境

您可以开始构建插件之前,您需要设置你的插件开发环境。

发现插件,Grafana扫描插件目录的位置,这取决于您的操作系统。

  1. 创建一个目录称为grafana-plugins在你喜欢的工作空间。

  2. 找到插件房地产在Grafana配置文件和设置插件属性的路径grafana-plugins目录中。指的是Grafana配置文档为更多的信息。

    (路径)插件= " /路径/ / grafana-plugins”
  3. 重启Grafana如果它已经运行,加载新的配置。

替代方法:码头工人

如果你不想安装Grafana本地机器上,您可以使用码头工人

使用码头工人建立Grafana插件开发,运行以下命令:

码头工人运行- d - p 3000:3000 - v " $ (pwd) "/grafana-plugins:/var/lib/grafana/plugins --name=grafana grafana/grafana:7.0.0

自Grafana只在启动加载插件,您需要重新启动容器每当你添加或删除一个插件。

码头工人重启grafana

创建一个新的插件

为你建立一个后端数据源插件,Grafana需要一个二进制文件,它可以执行在启动时加载插件。在本指南中,我们将构建一个二进制使用Grafana插件的SDK

最简单的方法是使用Grafana开始create-plugin工具。导航到插件文件夹,您在步骤1中配置和类型:

npx @grafana / create-plugin

遵循步骤和选择数据源你的插件类型和答案是的当提示创建一个插件后端。

cd my-plugin

安装前端依赖关系和构建插件的前端部分经销目录:

纱纱安装构建

运行下面的更新Grafana插件的SDK依赖的最新小版本:

去- u github.com/grafana/grafana-plugin-sdk-go去国防部整洁

构建后台插件二进制文件Linux、Windows和达尔文经销目录:

法师- v

现在,让我们来验证构建的插件可以用于Grafana当创建一个新的数据来源:

  1. 重新启动Grafana实例。
  2. 在您的web浏览器中打开Grafana。
  3. 通过side-menu导航配置- >数据源
  4. 点击添加数据来源
  5. 找到你的新创建的插件并选择它。
  6. 输入一个名称,然后单击保存&测试(现在报告忽略任何错误)。

你现在有一个新的数据源实例的插件,可以使用仪表板。确认,请执行以下步骤:

  1. 通过side-menu导航创建- >指示板
  2. 点击添加新的面板
  3. 在查询选项卡中,选择刚才创建的数据源。
  4. 线形图呈现一个系列组成的两个数据点。
  5. 保存仪表板。

故障排除

Grafana不加载插件

默认情况下,Grafana需要签署后端插件。加载未签名的后端插件,您需要配置Grafana允许未签名的插件。有关更多信息,请参考插件签名验证

解剖后端插件

你可能会注意到,直到这一刻中描述的相同的步骤建立一个后端数据源插件教程。此时,您应该熟悉后台插件结构和方式如何实现数据查询和健康检查功能。让我们迈出下一步,讨论如何数据源插件可以处理数据流。

添加流媒体功能

我们想要达到的是发行一个查询从一个数据源插件加载初始数据,然后切换到数据流模式,插件将数据帧Grafana时序面板。

简而言之,实现流媒体插件实现手段backend.StreamHandler接口包含SubscribeStream,RunStream,PublishStream方法。

SubscribeStream是一个方法,插件有机会授权用户订阅请求一个通道。用户在前端端订阅不同的消费通道实时数据。

当返回一个data.Frame与初始数据我们可以返回一个特殊的领域通道让前端知道我们要流数据帧后初始数据加载。当前端接收一帧通道设置它自动发出一个订阅请求通道。

通道是一个字符串标识符的客户可以订阅Grafana生活主题。看到Grafana活的文档渠道结构的详细信息

文档中说在Grafana生活频道包含3部分分隔/:

  • 范围
  • 名称空间
  • 路径

对数据源插件Grafana使用渠道ds范围。名称空间数据源的通道是一个数据源惟一的ID (UID)出具Grafana目前创建的数据源。路径是一个自定义字符串,插件作者自由选择自己(确保它包含允许符号)。即数据源通道l