Аутентификация источника данных по маршрутам для подключаемого модуля источника данных Grafana - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь написать собственный плагин источника данных для Grafana , который будет запрашивать токены аутентификации Azure AD и отправлять их вместе с запросами в мою базу данных, которая примет токен и вернет ответ на запрос.query.

Я заметил, что подключаемый модуль Azure Monitor для Grafana делает то же самое, прося пользователя ввести свой идентификатор клиента, секрет клиента и идентификатор клиента и используя его через часть маршрутов {} их * 1005.* plugin.json file.

Я использовал этот метод, но получаю сообщение об ошибке:

502 ошибка шлюза.

Myфайлы размещены здесь

Важной частью моего 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 - путь к маршрутам, определенный в моем плагине.json.

Что вызывает эту ошибку?Есть ли ошибка в моем datasource.js или моем plugin.json?Ошибка происходит на стороне клиента или на стороне сервера?

1 Ответ

0 голосов
/ 23 ноября 2018

Во-первых, теперь существует источник данных Kusto (теперь переименованный в Azure Data Explorer) для Grafana .Поэтому не уверен, что вам больше нужен ваш плагин.

Причина вашей ошибки в том, что ваш маршрут в файле plugin.json не соответствует вызовам, которые вы делаете.Вы делаете запрос ping , это HTTP GET, но маршрут соответствует запросам POST.

Обработка ошибок в Grafana определенно может быть лучше - в журналах вы увидите ошибку, которая говорит:

http: proxy error: unsupported protocol scheme ""

В поле URL задана пустая строка из-за отсутствия совпадения в маршрутах плагина.Затем, когда прокси источника данных в Grafana пытается создать URL для отправки в Azure, происходит сбой, поскольку не указан протокол (http или https).

Документация для маршрутов и аутентификации подключаемого модуля: http://docs.grafana.org/plugins/developing/auth-for-datasources/

...