通过 Grafana 数据源插件的路由进行数据源身份验证



>我正在尝试为 Grafana 编写一个自定义数据源插件,该插件将请求 Azure AD 身份验证令牌并将其与查询一起发送到我的数据库,该数据库将接受令牌并将响应返回到查询。

我注意到 Grafana 的 Azure Monitor 插件通过要求用户输入其客户端 ID、客户端密码和租户 ID 并通过其 plugin.json 文件的 routes{} 部分使用它来执行相同的操作。

我遵循了此方法,但出现错误:

502 错误的网关错误。

我的文件托管在这里

我的数据源的重要部分.js进行HTTP调用是

query(options) {
const csl = document.getElementById("csl").value;
var queries = _.filter(options.targets, item => {
return item.hide !== true;
}).map(item => {
return {
refId: item.refId,
intervalMs: options.intervalMs,
maxDataPoints: options.maxDataPoints,
format: item.format,
};
});
if (queries.length <= 0) {
return this.$q.when({data: []});
}
return this.backendSrv.datasourceRequest({
url: `api/datasources/proxy/${this.id}/kusto/query`,
method: 'POST',
headers: this.headers,
data: {
db: this.database,
csl: csl,
from: options.range.from,
to: options.range.to,
queries: queries,
}
});
}

其中 kusto 是我的插件.json 中定义的路由路径。

导致此错误的原因是什么?我的数据源.js或我的插件.json是否有错误?错误发生在客户端还是服务器端?

第一件事是,现在有一个用于 Grafana 的 Kusto(现已重命名为 Azure 数据资源管理器(数据源。所以不确定你还需要你的插件了。

您错误的原因是 plugin.json 文件中的路由与您进行的调用不匹配。您正在使 ping 请求是 HTTP GET,但路由与 POST 请求匹配。

Grafana 中的错误处理在这里肯定可以更好 - 在日志中,您将看到一个错误,上面写着:

http: proxy error: unsupported protocol scheme ""

由于在插件路由中找不到匹配项,URL 字段被设置为空字符串。然后,当 Grafana 中的数据源代理尝试创建要发送到 Azure 的 URL 时,它会失败,因为没有指定协议(http 或 https(。

插件路由和身份验证文档:http://docs.grafana.org/plugins/developing/auth-for-datasources/

最新更新