构建一个数据源后端插件
简介
Grafana支持广泛的数据源,包括Prometheus、MySQL,甚至Datadog。您很有可能已经可以将您所设置的系统中的指标可视化。不过,在某些情况下,您已经有了一个内部指标解决方案,希望将其添加到Grafana仪表板中。本教程将教您如何构建对数据源的支持。
有关后端插件的更多信息,请参阅文档后端插件.
在本教程中,你将:
- 为数据源构建后端
- 为数据源实现运行状况检查
- 为您的数据源启用Grafana alert
先决条件
- 了解如何在前端实现数据源。
- Grafana 7.0
- 走1.14 +
- 法师
- NodeJS
- 纱
设置环境
在开始构建插件之前,您需要设置插件开发环境。
为了发现插件,Grafana扫描a插件目录,其位置取决于您的操作系统。
创建一个名为
grafana-plugins
在你喜欢的工作场所。找到
插件
属性,并在配置文件中设置插件
属性到你的路径grafana-plugins
目录中。请参阅Grafana配置文档获取更多信息。[paths] plugins = "/path/to/grafana-plugins"
重新启动Grafana(如果它已经在运行),以加载新的配置。
替代方法:Docker
如果您不想在本地机器上安装Grafana,可以使用码头工人.
使用Docker为插件开发设置Grafana,运行以下命令:
Docker运行-d -p 3000:3000 -v "$(pwd)"/grafana-plugins:/var/lib/grafana/plugins——name=grafana grafana/grafana:7.0.0 .
由于Grafana只在启动时加载插件,所以无论何时添加或删除插件,都需要重新启动容器。
Docker重启grafana
创建一个新插件
要为数据源插件构建后端,Grafana需要一个二进制文件,以便在启动时加载插件时执行。方法构建二进制文件Grafana插件SDK for Go.
最简单的方法就是使用Grafanacreate-plugin工具.导航到步骤1中配置的插件文件夹,输入:
npx @grafana / create-plugin
按照步骤进行选择数据源作为你的插件类型和答案是的当提示为你的插件创建后端时。
cd my-plugin
安装前端依赖项并构建插件的前端部分经销目录:
纱线安装纱线制作
运行以下命令进行更新Grafana插件SDK for Go对最新小版本的依赖:
去得到-u github.com/grafana/grafana-plugin-sdk-go去mod整洁
为Linux、Windows和Darwin构建后端插件二进制文件经销目录:
法师- v
现在,让我们验证一下,当创建一个新的数据源时,你已经构建的插件可以在Grafana中使用:
- 重新启动您的Grafana实例。
- 在浏览器中打开Grafana。
- 通过侧菜单导航到配置->数据源.
- 点击添加数据源.
- 找到新创建的插件并选择它。
- 输入名称,然后单击保存和测试(忽略目前报告的任何错误)。
现在你有了一个插件的新数据源实例,可以在仪表板中使用了:
- 通过侧菜单导航到创建->指示板.
- 点击添加新面板.
- 在查询选项卡中,选择刚刚创建的数据源。
- 折线图是由两个数据点组成的一个序列呈现的。
- 保存仪表板。
故障排除
Grafana不能加载我的插件
默认情况下,Grafana要求对后端插件进行签名。要加载无签名后端插件,需要将Grafana配置为允许使用unsigned插件.有关更多信息,请参阅插件签名验证.
剖析后端插件
用于构建数据源后端的文件夹和文件有:
文件/文件夹 | 描述 |
---|---|
Magefile.go |
使用法师构建文件不是必须的,但我们强烈建议使用它,这样你就可以使用插件SDK提供的构建目标。 |
/ go.mod |
Go模块依赖关系,参考 |
/ src / plugin.json |
描述后端插件的JSON文件 |
/ pkg main.go |
插件二进制文件的起始点。 |
plugin.json
的plugin.json所有插件都需要这个文件。当构建后端插件时,这些属性很重要:
财产 | 描述 |
---|---|
后端 | 应该设置为真正的 对于后端插件。这告诉Grafana在加载插件时应该启动一个二进制文件。 |
可执行的 | 这是Grafana期望启动的可执行文件的名称,参见plugin.json参考获取详细信息。 |
报警 | 应该设置为真正的 如果您的后端数据源支持警报。 |
在下一步中,我们将查看查询端点!
实现数据查询
我们首先打开文件/ pkg /插件/ plugin.go
.在此文件中,您将看到SampleDatasource
结构,它实现了后端。QueryDataHandler接口。的QueryData
方法是数据源插件获取数据的地方。
每个请求包含多个查询,以减少Grafana和插件之间的流量。因此,您需要遍历查询切片,处理每个查询,然后返回所有查询的结果。
在本教程中,我们提取了一个名为查询
来处理每个查询模型。由于每个插件都有自己独特的查询模型,Grafana将其作为JSON发送给后端插件。因此插件需要将它分解
查询模型变得更容易使用。
如您所见,示例只返回静态数字。尝试扩展插件以返回其他类型的数据。
你可以阅读更多关于如何在我们的文档中构建数据帧.
添加对运行状况检查的支持
实现运行状况检查处理程序允许Grafana验证数据源是否正确配置。
在Grafana的UI中编辑数据源时,可以这样做保存和测试以验证它是否按预期工作。
在此示例数据源中,运行状况检查成功的几率为50%。确保向用户返回适当的错误消息,告知他们数据源中的错误配置。
开放/ pkg /插件/ plugin.go
.在这个文件中,您将看到SampleDatasource
结构也实现了后端。CheckHealthHandler接口。导航到CheckHealth
方法查看如何实现此示例插件的运行状况检查。
启用Grafana告警
- 开放src / plugin.json.
- 添加顶层
后端
值为的属性真正的
指定你的插件支持Grafana警报,例如:{…"backend": true, "executable": "gpx_simple_datasource_backend", "alerting": true, "info":{…}
- 重新构建插件的前端部分经销目录:
纱构建
- 重新启动您的Grafana实例。
- 在浏览器中打开Grafana。
- 方法中创建的仪表板创建一个新插件的一步。
- 编辑现有面板。
- 点击警报选项卡。
- 点击创建警报按钮。
- 编辑条件并指定大于10.改变评估每一个来十年代清除为字段,使警报规则快速求值。
- 保存仪表板。
- 一段时间后,警报规则计算并转换为报警状态。