【问题标题】:Grafana, ElasticSearch - Graph of calculated elapsed time between two flow tasksGrafana,ElasticSearch - 计算两个流任务之间经过的时间图
【发布时间】:2021-06-15 15:30:30
【问题描述】:

我是 Grafana 和 ElasticSearch 的新手。 我们在 ES 中有数据,其中包含具有多个微服务的处理流的日志记录。这些微服务有几种类型。 为简单起见,我们假设有两种类型的微服务“task1”和“task2”,每个处理流都有一个唯一的 traceId 值。 数据如下:

{traceId: 'job1', service: 'task1', eventTime: '2021-02-19 12:01:00'}
{traceId: 'job2', service: 'task1', eventTime: '2021-02-19 12:02:00'}
{traceId: 'job1', service: 'task2', eventTime: '2021-02-19 12:05:00'}
{traceId: 'job2', service: 'task2', eventTime: '2021-02-19 12:10:00'}

我想在我们的仪表板中添加一个 grafana 面板,该面板将包含每个处理流程(“job1”、“job2”...)的经过时间(“task1”和“task2”之间的时间差)。 我搜索了类似的问题并在how to create query which can calculate time difference? 中找到了讨论,但我不确定那里描述的解决方案是否适合我的问题,并且我找不到添加那里描述的聚合过滤器的方法。我想这远远超出了我目前的知识。 任何帮助将不胜感激

【问题讨论】:

    标签: elasticsearch grafana


    【解决方案1】:

    我收到了一些离线提示,以下看起来是一个不错的方法(但绝对不是直截了当的恕我直言):

    在查询选项卡和转换选项卡中使用原始数据,选择“分组依据”翻译,然后在所需字段上使用“分组依据”翻译(上例中的“traceId”)和“计算”翻译以“Range”作为统计字段的时间字段(上例中的“eventTime”)。这将按 traceId 字段对数据进行分组,并在表格中显示具有相同 traceId 的记录的较高值和较低值之间的差异(范围)。

    我会尝试“玩”它,看看我是否能得到想要的图表——它可能会帮助其他有相同或类似问题的人,所以我发布这个至少作为解决这个问题的方向。

    【讨论】:

      【解决方案2】:

      我最近尝试的另一种方法是将bucket scriptGroup By 选项结合使用。 比如:

      metric(1) - Min eventTime
      metric(2) - Max eventTime
      metric(3) - Bucket Script with the following options:
                            var1 Min eventTime
                            var2 Max eventTime
                      Script:  params.var2 - params.var1
      Group By:     traceId 
      and then by:  service
      

      然后我使用转换 Organized fields 删除 Min 和 MaX 字段并将“Bucket Script”重命名为“Time Difference”之类的名称

      【讨论】:

        猜你喜欢
        • 2013-12-06
        • 1970-01-01
        • 1970-01-01
        • 2012-04-10
        • 1970-01-01
        • 1970-01-01
        • 2016-09-26
        • 2012-12-01
        • 2021-06-07
        相关资源
        最近更新 更多