From 4588cf36d2ed12f51f6b5e6bb88130502c255b89 Mon Sep 17 00:00:00 2001 From: yyj <1012293987@qq.com> Date: Sat, 20 Jan 2024 11:08:05 +0800 Subject: [PATCH 1/3] [improve][broker]PIP-333 Add monitor metrics for the number of connections to client IPs and roles --- .../apache/pulsar/broker/service/ServerCnx.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java index bd4917da3b119..16fb75c6fc2ac 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java @@ -62,6 +62,8 @@ import java.util.stream.Collectors; import javax.naming.AuthenticationException; import javax.net.ssl.SSLSession; + +import io.prometheus.client.Gauge; import org.apache.bookkeeper.mledger.AsyncCallbacks; import org.apache.bookkeeper.mledger.Entry; import org.apache.bookkeeper.mledger.ManagedLedgerException; @@ -293,6 +295,12 @@ enum State { private final ServerCnxThrottleTracker throttleTracker = new ServerCnxThrottleTracker(this); + private static final Gauge clientIpAndRoleConnections = Gauge.build() + .name("pulsar_broker_client_ip_role_connections") + .labelNames("ip", "role") + .help("The number of client IP and role connections") + .register(); + public ServerCnx(PulsarService pulsar) { this(pulsar, null); @@ -369,6 +377,7 @@ public void channelActive(ChannelHandlerContext ctx) throws Exception { public void channelInactive(ChannelHandlerContext ctx) throws Exception { super.channelInactive(ctx); connectionController.decreaseConnection(ctx.channel().remoteAddress()); + clientIpAndRoleConnections.labels(clientSourceAddress(), getAuthRole()).dec(); isActive = false; log.info("Closed connection from {}", remoteAddress); if (brokerInterceptor != null) { @@ -740,6 +749,7 @@ private void completeConnect(int clientProtoVersion, String clientVersion) { } maybeScheduleAuthenticationCredentialsRefresh(); } + clientIpAndRoleConnections.labels(clientSourceAddress(), getAuthRole()).inc(); writeAndFlush(Commands.newConnected(clientProtoVersion, maxMessageSize, enableSubscriptionPatternEvaluation)); state = State.Connected; service.getPulsarStats().recordConnectionCreateSuccess(); @@ -3411,7 +3421,11 @@ public AuthenticationProvider getAuthenticationProvider() { @Override public String getAuthRole() { - return authRole; + if (authRole == null) { + return ""; + } else { + return authRole; + } } public String getAuthMethod() { From 3bdf2d4e5a8d37f66a78db32759f0d614672b8d4 Mon Sep 17 00:00:00 2001 From: yyj <1012293987@qq.com> Date: Sat, 20 Jan 2024 11:50:40 +0800 Subject: [PATCH 2/3] [improve][broker]PIP-333 Add monitor metrics for the number of connections to client IPs and roles --- .../main/java/org/apache/pulsar/broker/service/ServerCnx.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java index 16fb75c6fc2ac..90d5735b412d7 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java @@ -41,6 +41,7 @@ import io.netty.util.concurrent.FastThreadLocal; import io.netty.util.concurrent.Promise; import io.netty.util.concurrent.ScheduledFuture; +import io.prometheus.client.Gauge; import java.io.IOException; import java.net.InetSocketAddress; import java.net.SocketAddress; @@ -63,7 +64,6 @@ import javax.naming.AuthenticationException; import javax.net.ssl.SSLSession; -import io.prometheus.client.Gauge; import org.apache.bookkeeper.mledger.AsyncCallbacks; import org.apache.bookkeeper.mledger.Entry; import org.apache.bookkeeper.mledger.ManagedLedgerException; From 5bc33204e9b21f3f523a5073d2d91f00029706fc Mon Sep 17 00:00:00 2001 From: yyj <1012293987@qq.com> Date: Sat, 20 Jan 2024 12:38:12 +0800 Subject: [PATCH 3/3] [improve][broker]PIP-333 Add monitor metrics for the number of connections to client IPs and roles --- .../main/java/org/apache/pulsar/broker/service/ServerCnx.java | 1 - 1 file changed, 1 deletion(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java index 90d5735b412d7..4359158dc9fb7 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java @@ -63,7 +63,6 @@ import java.util.stream.Collectors; import javax.naming.AuthenticationException; import javax.net.ssl.SSLSession; - import org.apache.bookkeeper.mledger.AsyncCallbacks; import org.apache.bookkeeper.mledger.Entry; import org.apache.bookkeeper.mledger.ManagedLedgerException;