首页 > 其他分享 >用iframe把Grafana Dashboard嵌入第三方系统

用iframe把Grafana Dashboard嵌入第三方系统

时间:2023-09-18 10:34:07浏览次数:43  
标签:iframe auth grafana token Dashboard https Grafana true

用Grafana可以很容易地创建Dashboard,并且后期修改和更新很方便,由于它的易用性和灵活性很适合用来做系统和生产的监控。但是Grafana的UI设计似乎对普通用户不是很友好,如果让用户直接登录Grafana去搜索浏览Dashboad不是很合适。由此自然就产生了把Grafana嵌入第三方系统的需求。

重要提示

  • Grafana版本要用9.1.0之后的版本

auth_token在Grafana 9.1.0之后才开始支持:https://github.com/grafana/grafana/issues/63254

  • 必须启动的配置
[security]
allow_embedding = true

[auth.anonymous]
enabled = true

 

  • 调试过程中一定要记得把dashbaord的View权限去掉,不然可能会导致误你以为用的是token访问,但其实可能是匿名访问的。

如果auth_token登录成功的话,可以在界面上看到实际上登录的用户就是你token payload 里面sub指定的用户。另外如果指定的用户不存在,启用了auto_sign_up会自动创用户。

 

创建token

  • 生成jwk,这里选择HS256加密算法。

得到jwk:



{
  "kty": "oct",
  "kid": "23f238f0-8d83-4c56-9a44-b7426011544d",
  "k": "hLc8OyEl2D8xtftERMtv3zMbg0GkZr3LMLuhGGerans",
  "alg": "HS256"
}

 
  •  把jwk放到keys里面保存成jwks.json文件,放到Grafana安装的配置目录下(conf/jwks.json)。


{
  "keys": [
    {
      "kty": "oct",
      "kid": "23f238f0-8d83-4c56-9a44-b7426011544d",
      "k": "hLc8OyEl2D8xtftERMtv3zMbg0GkZr3LMLuhGGerans",
      "alg": "HS256"
    }
  ]
}

 
  • 生成token

token加密解密站点:https://jwt.io/

  1. 把jwk的kid填到HEADER里面。
  2. PAYLOAD里面的sub填上要登录的用户名。
  3. 注意一下token的过期时间,exp里面的数值是timestamp。
  4. iss的值参考Grafana配置上的这句“expect_claims = {"iss": "https://jwt.io/"}”配置,如果没有配置的话可以不设iss。
  5. 把jwk的k的值填到VERIFY SIGNATURE的secrect中,并勾选“secret base64 encoded”选项。

完成上面步骤之后就得到了左边Encoded里面的这串字符串就是编码之后的token。

 Grafana配置

允许嵌入到iframe:

[security]
allow_embedding = true

允许匿名访问:

[auth.anonymous]
enabled = true

启用jwt认证:

[auth.jwt]
enabled = true
enable_login_token = true
#设置通过http header登录的名字 header_name = X-JWT-Assertion
#设置角色名字,如有需要 role_attribute_path = role #设置jwk文件的路径 jwk_set_file =conf/jwks.json cache_ttl = 60m
#安全特性,设置是否需要token带预期的声明。 expect_claims = {"iss": "https://jwt.io/"} role_attribute_strict = false allow_assign_grafana_admin = false skip_org_role_sync = true username_claim = sub email_claim = email
#设置是否自动注册新用户,启用的话,如果sub指定的用户不存在,则Grafana会自动注册。 auto_sign_up = true
#启用url登录,也就是我们在url设置auth_token参数可以自动登录 url_login = true

重新启动一下Grafana,如果启动不成功,请检查一下jwk_set_file设置的路径是否正确。

 

完成以上配置之后,可以尝试一下token登录。

 http://localhost:3000/d/ddfd01d0-d493-4672-9a0b-51ccb7d03229/new-dashboard?orgId=1&auth_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjIzZjIzOGYwLThkODMtNGM1Ni05YTQ0LWI3NDI2MDExNTQ0ZCJ9.eyJzdWIiOiJhZG1pbiIsIm5hbWUiOiJBZG1pbiIsImV4cCI6NDg1MDYzMzAzNSwiaWF0IjoxNTE2MjM5MDIyLCJpc3MiOiJodHRwczovL2p3dC5pby8ifQ.xq3yaRuGbbGxBSGDpFf7W9LmKZpWRdsttpWnJAhdq6s

参考

转载请注明出处: https://www.cnblogs.com/keitsi/p/17705220.html

标签:iframe,auth,grafana,token,Dashboard,https,Grafana,true
From: https://www.cnblogs.com/keitsi/p/17705220.html

相关文章

  • 11 iframe内联框架
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>iframe内联框架</title></head><body><iframesrc="//player.bilibili.com/player.html?aid=55631961......
  • js操作iframe
    父页面<iframename="iframe1"></iframe><iframename="iframe2"></iframe><scripttype="text/javascript">functionp_mothd1(){alert('p_mothd1');}</script>子页面iframe1页面functioni......
  • 如何避免HTML iframe导致页面刷新
    要避免HTMLiframe导致页面刷新,您可以采取以下几种方法:使用AJAX加载内容:使用JavaScript的AJAX技术来异步加载iframe中的内容,这样就可以避免整个页面的刷新。您可以使用XMLHttpRequest或者jQuery的$.ajax方法来实现异步加载。设置iframe的sandbox属性:将iframe的sandbox属性设置为"al......
  • k8s安装Dashboard出现了 pod 状态为CrashLoopBackOff
    1、问题现象2、解决办法(1)先看一下pods日志信息kubectllogs-f-nkubernetes-dashboardkubernetes-dashboard-658485d5c7-h75rs(2)错误信息:Get"https://10.96.0.1:443/api/v1/namespaces/kubernetes-dashboard/secrets/kubernetes-dashboard-csrf":dialtcp10.9......
  • docker部署 grafana Loki 轻量级日志
    这是一篇关于讲解如何正确使用51CTO博客-Markdown的排版示例,希望通过此,大家都能轻松上手,都能通过Markdown能够让自己的文章有更加出色、更清晰明了的排版。什么是MarkdownMarkdown(MD)是现在普遍使用的一种文档书写语言格式,只需用一些非常简单易记的符号,如(#*/>[]()\),......
  • Ceph Enable Dashboard
    本次演示环境配置如下:hostnameIProlesnode01.srv.world192.168.10.101ObjectStorage;MonitorDaemon;ManagerDaemonnode02.srv.world192.168.10.102ObjectStoragenode03.srv.world192.168.10.103ObjectStoragedlp.srv.world192.168.10.142clientwww.srv.world192.168.10.140RAD......
  • Grafana+Telegraf+Influxdb监控Tomcat集群方案
    Grafanadockerpullgrafana/grafanamkdir-p/var/data/docker/grafanadocker inspect docker.io/grafana/grafanadockercpgrafana:/var/lib/grafana//var/data/docker/grafanaID=$(id-u)dockerrun-d--user$ID--name=grafana-v/var/data/docker/grafana:/va......
  • vue 嵌套全屏iframe 能有效避开返回两次才能返回上一个路由的问题
    <template> <divclass="home">  <iframeref="iframe"class="iframe"frameborder="no"></iframe> </div></template><script>import{ get_doctor_info, statistics, ......
  • js iframe 打印 打印预览 页眉页脚的设立
    jsiframe打印打印预览页眉页脚的设置1、window.print方式://jsp页面打印按钮:<inputtype="button"value="打印"οnclick="print();">//js中:functionprint(){window.print();//style样式中,设置隐藏按钮打印:<style>@mediaprint{.noprint{display:no......
  • Kubernetes Dashboard 认证时间延长
    近日,有同事反馈登录KubernetesDashboard竟然容易失效,需要再次认证。希望我们可以设置更长的时间。首先我们查询资料得知默认的Token失效时间是900秒,也就是15分钟,这意味着你每隔15分钟就要认证一次。//Expirationtime(inseconds)oftokensgeneratedbydashboard.Defaul......