本文介绍如何通过API Key鉴权方案生成免登录可分享的Grafana大盘链接。
背景信息
原生的Grafana若需要直接访问大盘,要么使用Snapshot功能,要么开启匿名模式。前者对访问的数据做了镜像,随着时间变化无法查看后续更新的数据,后者若不配合IP白名单功能,则安全性太差。
Grafana服务支持通过API Key鉴权方案生成免登录的可分享的大盘链接。
步骤一:配置Grafana参数
- 登录Grafana服务控制台,在左侧导航栏单击工作区管理。
- 在工作区管理页面,单击目标工作区ID。
- 在左侧导航栏单击参数设置。
- 在左侧参数列表选择aliyun,然后单击修改参数。
- 修改api_key_share参数的运行参数为true,然后单击保存并生效。
- 可选:若期望链接用于iFrame内嵌,则需要额外调整以下参数。
- 跨域情况下域名需为HTTPS,并修改以下3个security参数。
allow_embedding=true cookie_samesite=none cookie_secure=true
- 未跨域情况下
修改security下的allow_embedding参数为true,开启Frame内嵌即可。
- 跨域情况下
步骤二:创建API Key
- 登录Grafana服务控制台,在左侧导航栏单击工作区管理。
- 在工作区管理页面,单击目标工作区右侧的访问地址url链接进入Grafana。说明 如果需要登录Grafana,可以使用Grafana的Admin账号和创建工作区时设置的密码登录Grafana,或单击Sign in with Alibaba Cloud直接使用当前购买工作区的阿里云账号登录Grafana。
- 在Grafana左侧导航栏选择 。说明 进入该菜单需要Admin权限。
- 单击New API key或Add API key,然后设置以下参数。
- Key name:API Key的名称,不可以和已有的名称重复。
- Role:设置为Viewer。
- Time to live:设置有效时间,例如60s(60秒)、10m(10分钟)、1d(1天)。
- 单击Add,在弹出的对话框中获取并保存API Key的值。重要 对话框关闭后将无法再次查看API Key的值。
步骤三:生成分享链接
- 在Grafana页面,进入需要分享的大盘页面。
- 单击
图标,在Link页签获取大盘分享链接。
- 在链接最后添加
&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******
- 使用带有API Key的分享链接即可免登录访问Grafana大盘。说明 免登录访问Grafana大盘后如需登录Grafana,单击页面左下角的Sign In即可登录。
常见问题
- 通过共享连接访问大盘时页面报错如下:
可能原因:内嵌大盘情况下,allow_embedding参数未设置。配置allow_embedding参数的操作,请参见上文步骤一。
- 无法显示大盘数据。内嵌大盘情况下,Cookie无法写入导致,可能原因如下:
- 跨域,即根域名不同时,默认配置无法写入Cookie。
- cookie_samesit参数设置为none,但是cookie_secure参数设置为false。
- 域名为HTTP。由于cookie_secure参数无法在HTTP下生效,因此域名不支持HTTP。
解决方案:参考上文步骤一重新配置Grafana参数。
- 通过共享连接访问大盘时页面报错如下:可能原因:
- 浏览器版本过低。
- 内嵌大盘的情况下浏览器配置导致。解决方案:
- 查看Cookie使用的配置,允许使用Cookie。
- 若使用Chrome浏览器,在无痕模式下需要配置允许有所Cookie。
- 如果用于大盘内嵌,APIKey建议是设置较短的有效时间使用一次就更换,还是配置一个很长时间的免登Key?
您可以根据安全需要做配置,建议3个月换一次,若Key泄露可以通过删除让Key失效。
- APIKey是否有数量上限?
Key的创建官方源码里并没有做限制,由于页面查询时最多展示100条,建议不要超过100个。
- APIKey配置的有效时间到期了,这个APIKey会自动删除吗?Key失效后,数据仍然存在,如果担心占用数量您可以手动删除Key。Grafana页面上失效的Key默认不展示,您可以单击Include expired keys显示已失效Key,然后删除。