jmxReporter() {
JmxReporter.Builder builder =
JmxReporter.forRegistry(registry.getDropWizardMetricRegistry());
builder.inDomain(registry.getMetricRegistryInfo().getApplicationName());
+ builder.createsObjectNamesWith(new RatisObjectNameFactory());
JmxReporter reporter = builder.build();
reporter.start();
diff --git a/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisObjectNameFactory.java b/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisObjectNameFactory.java
new file mode 100644
index 0000000000..95459e025a
--- /dev/null
+++ b/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisObjectNameFactory.java
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ratis.metrics;
+
+import com.codahale.metrics.JmxReporter;
+import com.codahale.metrics.ObjectNameFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+public class RatisObjectNameFactory implements ObjectNameFactory {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(JmxReporter.class);
+
+ @Override
+ public ObjectName createName(String type, String domain, String name) {
+ try {
+ ObjectName objectName = new ObjectName(domain, "name", name);
+ if (objectName.isPattern()) {
+ objectName = new ObjectName(domain, "name", ObjectName.quote(name));
+ }
+ return objectName;
+ } catch (MalformedObjectNameException e) {
+ try {
+ return new ObjectName(domain, "name", ObjectName.quote(name));
+ } catch (MalformedObjectNameException e1) {
+ LOGGER.warn("Unable to register {} {}", type, name, e1);
+ throw new RuntimeException(e1);
+ }
+ }
+ }
+}
From 2190b411b76717a87f10a626584b9fa06e3c1b8f Mon Sep 17 00:00:00 2001
From: stormbroken <181250184@smail.nju.edu.cn>
Date: Fri, 15 Apr 2022 15:51:57 +0800
Subject: [PATCH 4/7] add RatisObjectNameFactory
---
.../java/org/apache/ratis/metrics/RatisObjectNameFactory.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisObjectNameFactory.java b/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisObjectNameFactory.java
index 95459e025a..7dda6c858d 100644
--- a/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisObjectNameFactory.java
+++ b/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisObjectNameFactory.java
@@ -18,8 +18,8 @@
package org.apache.ratis.metrics;
-import com.codahale.metrics.JmxReporter;
-import com.codahale.metrics.ObjectNameFactory;
+import com.codahale.metrics.jmx.JmxReporter;
+import com.codahale.metrics.jmx.ObjectNameFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
From 2d8d8b87a18684e122e54c080565a932d14eccd8 Mon Sep 17 00:00:00 2001
From: stormbroken <181250184@smail.nju.edu.cn>
Date: Mon, 18 Apr 2022 20:15:15 +0800
Subject: [PATCH 5/7] upgrade ganglia level to 3.2.6
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index ceff297b4c..4135c0fa1c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -218,7 +218,7 @@
4.2.9
- 3.2.5
+ 3.2.6
From 8bee2e980c06523a79974000f761f87bb1d87ea7 Mon Sep 17 00:00:00 2001
From: stormbroken <181250184@smail.nju.edu.cn>
Date: Fri, 22 Apr 2022 09:14:59 +0800
Subject: [PATCH 6/7] add log for test.
---
.../server/metrics/TestLeaderElectionMetrics.java | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/metrics/TestLeaderElectionMetrics.java b/ratis-server/src/test/java/org/apache/ratis/server/metrics/TestLeaderElectionMetrics.java
index 6270784526..90805cde20 100644
--- a/ratis-server/src/test/java/org/apache/ratis/server/metrics/TestLeaderElectionMetrics.java
+++ b/ratis-server/src/test/java/org/apache/ratis/server/metrics/TestLeaderElectionMetrics.java
@@ -23,6 +23,8 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import com.codahale.metrics.Gauge;
+import org.apache.ratis.BaseTest;
import org.apache.ratis.metrics.RatisMetricRegistry;
import org.apache.ratis.protocol.RaftGroupId;
import org.apache.ratis.protocol.RaftGroupMemberId;
@@ -30,10 +32,12 @@
import org.junit.BeforeClass;
import org.junit.Test;
+import java.util.SortedMap;
+
/**
* Test for LeaderElectionMetrics.
*/
-public class TestLeaderElectionMetrics {
+public class TestLeaderElectionMetrics extends BaseTest {
private static LeaderElectionMetrics leaderElectionMetrics;
private static RatisMetricRegistry ratisMetricRegistry;
@@ -49,10 +53,11 @@ public static void setUp() {
@Test
public void testOnLeaderElectionCompletion() throws Exception {
- leaderElectionMetrics.onNewLeaderElectionCompletion();
- Long leaderElectionLatency = (Long) ratisMetricRegistry.getGauges((s, metric) ->
- s.contains(LAST_LEADER_ELECTION_ELAPSED_TIME)).values().iterator().next().getValue();
- assertTrue(leaderElectionLatency > 0L);
+ final SortedMap gauges = ratisMetricRegistry.getGauges(
+ (s, metric) -> s.contains(LAST_LEADER_ELECTION_ELAPSED_TIME));
+ LOG.info("{} gauges: {}", LAST_LEADER_ELECTION_ELAPSED_TIME, gauges);
+ final Long leaderElectionLatency = (Long)gauges.values().iterator().next().getValue();
+ assertTrue("leaderElectionLatency = " + leaderElectionLatency, leaderElectionLatency > 0L);
}
@Test
From a45e3b95a921f48589b5068b2fe9110ae1b2b756 Mon Sep 17 00:00:00 2001
From: stormbroken <181250184@smail.nju.edu.cn>
Date: Fri, 22 Apr 2022 09:17:58 +0800
Subject: [PATCH 7/7] add log for test.
---
.../apache/ratis/server/metrics/TestLeaderElectionMetrics.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/metrics/TestLeaderElectionMetrics.java b/ratis-server/src/test/java/org/apache/ratis/server/metrics/TestLeaderElectionMetrics.java
index 90805cde20..af000f3a8e 100644
--- a/ratis-server/src/test/java/org/apache/ratis/server/metrics/TestLeaderElectionMetrics.java
+++ b/ratis-server/src/test/java/org/apache/ratis/server/metrics/TestLeaderElectionMetrics.java
@@ -53,6 +53,7 @@ public static void setUp() {
@Test
public void testOnLeaderElectionCompletion() throws Exception {
+ leaderElectionMetrics.onNewLeaderElectionCompletion();
final SortedMap gauges = ratisMetricRegistry.getGauges(
(s, metric) -> s.contains(LAST_LEADER_ELECTION_ELAPSED_TIME));
LOG.info("{} gauges: {}", LAST_LEADER_ELECTION_ELAPSED_TIME, gauges);