当前位置: 首页 > 知识库问答 >
问题:

如何使用Springboot2、InflxDB和Grafana理解千分尺度量标准?

任小云
2023-03-14

我试图配置一个SpringBoot应用程序,将度量导出到InfluxDB,以便使用Grafana仪表板可视化它们。我使用这个仪表板作为一个例子,它使用普罗米修斯作为后端。对于一些度量,我不知道如何为它们创建图,但对于其他一些度量,我不知道如何创建图,甚至不知道是否可能。所以我在以下几点中列举了我不太确定的事情:

>

  • 是否有描述价值单位的文档?我作为示例使用的应用程序没有任何负载,所以有时我不知道值是位、字节、秒、毫秒、计数等。

    有些度量值包含标记'metric_type=histogram'以及字段'count'、'sum'、'mean'和'upper'。再说一遍,这里我不知道值单位是什么,上面的意思是什么,或者我应该如何绘制它们。这方面的例子有“http_server_requests”或“jvm_gc_pause”。

    从我在Grafana仪表板示例中看到的情况来看,我似乎应该使用这些直方图类型的度量值来创建包含计数的图和包含持续时间的图。例如,我看到我应该能够创建一个包含请求数量的图表,以及另一个包含请求持续时间的图表。或者对于垃圾收集器,我应该能够为次要和主要GC的数量提供一个图表,并为它们的持续时间提供另一个图表。

    作为插入influxDB的度量的一个示例:

    time                 count exception mean     method metric_type outcome status sum      upper    uri
    1625579637946000000  1     None      0.892144 GET    histogram   SUCCESS 200    0.892144 0.892144 /actuator/health
    
    time                action          cause                 count   mean  metric_type  sum upper
    1625581132316000000 end of minor    GC Allocation Failure     1      2  histogram    2   2
    
  • 共有1个答案

    荀俊迈
    2023-03-14

    我同意千分尺的文件不是很好。我不得不翻遍密码来寻找答案...

    关于jvm_gc_pause的问题,它是一个计时器,实现是AbstractTimer,这是一个在其他组件中包装直方图的类。这个特定的度量由JVMGCMetrics类注册。发布到InfluxDB的各种度量由inflxmeterregistry.writetimer(定时器定时器)方法确定:

    • sum:timer.totaltime(getBaseTimeUnit())//记录事件的总时间
    • count:timer.count()//在计时器上调用stop的次数
    • mean:timer.mean(getBaseTimeUnit())//totalTime()/count()
    • 上限:timer.max(getBaseTimeUnit())//单个事件的最大时间

    我相信您是正确的,明智的做法是在两个独立的Grafana面板上绘制图表:一个面板使用sum(或meanupper)表示GC暂停秒,另一个面板使用count表示GC事件。

     类似资料:
    • 我对Spring很陌生,正在尝试将我的应用程序连接到麋鹿。该应用程序运行的是Spring boot 1.5.5,因此我使用的是微米遗产。我的pom看起来像这样: 每当我尝试启动我的应用程序时,我都会收到以下错误: 根本原因似乎是类io.micrometer.core.instrument.config.validate.Validated它似乎没有像它应该的那样出现在包中。对此有什么想法吗?

    • 假设我有一个应用程序,其中REST API更新产品的价格。 我想使用微米计来公开新价格作为指标。我无法理解微米计留档应该如何完成。 唯一对我有效的DoubleFunction是在我的ProductService中创建一个新方法来返回它的价格。这似乎是我想公开作为指标的每一条数据的开销。 我这里缺少什么?为什么不足以更新Gauge?

    • 是否有任何方法可以测量实用程序如何使用线程池?我已经浏览了代码,但还没有看到任何直接的选项。

    • 这篇题为“测微计:Spring Boot 2的新应用程序度量收集器”的博客文章提到了“维度的重要性”。 但是,它没有包括如何在Spring Boot应用程序中设置关联标签的足够示例。 现在,我正在使用Spring Boot 2的千分尺接口来提供Prometheus就绪输出,而无需进行任何基于Java的配置。例如,设置“主机”标签是否需要我编写一些代码?那会是什么样子? 以下是我的整个配置:

    • 我对千分尺的理解仍然相当小,所以我将首先介绍我真正想要实现的目标。 目的 鉴于我在数据库表中有记录,每条记录都包含一个“creation_date”。 给定客户端调用 API 来获取这些记录 我想记录记录记录的访问次数,按其创建日期分组(仅月和年) 示例结果 在过去的6小时内,访问了2021年1月创建的10条记录 在过去的12小时内,访问了2021年2月创建的15条记录 在上周一和上周二之间,访问

    • 我有一个Spring Boot应用程序,我现在正在迁移到Micrometer。 我想实现的是,随着时间的推移计算特定对象的调用。 让我们假设我有一个创建某些品牌的汽车的功能。然后我想测量一下我在过去一分钟内创造了多少辆福特,斯柯达,大众等。特别是,如果在 之间没有创建斯柯达,则指标应返回 0。 文档声明我不应该使用计数器,因为在运行应用程序时,创建的汽车数量可能会无限增长。计时器也不太合适,因为我