了解 Prometheus JVM 指标

Understanding Prometheus JVM metrics

提问人:Ashwin 提问时间:11/14/2023 更新时间:11/14/2023 访问量:47

问:

我有兴趣跟踪 JVM 中的两个指标 - 每分钟的 GC 数量和每分钟的 GC 花费的时间。我有指标,并且可以在仪表板上使用,但我对它们的含义有点困惑。

第一个指标似乎与测量时间有关,但仔细阅读它,我相信它是从时间开始(应用程序启动时)调用 GC 的次数。
jvm_gc_collection_seconds.countjvm_gc_collection_seconds.sumjvm_gc_collection_seconds.count

  1. 这是对的吗?
  2. 如果是这样,为什么指标名称中有“秒”一词?
  3. 会给我每分钟的 GC 调用次数吗?jvm_gc_collection_seconds.count/1 minute

我认为的第二个指标是从时间开始执行 GC 活动所花费的总时间(以秒为单位)。jvm_gc_collection_seconds.sum

  1. 是吗?
  2. 会给我在 1 分钟的时间窗口内进行 GC 活动所花费的时间(以秒为单位)吗?jvm_gc_collection_seconds.sum/1 minute
JVM Prometheus 指标 JMX Datadog

评论

0赞 star67 11/14/2023
你能检查你的端点并搜索吗?除了 和 应该有一个带有标签的指标/metricsjvm_gc_collection_seconds_sum_countquantile
0赞 Ashwin 11/14/2023
@star67不,Datadog 上没有显示分位数。我自己还没有显式查询/metrics端点。但是由于 datadog 配置为这样做,我假设如果有一个 (?

答:

1赞 markalex 11/14/2023 #1

jvm_gc_collection_seconds是一个汇总指标

基本指标名称为 的摘要在抓取期间公开多个时间序列:<basename>

  • 观察事件的流式φ分位数 (0 ≤ φ ≤ 1),公开为<basename>{quantile="<φ>"}
  • 所有观测值的总和,显示为<basename>_sum
  • 已观察到的事件计数,公开为<basename>_count

因此,自应用程序启动以来发生的 GC 事件的总值数。以及 - 所有这些事件所花费的总秒数。jvm_gc_collection_seconds_countjvm_gc_collection_seconds_sum

要获取每分钟的 GC 调用次数,可以使用 .同样,对于花费的时间: .increase(jvm_gc_collection_seconds_count [1m])increase(jvm_gc_collection_seconds_sum [1m])


此外,您可能会在 Brian Brazil 的这篇文章中找到一些关于垃圾回收的 JVM 指标的有用提示。

评论

0赞 Ashwin 11/14/2023
“因此jvm_gc_collection_seconds_count自应用程序启动以来发生的 GC 事件的总值数。jvm_gc_collection_seconds_count - 所有这些事件所花费的总秒数。 - 你是说其他指标吗?您用“jvm_gc_collection_seconds_count”来描述这两种情况。
0赞 markalex 11/14/2023
@Ashwin,哎呀,对不起,复制粘贴错误。
0赞 Ashwin 11/15/2023
明白了。“increase(jvm_gc_collection_seconds_count [1m])” 这是否意味着相隔 1 分钟的指标的两个值之间的差值?
0赞 markalex 11/15/2023
@Ashwin,是的(自动处理 conter 复位)。但这是一个 promql 查询,我现在才注意到您正在使用 datadog。我不熟悉它,所以不知道如何用它的语言写它。