初衷

最近想用Grafana来做低代码可视化平台,我采用的是Postgresql数据库,按照教程快速配置好一个Time series 面板后,我很高兴,以为终于可以解放双手了,殊不知是噩梦的开端,这里记录下一些踩坑记录

基础环境

Docker 部署 + Postgresql (最初配置)
.net 9 API (2026-01-05+)

2026-01-05日 记

grafana.ini 配置

位置:/etc/grafana/grafana.ini

why:为了快速测试生成的面板能否融入个人的页面中,开启匿名访问功能,生产环境建议还是使用授权模式

# 允许匿名访问
[auth.anonymous]
enabled = true
org_name = Main Org.
org_role = Viewer

why: 我们的需求需要面板能够频繁刷新,至少需要1s一次,而默认的最低刷新频率为5s,因此调整最低刷新频率为1s

# 调整默认刷新频率
[dashboards]
min_refresh_interval = 1s

SQL 暴漏问题(坑1)

面板嵌入网页后,我习惯性的打开了F12,看下数据交互逻辑,然后就发现两点:
- 面板采用js进行的定时刷新,不是主动推送的数据,因此会受网络、浏览器策略等影响实际的刷新效果
- query中,竟然携带有完整的sql语句,数据库类型等极端敏感信息,really??!

就SQL暴漏问题,解决方案也相当简单:数据源用API就好,可以使用官方的infinity插件提供的能力,但是收费,不过目前我还在测试阶段,提供的免费额度就足够了,反正后边真用了又不用我掏钱,我只管这个插件好不好用就行。目前来看对比JSON、JSON Fetcher等插件,确实要好用不少,可以直接使用我现有的API,不用在给单独开发一个

2026-01-07 日修正
当直接分享整个仪表板时,是没有SQL暴漏问题的,如下:
在这里插入图片描述
而直接分享面板时,是有该问题的:
在这里插入图片描述

分享出去的面板,右上角会有个探索(Explore)按钮(坑2)

我不确定如果是授权模式会不会有这个,至少匿名模式是有的
在这里插入图片描述

这个坑巨大无比,因为你点击后能够调试sql或者API,认真的吗这是???
在这里插入图片描述

网上会有一些文章,说你给后缀加上kiosk=true就没有这个按钮了,有的说你给ini中,配置viewers_can_edit = false就好了,更有的说,改代码吧,用黑色theme的做效果,白色theme的改代码后去除按钮,做展示,呵呵哒,我信你个鬼

最终睡了一晚上之后(实际上一晚上没睡好),在ini文件中找到了答案:

# 全局关闭探索按钮
[explore]
enabled = false

不过这个效果也不好,这三个点还在,但至少没有探索按钮了
在这里插入图片描述

2026-01-06日 记

饼图pie chart问题(坑1)

数据如下:

label value
test1 100
test2 100

你们期望的饼图长什么样?至少echarts告诉我他应该长这样:
在这里插入图片描述

然后Grafana给的长这样:
在这里插入图片描述

看到什么问题了没,grafana的test1和test2的颜色竟然是一样的,然后给数据调整如下(注意test2):

label value
test1 100
test2 101

嗯,他又正常了
在这里插入图片描述
我本来以为是我的配置有问题,就找了官网的演示页面,将数据修改为test1=test2=100,然后官网的演示也是test1和test2一个色儿

然后我同事告诉我,“饼图中相同比例的饼颜色就应该是一样的”,颜色是一样的,认真的吗?
请回答我几个问题:

1. 图例是干什么用的?图例上为什么是label + 不同的颜色,而不是 % + 不同的颜色?
3. 饼的扇形面是做什么用的?为什么不同比例的数据对应的扇形面角度是不一样的?
4. 如果扇形面角度用来表示比例,然后颜色也用来表示比例,那你这饼图的信息熵是不是不对啊?

Look in my eyes,回答我!

我找了一上午没有找到解决方案,最后不甘心又回去翻官方文档,里边确实提供了
在这里插入图片描述
以及
在这里插入图片描述
两种饼图使用方案。然后我午睡过后突然想到,官方示例和我习惯给echarts用的数据,都是多行数据模式的,那我如果做个行转列,使用文档中提到的单行多列数据会怎样?
于是数据变为了:

test1 test2
100 100

然后
在这里插入图片描述
来来来,大声的再跟我说一遍:“饼图中相同比例的饼颜色就应该是一样的”,呵呵~~~

当然我不可能因为这个再去改我的API,又不是只有Grafana在用我的接口,所以可以增加一个行列转换,
在这里插入图片描述
在这里插入图片描述

那么当数据源还是多行模式时,Grafana会自动行列转换,并实际按照单行多列渲染,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2026-01-07日 记

分享仪表板和分享面板

  • 分享仪表板
    • 优点1:不会暴漏SQL、API等信息,因此确实可以如我同事所说直连数据库,减少API服务压力(抱歉我的同事,是我错怪你了,如果领导愿意接受缺点的话,嗯
    • 优点2:仪表板内的面板右上角没有烦人的探索按钮等
    • 优点3:待补充…
    • 缺点1:仪表板内的面板不能单独控制刷新频率,统一由仪表板控制
    • 缺点2:仪表板左上角和右下角会有Grafana的Logo和连接,据查似乎企业版可以定制,我目前使用的是个人版,ini中的[white_labeling]似乎并不起作用。
    • 缺点3:待补充…
  • 分享面板
    • 优点1: 可定制性高,刷新频率、位置、大小等都可以调整
    • 优点2:待补充…
    • 缺点1:会有暴漏SQL等风险
    • 缺点2:右上角有烦人的探索按钮,目前还是只能去除按钮,不能隐藏那三个黑点点
    • 缺点3:待补充…

Good morning, and in case I don’t see you, good afternoon, good evening, and good night!

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐