You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Andrew Kyle Purtell (Jira)" <ji...@apache.org> on 2024/03/25 19:37:00 UTC

[jira] [Created] (ZOOKEEPER-4818) Export JVM heap metrics in ServerMetrics

Andrew Kyle Purtell created ZOOKEEPER-4818:
----------------------------------------------

             Summary: Export JVM heap metrics in ServerMetrics
                 Key: ZOOKEEPER-4818
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-4818
             Project: ZooKeeper
          Issue Type: Improvement
          Components: metric system
            Reporter: Andrew Kyle Purtell


A metric for JVM heap occupancy is not included in ServerMetrics.

According to [https://zookeeper.apache.org/doc/current/zookeeperMonitor.html] the recommended practice is for someone to enable the PrometheusMetricsProvider and the Prometheus base class upon which that provider is based does export that information. See [https://zookeeper.apache.org/doc/current/zookeeperMonitor.html] . The example provided for alerting on heap utilization there is:
{noformat}
  - alert: JvmMemoryFillingUp
    expr: jvm_memory_bytes_used / jvm_memory_bytes_max{area="heap"} > 0.8
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "JVM memory filling up (instance {{ $labels.instance }})"
      description: "JVM memory is filling up (> 80%)\n labels: {{ $labels }}  value = {{ $value }}\n"
{noformat}
where {{jvm_memory_bytes_used}} and {{jvm_memory_bytes_max}} are provided by a Prometheus base class.

Where PrometheusMetricsProvider is the right choice that's good enough but where the ServerMetrics information is consumed in an alternate way, by 4-letter-word scraping, or by JMX, ServerMetrics should provide the same information. {{jvm_memory_bytes_used}} and {{jvm_memory_bytes_max}} (presuming heap) are reasonable names. An alternative could be to calculate the heap occupancy and provide that as a percentage, either an integer in the range 0 - 100 or floating point value in the range 0.0 - 1.0. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)