跳到主要内容

添加对外部共享仪表盘的支持

外部共享仪表盘(以前称为公共仪表盘)允许 Grafana 用户与任何人共享其仪表盘的访问权限,而无需将其添加为 Grafana 组织的用户。当通过这种方式访问仪表盘时,它会从后端检索查询,而不是从前端接收。这是为了避免暴露敏感数据和执行未经授权的查询。

因此,请求中不需要传递任何经过前端转换的主体,因为它不会用于外部共享仪表盘面板请求。

注意

前端数据源与外部共享仪表盘不兼容。要将前端数据源插件转换为后端插件,请参考将前端数据源转换为后端

在数据源插件中支持外部共享仪表盘

要使你的数据源插件在外部共享仪表盘范围内工作,请遵循以下步骤

  1. DataSourceWithBackend 扩展你的 DataSource 类

    export class MyDataSourceClass extends DataSourceWithBackend<TQuery, TOptions> {
    // your logic
    }
  2. 如有必要,使用你的自定义代码实现 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
    })
    );
    }
    }

  3. 在你的 plugin.json 中添加 "backend": true

    src/plugin.json
    "backend": true