From 2d3065606a444c0b711c1809ce296db2ba56cb0c Mon Sep 17 00:00:00 2001 From: liwang Date: Wed, 30 Jun 2021 06:53:49 +0000 Subject: ZOOKEEPER-4284: Add metrics for observer sync time Motivation - With enabling the feature of followers hosting observers, we would need a metric to measure the observer sync time just like what we have for the follower sync time. Changes - Added the "observer_sync_time" metrics - Added unit test on the metrics Author: liwang Reviewers: Enrico Olivelli , Michael Han , Damien Diederen Closes #1691 from li4wang/ZOOKEEPER-4284 --- .../java/org/apache/zookeeper/test/ObserverMasterTest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'zookeeper-server/src/test/java') diff --git a/zookeeper-server/src/test/java/org/apache/zookeeper/test/ObserverMasterTest.java b/zookeeper-server/src/test/java/org/apache/zookeeper/test/ObserverMasterTest.java index 2d2bea768..4ba33c7a8 100644 --- a/zookeeper-server/src/test/java/org/apache/zookeeper/test/ObserverMasterTest.java +++ b/zookeeper-server/src/test/java/org/apache/zookeeper/test/ObserverMasterTest.java @@ -55,6 +55,7 @@ import org.apache.zookeeper.ZooKeeper.States; import org.apache.zookeeper.admin.ZooKeeperAdmin; import org.apache.zookeeper.jmx.MBeanRegistry; import org.apache.zookeeper.jmx.ZKMBeanInfo; +import org.apache.zookeeper.metrics.MetricsUtils; import org.apache.zookeeper.server.admin.Commands; import org.apache.zookeeper.server.quorum.QuorumPeerConfig; import org.apache.zookeeper.server.util.PortForwarder; @@ -85,6 +86,8 @@ public class ObserverMasterTest extends ObserverMasterTestBase { assertTrue(ClientBase.waitForServerUp("127.0.0.1:" + CLIENT_PORT_OBS, CONNECTION_TIMEOUT), "waiting for server 3 being up"); + validateObserverSyncTimeMetrics(); + if (testObserverMaster) { int masterPort = q3.getQuorumPeer().observer.getSocket().getPort(); LOG.info("port {} {}", masterPort, OM_PORT); @@ -522,4 +525,15 @@ public class ObserverMasterTest extends ObserverMasterTestBase { } + private void validateObserverSyncTimeMetrics() { + final String name = "observer_sync_time"; + final Map metrics = MetricsUtils.currentServerMetrics(); + + assertEquals(5, metrics.keySet().stream().filter(key -> key.contains(name)).count()); + assertNotNull(metrics.get(String.format("avg_%s", name))); + assertNotNull(metrics.get(String.format("min_%s", name))); + assertNotNull(metrics.get(String.format("max_%s", name))); + assertNotNull(metrics.get(String.format("cnt_%s", name))); + assertNotNull(metrics.get(String.format("sum_%s", name))); + } } -- cgit v1.2.1