大屏监控 Metabase 集成到 Java 项目架构真经关注共 2734字,需浏览 6分钟 ·2021-03-04 01:53 前言概述:Metabase可以帮助你把数据库中的数据更好的呈现给更多人,数据分析人员通过建立一个”查询“(Metabase中定义为Question)来提炼数据,再通过仪表盘(Dashboards)来组合展示给公司成员分享支持公开链接、公开嵌入、应用嵌入三种方式,前两种方式由于其公开性,只能分享一些见得人的数据,如果一些见不得人的数据就要通过第三种方式实现了。这玩意官方案例支持 Python、Node、Ruby、Clojure,但就是不支持 Java,撸主只要自己手撸了。集成参考 Node.js 的集成方式:// you will need to install via 'npm install jsonwebtoken' or in your package.jsonvar jwt = require("jsonwebtoken");var METABASE_SITE_URL = "http://127.0.0.1:3000";var METABASE_SECRET_KEY = "76e7feb6e9456f9f924a9f463d03cbcaedf72b4a68844fa88e5f05c6345d409d";var payload = { resource: { dashboard: 2 }, params: {}, exp: Math.round(Date.now() / 1000) + (10 * 60) // 10 minute expiration};var token = jwt.sign(payload, METABASE_SECRET_KEY);var iframeUrl = METABASE_SITE_URL + "/embed/dashboard/" + token + "#bordered=true&titled=true";其实就是根据秘钥生成一个 Token,然后拼接到访问链接,后台再对其进行验证,如果 Token 有效则认证通过。仿照撸一个Java版本:import com.alibaba.fastjson.JSONObject;import io.jsonwebtoken.Jwts;import io.jsonwebtoken.SignatureAlgorithm;import java.util.Base64;import java.util.Date;import java.util.Map;/** * 报表生成加密URL */public class JWTUtils { /** * 创建token */ public static String createJWT(Map<String, Object> payload, String secretKey){ try { String metaBaseEncodedSecretKey = Base64.getEncoder().encodeToString(secretKey.getBytes()); return Jwts.builder() .setHeaderParam("typ", "JWT") .setClaims(payload) .signWith(SignatureAlgorithm.HS256, metaBaseEncodedSecretKey) .setIssuedAt(new Date()) .compact(); }catch (Exception e){ e.printStackTrace(); } return null; } /** * 创建token */ public static String getTokenUrl(Integer dashboard,String secretKey){ int round = Math.round(System.currentTimeMillis() / 1000)+10*60; // 10 minute expiration JSONObject resource = new JSONObject(); resource.put("dashboard",dashboard); JSONObject payload = new JSONObject(); payload.put("resource",resource); payload.put("params",new JSONObject()); payload.put("exp",round); String token = JWTUtils.createJWT(payload,secretKey); return BI_SITE_URL + "/embed/dashboard/" + token + "#theme=night&bordered=false&titled=false"; } private static final String BI_SITE_URL = "http://127.0.0.1:3000"; public static void main(String[] args) { String secretKey = "******"; String url = getTokenUrl(2,secretKey); System.out.println(url); }}预览小结安全认证之后的地址就可以分享出去了,后台可以对链接失效时间以及用户数据权限做验证,这样数据就只能让那些见不得人的看了。 浏览 51点赞 评论 收藏 分享 手机扫一扫分享分享 举报 评论图片表情视频评价全部评论推荐 大屏监控 Metabase 集成到 Java 项目程序员的成长之路0大屏监控 Metabase 集成到 Java 项目程序员私房菜0Zabbix/J集成 Zabbix 到 Java 应用Zabbix/J 用于将 Zabbix 监控系统集成到 Java 应用程序中。 zabbix是一个基Zabbix/J集成 Zabbix 到 Java 应用Zabbix/J用于将Zabbix监控系统集成到Java应用程序中。zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务JuiceFS 集成Grafana性能监控Ceph对象存储方案0GrailsMelody集成JavaMelody系统监控前一阵子找监控Java应用类库的时候看到了JavaMelody这个方便的东西,就产生了集成到Grails里的想法。经过三个星期零零散散地开发,0.1版发布了。主要做了以下几件事情:在spring环境里GrailsMelody集成JavaMelody系统监控前一阵子找监控Java应用类库的时候看到了JavaMelody这个方便的东西,就产生了集成到Grai在Java中集成LangChain使用大模型软测小生0分享一个支付大屏实时监控数据平台全栈开发者社区0java项目打成jar包,部署到宝塔运行愿天堂没有BUG0点赞 评论 收藏 分享 手机扫一扫分享分享 举报