[
https://issues.apache.org/jira/browse/ZOOKEEPER-4818?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrew Kyle Purtell updated ZOOKEEPER-4818:
---
Description:
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.
There is some precedent for exporting JVM metrics in ServerMetrics from
ZOOKEEPER-3845 .
was:
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.
> 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
>Priority: Minor
>
> 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