From 63bd6a1e6de58812d825ed1654bc300ad9948304 Mon Sep 17 00:00:00 2001 From: riccardomodanese Date: Thu, 28 Mar 2024 17:15:20 +0100 Subject: [PATCH] :fix: add counter for messages published through internal connector Signed-off-by: riccardomodanese --- .../artemis/plugin/security/SecurityPlugin.java | 7 +++++++ .../artemis/plugin/security/ServerPlugin.java | 3 ++- .../plugin/security/metric/PublishMetric.java | 14 +++++++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/broker/artemis/plugin/src/main/java/org/eclipse/kapua/broker/artemis/plugin/security/SecurityPlugin.java b/broker/artemis/plugin/src/main/java/org/eclipse/kapua/broker/artemis/plugin/security/SecurityPlugin.java index 03e8d6096da..cc508b2931a 100644 --- a/broker/artemis/plugin/src/main/java/org/eclipse/kapua/broker/artemis/plugin/security/SecurityPlugin.java +++ b/broker/artemis/plugin/src/main/java/org/eclipse/kapua/broker/artemis/plugin/security/SecurityPlugin.java @@ -258,6 +258,13 @@ public boolean authorize(Subject subject, Set roles, CheckType checkType, break; } } else { + switch (checkType) { + case SEND: + publishMetric.getAllowedMessagesInternal().inc(); + break; + default: + break; + } allowed = true; } } diff --git a/broker/artemis/plugin/src/main/java/org/eclipse/kapua/broker/artemis/plugin/security/ServerPlugin.java b/broker/artemis/plugin/src/main/java/org/eclipse/kapua/broker/artemis/plugin/security/ServerPlugin.java index 24d9064ee2c..cc4ac2a4f67 100644 --- a/broker/artemis/plugin/src/main/java/org/eclipse/kapua/broker/artemis/plugin/security/ServerPlugin.java +++ b/broker/artemis/plugin/src/main/java/org/eclipse/kapua/broker/artemis/plugin/security/ServerPlugin.java @@ -242,15 +242,16 @@ public void beforeSend(ServerSession session, Transaction tx, Message message, b logger.info("Published message size over threshold. size: {} - destination: {} - account id: {} - username: {} - clientId: {}", messageSize, address, sessionContext.getAccountName(), sessionContext.getUsername(), sessionContext.getClientId()); } + publishMetric.getMessageSizeAllowed().update(messageSize); } else { if (publishInfoMessageSizeLimit < messageSize) { logger.info("Published message size over threshold. size: {} - destination: {}", messageSize, address); } message.putBooleanProperty(MessageConstants.HEADER_KAPUA_BROKER_CONTEXT, true); + publishMetric.getMessageSizeAllowedInternal().update(messageSize); } message.putStringProperty(MessageConstants.PROPERTY_ORIGINAL_TOPIC, address); - publishMetric.getMessageSizeAllowed().update(messageSize); serverContext.getAddressAccessTracker().update(address); logger.debug("Published message on address {} from clientId: {} - clientIp: {}", address, sessionContext.getClientId(), sessionContext.getClientIp()); ActiveMQServerPlugin.super.beforeSend(session, tx, message, direct, noAutoCreateQueue); diff --git a/broker/artemis/plugin/src/main/java/org/eclipse/kapua/broker/artemis/plugin/security/metric/PublishMetric.java b/broker/artemis/plugin/src/main/java/org/eclipse/kapua/broker/artemis/plugin/security/metric/PublishMetric.java index 674579aa4b5..cd45cd5780f 100644 --- a/broker/artemis/plugin/src/main/java/org/eclipse/kapua/broker/artemis/plugin/security/metric/PublishMetric.java +++ b/broker/artemis/plugin/src/main/java/org/eclipse/kapua/broker/artemis/plugin/security/metric/PublishMetric.java @@ -28,13 +28,16 @@ public class PublishMetric { public static final String PUBLISH = "publish"; public static final String ALLOWED = "allowed"; + public static final String INTERNAL = "internal"; public static final String NOT_ALLOWED = "not_allowed"; private final Counter allowedMessages; + private final Counter allowedMessagesInternal; private final Counter notAllowedMessages; private final Timer time; // message size private final Histogram messageSizeAllowed; + private final Histogram messageSizeAllowedInternal; @Inject private PublishMetric(MetricsService metricsService, @@ -42,10 +45,16 @@ private PublishMetric(MetricsService metricsService, String metricModuleName) { // publish/subscribe allowedMessages = metricsService.getCounter(metricModuleName, PUBLISH, ALLOWED); + allowedMessagesInternal = metricsService.getCounter(metricModuleName, PUBLISH, INTERNAL, ALLOWED); notAllowedMessages = metricsService.getCounter(metricModuleName, PUBLISH, NOT_ALLOWED); time = metricsService.getTimer(metricModuleName, PUBLISH, MetricsLabel.TIME, MetricsLabel.SECONDS); // message size messageSizeAllowed = metricsService.getHistogram(metricModuleName, PUBLISH, ALLOWED, MetricsLabel.SIZE, MetricsLabel.BYTES); + messageSizeAllowedInternal = metricsService.getHistogram(metricModuleName, PUBLISH, INTERNAL, ALLOWED, MetricsLabel.SIZE, MetricsLabel.BYTES); + } + + public Counter getAllowedMessagesInternal() { + return allowedMessagesInternal; } public Counter getAllowedMessages() { @@ -60,8 +69,11 @@ public Timer getTime() { return time; } + public Histogram getMessageSizeAllowedInternal() { + return messageSizeAllowedInternal; + } + public Histogram getMessageSizeAllowed() { return messageSizeAllowed; } - }