From dda0e0e9ac37f778958bf0cf87c453f76d537fbb Mon Sep 17 00:00:00 2001 From: Matteo Merli Date: Thu, 28 Feb 2019 14:47:37 -0800 Subject: [PATCH] Report direct memory used in Proxy to prometheus --- .../proxy/server/ProxyServiceStarter.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyServiceStarter.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyServiceStarter.java index 4c92b34876fd9..3e48c0110e7c9 100644 --- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyServiceStarter.java +++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyServiceStarter.java @@ -21,6 +21,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static org.apache.commons.lang3.StringUtils.isBlank; import static org.apache.commons.lang3.StringUtils.isEmpty; +import static org.apache.pulsar.common.stats.JvmMetrics.getJvmDirectMemoryUsed; import static org.slf4j.bridge.SLF4JBridgeHandler.install; import static org.slf4j.bridge.SLF4JBridgeHandler.removeHandlersForRootLogger; @@ -34,6 +35,10 @@ import com.beust.jcommander.JCommander; import com.beust.jcommander.Parameter; +import io.netty.util.internal.PlatformDependent; +import io.prometheus.client.CollectorRegistry; +import io.prometheus.client.Gauge; +import io.prometheus.client.Gauge.Child; import io.prometheus.client.exporter.MetricsServlet; import io.prometheus.client.hotspot.DefaultExports; import org.apache.pulsar.common.configuration.VipStatus; @@ -140,6 +145,22 @@ public ProxyServiceStarter(String[] args) throws Exception { // Setup metrics DefaultExports.initialize(); + + // Report direct memory from Netty counters + Gauge.build("jvm_memory_direct_bytes_used", "-").create().setChild(new Child() { + @Override + public double get() { + return getJvmDirectMemoryUsed(); + } + }).register(CollectorRegistry.defaultRegistry); + + Gauge.build("jvm_memory_direct_bytes_max", "-").create().setChild(new Child() { + @Override + public double get() { + return PlatformDependent.maxDirectMemory(); + } + }).register(CollectorRegistry.defaultRegistry); + addWebServerHandlers(server, config, proxyService.getDiscoveryProvider()); // start web-service