本文介绍如何通过API Key鉴权方案生成免登录可分享的Grafana大盘链接。

背景信息

原生的Grafana若需要直接访问大盘,要么使用Snapshot功能,要么开启匿名模式。前者对访问的数据做了镜像,随着时间变化无法查看后续更新的数据,后者若不配合IP白名单功能,则安全性太差。

Grafana服务支持通过API Key鉴权方案生成免登录的可分享的大盘链接。

步骤一:配置Grafana参数

  1. 登录Grafana服务控制台,在左侧导航栏单击工作区管理
  2. 工作区管理页面,单击目标工作区ID。
  3. 在左侧导航栏单击参数设置
  4. 在左侧参数列表选择aliyun,然后单击修改参数
  5. 修改api_key_share参数的运行参数为true,然后单击保存并生效
    设置api_key参数
  6. 可选:若期望链接用于iFrame内嵌,则需要额外调整以下参数。
    • 跨域情况下
      域名需为HTTPS,并修改以下3个security参数。
      allow_embedding=true
      cookie_samesite=none
      cookie_secure=true
      跨域情况参数修改
    • 未跨域情况下

      修改security下的allow_embedding参数为true,开启Frame内嵌即可。

步骤二:创建API Key

  1. 登录Grafana服务控制台,在左侧导航栏单击工作区管理
  2. 工作区管理页面,单击目标工作区右侧的访问地址url链接进入Grafana。
    说明 如果需要登录Grafana,可以使用Grafana的Admin账号和创建工作区时设置的密码登录Grafana,或单击Sign in with Alibaba Cloud直接使用当前购买工作区的阿里云账号登录Grafana。
  3. 在Grafana左侧导航栏选择Configuration > API keys
    说明 进入该菜单需要Admin权限。
  4. 单击New API keyAdd API key,然后设置以下参数。
    • Key name:API Key的名称,不可以和已有的名称重复。
    • Role:设置为Viewer
    • Time to live:设置有效时间,例如60s(60秒)、10m(10分钟)、1d(1天)。
  5. 单击Add,在弹出的对话框中获取并保存API Key的值。
    重要 对话框关闭后将无法再次查看API Key的值。
    API Key值

步骤三:生成分享链接

  1. 在Grafana页面,进入需要分享的大盘页面。
  2. 单击分享图标图标,在Link页签获取大盘分享链接。
    Grafana大盘分享链接
  3. 在链接最后添加&aliyun_api_key=<API Key值>,API Key值为上文步骤二中获取的API Key。
    例如:
    https://grafana-example.grafana.aliyuncs.com/d/TZWea****/test?orgId=1&from=167081684****&to=167083844****&aliyun_api_key=eyJrIjoiWkIwNnN2c0RTSD******
  4. 使用带有API Key的分享链接即可免登录访问Grafana大盘。
    说明 免登录访问Grafana大盘后如需登录Grafana,单击页面左下角的Sign In即可登录。

常见问题

  • 通过共享连接访问大盘时页面报错如下:访问大盘报错1

    可能原因:内嵌大盘情况下,allow_embedding参数未设置。配置allow_embedding参数的操作,请参见上文步骤一

  • 无法显示大盘数据。无法显示大盘内容
    内嵌大盘情况下,Cookie无法写入导致,可能原因如下:
    • 跨域,即根域名不同时,默认配置无法写入Cookie。
    • cookie_samesit参数设置为none,但是cookie_secure参数设置为false
    • 域名为HTTP。由于cookie_secure参数无法在HTTP下生效,因此域名不支持HTTP。

    解决方案:参考上文步骤一重新配置Grafana参数。

  • 通过共享连接访问大盘时页面报错如下:页面报错2
    可能原因:
    • 浏览器版本过低。
    • 内嵌大盘的情况下浏览器配置导致。
      解决方案:
      1. 查看Cookie使用的配置,允许使用Cookie。
      2. 若使用Chrome浏览器,在无痕模式下需要配置允许有所Cookie。
  • 如果用于大盘内嵌,APIKey建议是设置较短的有效时间使用一次就更换,还是配置一个很长时间的免登Key?

    您可以根据安全需要做配置,建议3个月换一次,若Key泄露可以通过删除让Key失效。

  • APIKey是否有数量上限?

    Key的创建官方源码里并没有做限制,由于页面查询时最多展示100条,建议不要超过100个。

  • APIKey配置的有效时间到期了,这个APIKey会自动删除吗?
    Key失效后,数据仍然存在,如果担心占用数量您可以手动删除Key。Grafana页面上失效的Key默认不展示,您可以单击Include expired keys显示已失效Key,然后删除。显示失效key