V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
levelworm
V2EX  ›  程序员

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

  •  
  •   levelworm · 2020-08-20 01:15:55 +08:00 · 903 次点击
    这是一个创建于 1547 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

    • 确保在有多个查询的情况下能够按时更新
    • 如何尽量少读数据?(这个问题我初步的想法是,比如说 2020-08-20 00:00:00 创建的查询,需要每五分钟运行一次,那我可以记录上一次开始运行的时间,加个 WHERE EventTime BETWEEN {LastRun} AND {LastRun + 300},总之就是做累加查询。但是我觉得我的想法似乎也不成熟。。。

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

    7 条回复    2020-08-20 10:43:08 +08:00
    ToBeHacker
        1
    ToBeHacker  
       2020-08-20 03:35:30 +08:00 via Android   ❤️ 1
    定时任务提前跑完写缓存,部分任务可以用增量替代全量
    kidlj
        2
    kidlj  
       2020-08-20 07:43:25 +08:00 via iPhone   ❤️ 1
    Prometheus 是时序数据库。
    thet
        3
    thet  
       2020-08-20 08:35:50 +08:00 via iPhone   ❤️ 1
    grafana 就是个展示的,后面一般是搭配 prometheus,你需要写个 exporter 让 prometheus 抓取数据
    junbaor
        4
    junbaor  
       2020-08-20 08:54:39 +08:00   ❤️ 1
    可以写程序定时跑一下 sql 再把结果存到数据库,grafana 也可以连接 mysql , 非常的灵活。
    levelworm
        5
    levelworm  
    OP
       2020-08-20 09:02:14 +08:00 via Android
    @junbaor 多谢,假如我有多个查询需要每五分钟都跑一次,且每个查询每次运行时间都不定,有可能超过五分钟,有啥好办法不?我现在只会在 Python 里头轮流执行这些查询,就是一个循环,最笨的办法,但是没法保证定时了。
    junbaor
        6
    junbaor  
       2020-08-20 09:07:20 +08:00   ❤️ 1
    @levelworm #5 如果打算走这条路的话,可以了解一下 Python 多线程
    levelworm
        7
    levelworm  
    OP
       2020-08-20 10:43:08 +08:00
    @junbaor 多谢多谢,我去看看文档~~然后跑程序存数据库里头
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5601 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:34 · PVG 11:34 · LAX 19:34 · JFK 22:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.