如何使用 SpringBoot 2、InfluxDB 和 Grafana 理解微米指标?
Posted
技术标签:
【中文标题】如何使用 SpringBoot 2、InfluxDB 和 Grafana 理解微米指标?【英文标题】:How to make sense of the micrometer metrics using SpringBoot 2, InfluxDB and Grafana? 【发布时间】:2021-09-17 04:40:33 【问题描述】:我正在尝试配置 SpringBoot 应用程序以将指标导出到 InfluxDB 以使用 Grafana 仪表板将它们可视化。我以this 仪表板为例,它使用 Prometheus 作为后端。 对于某些指标,我可以毫无问题地弄清楚如何为它们创建图表,但对于其他一些指标,我不知道如何创建图表,甚至根本不知道如何创建图表。所以我列举了以下几点我不太确定的事情:
是否有任何文档描述了价值单位?我作为示例使用的应用程序没有任何负载,所以有时我不知道该值是位、字节、秒、毫秒、计数等。
一些测量包含标签“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】:我同意千分尺的文档不是很好。我不得不挖掘代码以找到答案......
关于您对jvm_gc_pause的问题,它是Timer,实现是AbstractTimer
,这是一个包含Histogram
和其他组件的类。此特定指标由JvmGcMetrics
类注册。发布到 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 面板上绘制图表:一个面板用于 GC 暂停秒使用 sum
(或 mean
或 upper
),另一个面板用于 GC 事件使用 @ 987654334@.
【讨论】:
以上是关于如何使用 SpringBoot 2、InfluxDB 和 Grafana 理解微米指标?的主要内容,如果未能解决你的问题,请参考以下文章