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

时间:2018-06-26 05:40:42

标签: javascript grafana grafana-api

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

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

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

  

502错误的网关错误。

我的文件托管在here

我的datasource.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是我的plugin.json中定义的路由路径。

是什么导致此错误?我的datasource.js或plugin.json是否有错误?错误是发生在客户端还是服务器端?

1 个答案:

答案 0 :(得分:0)

第一件事是现在有一个Kusto (now renamed to Azure Data Explorer) Datasource for Grafana。因此,不确定是否再需要您的插件。

发生错误的原因是,plugin.json文件中的路由与您进行的呼叫不匹配。您将ping request设为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/