我想创建一个使用 MSSQL 数据库的 Grafana 插件。我知道有一个内置的 MSSQL 数据源插件,但这需要用户输入整个 SQL 查询。我想创建一个自定义数据源,允许用户从列表中选择一个名称,插件将为此创建相应的查询。因此,我想构建一个完整的自定义查询构建器(它是数据源插件的一部分)。
我从简单的数据源插件 [https://github.com/grafana/simple-datasource/tree/master][1] 开始,我能够编译它并且它在 Grafana 中可见。
我认为如果我的数据源扩展现有的 MSSQL 插件会很容易。
我的 testDatasource 看起来像这样:
async testDatasource() {
return getBackendSrv()
.datasourceRequest({
url: '/api/tsdb/query',
method: 'POST',
data: {
from: '5m',
to: 'now',
queries: [
{
refId: 'A',
intervalMs: 1,
maxDataPoints: 1,
datasourceId: this.id,
rawSql: 'SELECT 1',
format: 'table',
},
],
},
})
.then((res: any) => {
return { status: 'success', message: 'Database Connection OK' };
})
.catch((err: any) => {
if (err.data && err.data.message) {
return { status: 'error', message: err.data.message };
} else {
return { status: 'error', message: err.status };
}
});
每次我测试它时,我都会在日志中得到一个错误
error="Could not find executor for data source type: my-mssql-datasource" remote_addr=[::1]
my-mssql-datasource
我已经在 github 上检查了这个错误的来源,我可以发现 grafana/pkg/tsdb/query_endpoint.go 中的 Grafana 代码在其注册插件中找不到名称。
有没有办法可以使用 Grafana 中已经存在的 MSSQL 后端处理?如果是这样,是否有任何指南或提示显示如何做到这一点?我试图遵循 Grafana 文档,但这对我没有帮助。
例如:我可以添加一些东西datasourceRequest
让 Grafana 对 MSSQL 执行我的查询吗?或者我可以注册我的数据源以便它使用 MSSQL 吗?
编辑 正如@Jan Garaj 在评论中提到的,可以使用仪表板变量来完成。但是,仪表板变量用于整个仪表板。如果我想要 2 个具有不同信号的面板,可以由用户选择,我不能使用仪表板变量。然后我需要像面板变量这样的东西。因为它是每个面板,所以我想使用查询生成器来执行此操作。[1]:https ://github.com/grafana/simple-datasource/tree/master