This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 1c61b548ac NIFI-15555  Added non-heap used tracking to Prometheus 
Metrics (#10858)
1c61b548ac is described below

commit 1c61b548acee16ef5bfa53781807531a222033f8
Author: Pierre Villard <[email protected]>
AuthorDate: Thu Feb 5 22:34:41 2026 +0100

    NIFI-15555  Added non-heap used tracking to Prometheus Metrics (#10858)
    
    Signed-off-by: David Handermann <[email protected]>
---
 .../org/apache/nifi/metrics/jvm/JmxJvmMetrics.java     | 12 ++++++++++++
 .../java/org/apache/nifi/metrics/jvm/JvmMetrics.java   | 18 ++++++++++++++++++
 .../apache/nifi/prometheusutil/JvmMetricsRegistry.java | 18 ++++++++++++++++++
 .../nifi/prometheusutil/PrometheusMetricsUtil.java     |  3 +++
 4 files changed, 51 insertions(+)

diff --git 
a/nifi-commons/nifi-metrics/src/main/java/org/apache/nifi/metrics/jvm/JmxJvmMetrics.java
 
b/nifi-commons/nifi-metrics/src/main/java/org/apache/nifi/metrics/jvm/JmxJvmMetrics.java
index cb9e727d24..fe939e7c00 100644
--- 
a/nifi-commons/nifi-metrics/src/main/java/org/apache/nifi/metrics/jvm/JmxJvmMetrics.java
+++ 
b/nifi-commons/nifi-metrics/src/main/java/org/apache/nifi/metrics/jvm/JmxJvmMetrics.java
@@ -54,6 +54,8 @@ public class JmxJvmMetrics implements JvmMetrics {
     static final String MEMORY_HEAP_MAX = REGISTRY_METRICSET_MEMORY + 
".heap.max";
     static final String MEMORY_HEAP_COMMITTED = REGISTRY_METRICSET_MEMORY + 
".heap.committed";
     static final String MEMORY_HEAP_USAGE = REGISTRY_METRICSET_MEMORY + 
".heap.usage";
+    static final String MEMORY_NON_HEAP_USED = REGISTRY_METRICSET_MEMORY + 
".non-heap.used";
+    static final String MEMORY_NON_HEAP_COMMITTED = REGISTRY_METRICSET_MEMORY 
+ ".non-heap.committed";
     static final String MEMORY_NON_HEAP_USAGE = REGISTRY_METRICSET_MEMORY + 
".non-heap.usage";
     static final String THREADS_COUNT = REGISTRY_METRICSET_THREADS + ".count";
     static final String THREADS_DAEMON_COUNT = REGISTRY_METRICSET_THREADS + 
".daemon.count";
@@ -149,6 +151,16 @@ public class JmxJvmMetrics implements JvmMetrics {
         return usage < 0 ? -1.0 : usage;
     }
 
+    @Override
+    public double nonHeapUsed(DataUnit dataUnit) {
+        return (dataUnit == null ? DataUnit.B : dataUnit).convert((Long) 
getMetric(MEMORY_NON_HEAP_USED), DataUnit.B);
+    }
+
+    @Override
+    public double nonHeapCommitted(DataUnit dataUnit) {
+        return (dataUnit == null ? DataUnit.B : dataUnit).convert((Long) 
getMetric(MEMORY_NON_HEAP_COMMITTED), DataUnit.B);
+    }
+
     @Override
     public Map<String, Double> memoryPoolUsage() {
         Set<String> poolNames = getMetricNames(MEMORY_POOLS);
diff --git 
a/nifi-commons/nifi-metrics/src/main/java/org/apache/nifi/metrics/jvm/JvmMetrics.java
 
b/nifi-commons/nifi-metrics/src/main/java/org/apache/nifi/metrics/jvm/JvmMetrics.java
index 4e6177b49a..ee2acd54db 100644
--- 
a/nifi-commons/nifi-metrics/src/main/java/org/apache/nifi/metrics/jvm/JvmMetrics.java
+++ 
b/nifi-commons/nifi-metrics/src/main/java/org/apache/nifi/metrics/jvm/JvmMetrics.java
@@ -115,6 +115,24 @@ public interface JvmMetrics {
      */
     double nonHeapUsage();
 
+    /**
+     * Returns the non-heap memory currently used by the current JVM.
+     *
+     * @param dataUnit The {@link DataUnit} to which the metric will be 
converted
+     *
+     * @return Non-heap memory currently used by JVM in the given {@link 
DataUnit}
+     */
+    double nonHeapUsed(DataUnit dataUnit);
+
+    /**
+     * Returns the non-heap memory committed to the JVM.
+     *
+     * @param dataUnit The {@link DataUnit} to which the metric will be 
converted
+     *
+     * @return Non-heap memory currently committed to the JVM in the given 
{@link DataUnit}
+     */
+    double nonHeapCommitted(DataUnit dataUnit);
+
     /**
      * Returns a map of memory pool names to the percentage of that pool which 
is being used.
      *
diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/prometheusutil/JvmMetricsRegistry.java
 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/prometheusutil/JvmMetricsRegistry.java
index 352f500900..44003b66af 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/prometheusutil/JvmMetricsRegistry.java
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/prometheusutil/JvmMetricsRegistry.java
@@ -37,12 +37,30 @@ public class JvmMetricsRegistry extends 
AbstractMetricsRegistry {
                 .labelNames("instance")
                 .register(registry));
 
+        nameToGaugeMap.put("JVM_HEAP_COMMITTED", Gauge.build()
+                .name("nifi_jvm_heap_committed")
+                .help("NiFi JVM heap memory committed in bytes")
+                .labelNames("instance")
+                .register(registry));
+
         nameToGaugeMap.put("JVM_HEAP_NON_USAGE", Gauge.build()
                 .name("nifi_jvm_heap_non_usage")
                 .help("NiFi JVM heap non usage")
                 .labelNames("instance")
                 .register(registry));
 
+        nameToGaugeMap.put("JVM_NON_HEAP_USED", Gauge.build()
+                .name("nifi_jvm_non_heap_used")
+                .help("NiFi JVM non-heap memory used in bytes")
+                .labelNames("instance")
+                .register(registry));
+
+        nameToGaugeMap.put("JVM_NON_HEAP_COMMITTED", Gauge.build()
+                .name("nifi_jvm_non_heap_committed")
+                .help("NiFi JVM non-heap memory committed in bytes")
+                .labelNames("instance")
+                .register(registry));
+
         nameToGaugeMap.put("JVM_THREAD_COUNT", Gauge.build()
                 .name("nifi_jvm_thread_count")
                 .help("NiFi JVM thread count")
diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/prometheusutil/PrometheusMetricsUtil.java
 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/prometheusutil/PrometheusMetricsUtil.java
index 70a75887ce..5ce379ae15 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/prometheusutil/PrometheusMetricsUtil.java
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/prometheusutil/PrometheusMetricsUtil.java
@@ -266,7 +266,10 @@ public class PrometheusMetricsUtil {
         final String instanceId = StringUtils.isEmpty(instId) ? 
DEFAULT_LABEL_STRING : instId;
         jvmMetricsRegistry.setDataPoint(jvmMetrics.heapUsed(DataUnit.B), 
"JVM_HEAP_USED", instanceId);
         jvmMetricsRegistry.setDataPoint(jvmMetrics.heapUsage(), 
"JVM_HEAP_USAGE", instanceId);
+        jvmMetricsRegistry.setDataPoint(jvmMetrics.heapCommitted(DataUnit.B), 
"JVM_HEAP_COMMITTED", instanceId);
         jvmMetricsRegistry.setDataPoint(jvmMetrics.nonHeapUsage(), 
"JVM_HEAP_NON_USAGE", instanceId);
+        jvmMetricsRegistry.setDataPoint(jvmMetrics.nonHeapUsed(DataUnit.B), 
"JVM_NON_HEAP_USED", instanceId);
+        
jvmMetricsRegistry.setDataPoint(jvmMetrics.nonHeapCommitted(DataUnit.B), 
"JVM_NON_HEAP_COMMITTED", instanceId);
         jvmMetricsRegistry.setDataPoint(jvmMetrics.threadCount(), 
"JVM_THREAD_COUNT", instanceId);
         jvmMetricsRegistry.setDataPoint(jvmMetrics.daemonThreadCount(), 
"JVM_DAEMON_THREAD_COUNT", instanceId);
         jvmMetricsRegistry.setDataPoint(jvmMetrics.uptime(), "JVM_UPTIME", 
instanceId);

Reply via email to