#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-адрес там, я думаю, должен соответствовать тому, что у вас есть в ваших маршрутах.