如何使用 SpringBoot 2、InfluxDB 和 Grafana 理解千分尺指标?

How to make sense of the micrometer metrics using SpringBoot 2, InfluxDB and Grafana?

我正在尝试配置一个 SpringBoot 应用程序以将指标导出到 InfluxDB,以便使用 Grafana 仪表板将它们可视化。我以 this 仪表板为例,它使用普罗米修斯作为后端。 对于某些指标,我很容易弄清楚如何为它们创建图表,但对于其他一些指标,我不知道如何创建图表,甚至不知道如何创建图表。所以我列举了以下几点我不太确定的事情:

作为我插入 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

我同意千分尺的文档不是很好。我必须深入研究代码才能找到答案...

关于您关于 jvm_gc_pause 的问题,它是一个 Timer 并且实现是 AbstractTimer,这是一个 class在其他组件中包装 Histogram 。此特定指标由 JvmGcMetrics class 注册。发布到 InfluxDB 的各种测量值由 InfluxMeterRegistry.writeTimer(Timer timer) 方法确定:

  • 总和:timer.totalTime(getBaseTimeUnit()) // The total time of recorded events
  • 计数:timer.count() // The number of times stop has been called on the timer
  • 意思是:timer.mean(getBaseTimeUnit()) // totalTime()/count()
  • 上层:timer.max(getBaseTimeUnit()) // The max time of a single event

基本时间单位是毫秒。

同样,http_server_requests 似乎也是 Timer

我相信你是正确的,明智的做法是在两个单独的 Grafana 面板上绘制图表:一个面板用于使用 sum(或 meanupper)的 GC 暂停秒数,和一个使用 count.

的 GC 事件面板