请问 Grafana 是如何同时运行很多 query 的?

2020-08-20 01:15:55 +08:00
 levelworm

因为我只用 grafana,但是并不给他写查询,所以我对他的原理完全不懂。

大体上来说,我们直接针对数据库(vertica)写查询,然后把查询发给 grafana team,然后他们把 vertica 查询转换成 grafana 的格式,最后给我们展示监控图表。

比方说我需要查看毛利,需要刷新时间设定为每五分钟:

SELECT SUM(GrossRevenue) FROM Fact_Revenue WHERE GrossRevenue > 0;

然后 Grafana 就能每五分钟刷新图表。

但是我一直有一个疑问,就是我们其实用 grafana 做很多展示,可能同时有二三十个查询需要每五分钟运行一次,那是如何保证没有把数据仓库搞跨掉?不好意思我也不知道我问的这个问题是否问得恰当。

我现在想要自己练手用 Python 写个类似的系统,实现如下的简单功能:也就是说用户可以在 UI 中输入他想要聚合的列、需要刷新的频率,然后我就每 X 分钟更新一次图表。问题是我如何解决以下问题:

不知道诸位朋友有没有写过类似的简单系统?

916 次点击
所在节点    程序员
7 条回复
ToBeHacker
2020-08-20 03:35:30 +08:00
定时任务提前跑完写缓存,部分任务可以用增量替代全量
kidlj
2020-08-20 07:43:25 +08:00
Prometheus 是时序数据库。
thet
2020-08-20 08:35:50 +08:00
grafana 就是个展示的,后面一般是搭配 prometheus,你需要写个 exporter 让 prometheus 抓取数据
junbaor
2020-08-20 08:54:39 +08:00
可以写程序定时跑一下 sql 再把结果存到数据库,grafana 也可以连接 mysql , 非常的灵活。
levelworm
2020-08-20 09:02:14 +08:00
@junbaor 多谢,假如我有多个查询需要每五分钟都跑一次,且每个查询每次运行时间都不定,有可能超过五分钟,有啥好办法不?我现在只会在 Python 里头轮流执行这些查询,就是一个循环,最笨的办法,但是没法保证定时了。
junbaor
2020-08-20 09:07:20 +08:00
@levelworm #5 如果打算走这条路的话,可以了解一下 Python 多线程
levelworm
2020-08-20 10:43:08 +08:00
@junbaor 多谢多谢,我去看看文档~~然后跑程序存数据库里头

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/699775

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX