添加对外部共享仪表盘的支持
外部共享仪表盘(以前称为公共仪表盘)允许 Grafana 用户与任何人共享其仪表盘的访问权限,而无需将其添加为 Grafana 组织的用户。当通过这种方式访问仪表盘时,它会从后端检索查询,而不是从前端接收。这是为了避免暴露敏感数据和执行未经授权的查询。
因此,请求中不需要传递任何经过前端转换的主体,因为它不会用于外部共享仪表盘面板请求。
注意
前端数据源与外部共享仪表盘不兼容。要将前端数据源插件转换为后端插件,请参考将前端数据源转换为后端。
在数据源插件中支持外部共享仪表盘
要使你的数据源插件在外部共享仪表盘范围内工作,请遵循以下步骤
-
从
DataSourceWithBackend
扩展你的 DataSource 类export class MyDataSourceClass extends DataSourceWithBackend<TQuery, TOptions> {
// your logic
} -
如有必要,使用你的自定义代码实现
query
方法。如果这将改变后端查询响应(targets
属性),则不要转换请求主体。调用外部共享仪表盘端点时,此主体不会作为参数传递。然后,调用
super.query(request)
。这是调用外部共享仪表盘端点的地方。export class MyDataSourceClass extends DataSourceWithBackend<TQuery, TOptions> {
query(request: DataQueryRequest<TQuery>): Observable<DataQueryResponse> {
// your logic
return super.query(request).pipe(
map((response) => {
// your logic
})
);
}
} -
在你的
plugin.json
中添加"backend": true
src/plugin.json"backend": true