Пользовательский источник данных Grafana для использования mssql - PullRequest
0 голосов
/ 14 июля 2020

Я хочу создать плагин Grafana, который использует базы данных MS SQL. Я знаю, что есть встроенный плагин источника данных MS SQL, но он требует, чтобы пользователь вводил целые SQL запросы. Я хочу создать собственный источник данных, который позволяет пользователю выбирать имя из списка, и плагин создаст для этого соответствующий запрос. Поэтому я хочу создать полностью настраиваемый конструктор запросов (который является частью подключаемого модуля источника данных).

Я начал с простого подключаемого модуля источника данных https://github.com/grafana/simple-datasource/tree/master, и я могу скомпилировать это, и это видно в Grafana.

Я подумал, что будет легко, если мой источник данных расширяет существующий плагин MS SQL.

Мой 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]

Я проверил источники на github на предмет этой ошибки и могу обнаружить, что код Grafana в grafana / pkg / tsdb / query_endpoint . go не может найти имя my-mssql-datasource в зарегистрированных плагинах.

Есть ли способ использовать бэкэнд-обработку MS SQL, которая уже существует в Grafana? Если да, то какие руководства или подсказки показывают, как это сделать? Я пытался следовать документации Grafana, но это мне не помогло.

Например: Могу ли я добавить что-нибудь в свой datasourceRequest, что заставит Grafana выполнять мои запросы к MS SQL? Или я могу зарегистрировать свой источник данных, чтобы он использовал MS SQL?

...