Нет хоста в URL — адресе запроса для учебника по плагину источника данных Grafana- Добавление аутентификации

#authentication #plugins #proxy #datasource #grafana

Вопрос:

Я пытаюсь следовать примеру разработки плагина источника данных от Grafana. В конечном счете, я хочу, чтобы мой плагин использовал Oauth, но даже с простым примером прокси-сервера источника данных Grafana у меня, похоже, возникают проблемы. Я обновил свой плагин.json, класс и конструктор.

Я настроил этот жестко закодированный пример.

в файле plugin.json

       {
        "path": "grafana",
        "url": "https://github.com"
      }
    ],
 

И образец testDataSource()

   async testDatasource() {
    return getBackendSrv()
      .datasourceRequest({
        url: this.url   '/grafana/grafana',
        method: 'GET',
      })
      .then(response => {
        if (response.status === 200) {
          return { status: 'success', message: 'Data source is working', title: 'Success' };
        } else {
          return { status: 'failure', message: 'Data source is not working: '   response.status, title: 'Failure' };
        }
      });
  }
 

Когда я пытаюсь сохранить/протестировать этот источник данных, чтобы вызвать этот метод, я получаю во внешнем интерфейсе
Ошибка HTTP Плохой Шлюз
И в журналах

t=2021-09-17T14:31:22 0000 lvl=ошибка msg=»Ошибка прокси-сервера данных» регистратор=идентификатор пользователя в журнале данных-прокси=1 Идентификатор организации=1 имя пользователя=путь администратора=/api/источники данных/прокси/9/графана/графана remote_addr=172.17.0.1 ссылка=http://локальный хост:3000/источники данных/редактировать/9/ ошибка=»ошибка http: прокси: http: нет хоста в URL-адресе запроса»

Я бы ожидал, что запрос будет перенаправлен на прокси-сервер источника данных и для этого отправит запрос на github, но, похоже, Grafana делает запрос на /api/источники данных/прокси/9/grafana/grafana, и ничего не отвечает?

Ответ №1:

Просматривая мой источник данных через API, там ничего не указано для URL. Вам нужно будет отобразить это в своем ConfigEditor.tsx

 <DataSourceHttpSettings
  defaultUrl="http://localhost:8080"
  dataSourceConfig={options}
  onChange={onOptionsChange}
/>
 

Что даст вам базовую форму с URL-адресом, белым списком, параметрами аутентификации, которые вы видите в большинстве плагинов. URL-адрес там, я думаю, должен соответствовать тому, что у вас есть в ваших маршрутах.