diff --git a/docs/_docs/monitoring-metrics/new-metrics.adoc b/docs/_docs/monitoring-metrics/new-metrics.adoc index b055dc4069544..d26579be75f56 100644 --- a/docs/_docs/monitoring-metrics/new-metrics.adoc +++ b/docs/_docs/monitoring-metrics/new-metrics.adoc @@ -523,6 +523,7 @@ Register name: `io.discovery` |CoordinatorSince | long | Coordinator since timestamp. |CurrentTopologyVersion | long | Current topology version. |FailedNodes | integer | Failed nodes count. +|JoinedClientNodes | integer | Joined client nodes count. |JoinedNodes | integer | Joined nodes count. |LeftNodes | integer | Left nodes count. |LocalPort | integer | Local TCP port the discovery SPI listens to. diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java index ddf9a61102e6c..731a3724676b3 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java @@ -2334,6 +2334,9 @@ else if (log.isDebugEnabled()) notifyDiscovery(EVT_NODE_JOINED, topVer, node, top); spi.stats.onNodeJoined(); + + if (node.isClient()) + spi.stats.onClientNodeJoined(); } } else { diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java index 9a87615ffbbe0..4c5e3c72a42ce 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java @@ -5075,6 +5075,9 @@ private void processNodeAddFinishedMessage(TcpDiscoveryNodeAddFinishedMessage ms if (msg.verified() && !locNodeId.equals(nodeId) && state != CONNECTING && fireEvt) { spi.stats.onNodeJoined(); + if (node.isClient()) + spi.stats.onClientNodeJoined(); + // Make sure that node with greater order will never get EVT_NODE_JOINED // on node with less order. assert node.internalOrder() > locNode.internalOrder() : "Invalid order [node=" + node + diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryStatistics.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryStatistics.java index 63d0cdb416751..d588bf851c653 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryStatistics.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryStatistics.java @@ -46,6 +46,9 @@ public class TcpDiscoveryStatistics { /** Failed nodes count. */ private final IntMetricImpl failedNodesCnt; + /** Joined client nodes count. */ + private final IntMetricImpl joinedClientNodesCnt; + /** Left nodes count. */ private final IntMetricImpl leftNodesCnt; @@ -88,6 +91,8 @@ public TcpDiscoveryStatistics() { failedNodesCnt = new IntMetricImpl(metricName(DISCO_METRICS, "FailedNodes"), "Failed nodes count"); + joinedClientNodesCnt = new IntMetricImpl(metricName(DISCO_METRICS, "JoinedClientNodes"), "Joined client nodes count."); + leftNodesCnt = new IntMetricImpl(metricName(DISCO_METRICS, "LeftNodes"), "Left nodes count"); pendingMsgsRegistered = new IntMetricImpl(metricName(DISCO_METRICS, "PendingMessagesRegistered"), @@ -119,6 +124,7 @@ public void registerMetrics(MetricRegistryImpl discoReg) { discoReg.register(joinedNodesCnt); discoReg.register(failedNodesCnt); + discoReg.register(joinedClientNodesCnt); discoReg.register(leftNodesCnt); discoReg.register(pendingMsgsRegistered); discoReg.register(rejectedSslConnectionsCnt); @@ -133,6 +139,11 @@ public void onNodeJoined() { joinedNodesCnt.increment(); } + /** Increments joined client nodes count. */ + public void onClientNodeJoined() { + joinedClientNodesCnt.increment(); + } + /** * Increments left nodes count. */ @@ -355,6 +366,7 @@ public synchronized void clear() { crdSinceTs.set(0); failedNodesCnt.reset(); joinedNodesCnt.reset(); + joinedClientNodesCnt.reset(); leftNodesCnt.reset(); maxMsgProcTime = 0; pendingMsgsRegistered.reset(); diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiMBeanTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiMBeanTest.java index 097ee09b4423e..6159dc24e698b 100644 --- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiMBeanTest.java +++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiMBeanTest.java @@ -130,6 +130,8 @@ public void testMBean() throws Exception { assertEquals((cnt - 1) - i, bean.getNodesJoined()); assertEquals((cnt - 1) - i, discoReg.findMetric("JoinedNodes").value()); + assertEquals((i < cliIdx) ? 1 : 0, discoReg.findMetric("JoinedClientNodes").value()); + assertEquals(0L, bean.getNodesFailed()); assertEquals(0, discoReg.findMetric("FailedNodes").value()); diff --git a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java index faadb17cdd925..9d10c615bc5c4 100644 --- a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java +++ b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java @@ -3586,6 +3586,9 @@ private void notifyNodeJoin(ZkJoinedNodeEvtData joinedEvtData, ZkJoiningNodeData ).get(); stats.onNodeJoined(); + + if (joinedNode.isClient()) + stats.onClientNodeJoined(); } /** diff --git a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryStatistics.java b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryStatistics.java index 958974d0db6f6..e0df3c0fa31ea 100644 --- a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryStatistics.java +++ b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryStatistics.java @@ -40,6 +40,10 @@ public class ZookeeperDiscoveryStatistics { private final LongAdderMetric leftNodesCnt = new LongAdderMetric(metricName(DISCO_METRICS, "LeftNodes"), "Left nodes count"); + /** */ + private final LongAdderMetric joinedClientNodesCnt = new LongAdderMetric(metricName(DISCO_METRICS, "JoinedClientNodes"), + "Joined client nodes count."); + /** Communication error count. */ private final LongAdderMetric commErrCnt = new LongAdderMetric(metricName(DISCO_METRICS, "CommunicationErrors"), "Communication errors count"); @@ -54,6 +58,7 @@ public class ZookeeperDiscoveryStatistics { public void registerMetrics(MetricRegistryImpl discoReg) { discoReg.register(joinedNodesCnt); discoReg.register(failedNodesCnt); + discoReg.register(joinedClientNodesCnt); discoReg.register(leftNodesCnt); discoReg.register(commErrCnt); discoReg.register(topVer); @@ -84,6 +89,11 @@ public void onNodeJoined() { joinedNodesCnt.increment(); } + /** */ + public void onClientNodeJoined() { + joinedClientNodesCnt.increment(); + } + /** */ public void onNodeFailed() { failedNodesCnt.increment(); diff --git a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryMiscTest.java b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryMiscTest.java index a8acf9b6faf4a..f55b8090ad44b 100644 --- a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryMiscTest.java +++ b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryMiscTest.java @@ -251,7 +251,7 @@ public void testMbean() throws Exception { assertEquals(cnt - i - 1, bean.getNodesJoined()); assertEquals(cnt - i - 1, discoReg.findMetric("JoinedNodes").value()); - Arrays.asList("LeftNodes", "FailedNodes", "CommunicationErrors").forEach(name -> { + Arrays.asList("LeftNodes", "FailedNodes", "CommunicationErrors", "JoinedClientNodes").forEach(name -> { assertEquals(0, discoReg.findMetric(name).value()); }); @@ -304,6 +304,8 @@ public void testClientNodesStatus() throws Exception { assertEquals(1, node.cluster().forServers().nodes().size()); } + assertEquals(1L, grid(0).context().metric().registry(DISCO_METRICS).findMetric("JoinedClientNodes").value()); + startGrid(2); startClientGrid(3);