Skip to content

Commit

Permalink
fix comment
Browse files Browse the repository at this point in the history
  • Loading branch information
FANNG1 committed May 16, 2024
1 parent 2d27893 commit 0517a34
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,6 @@ private ConfigConstants() {}
public static final String VERSION_0_4_0 = "0.4.0";
/** The version number for the 0.5.0 release. */
public static final String VERSION_0_5_0 = "0.5.0";
/** The version number for the 0.6.0 release. */
public static final String VERSION_0_6_0 = "0.6.0";
}
7 changes: 7 additions & 0 deletions core/src/main/java/com/datastrato/gravitino/Configs.java
Original file line number Diff line number Diff line change
Expand Up @@ -267,4 +267,11 @@ public interface Configs {
.version(ConfigConstants.VERSION_0_5_0)
.longConf()
.createWithDefault(60 * 60 * 1000L);

ConfigEntry<Long> METRICS_TIME_SLIDING_WINDOW_SECONDS =
new ConfigBuilder("gravitino.metrics.timeSlidingWindowSecs")
.doc("The seconds of Gravitino metrics time sliding window")
.version(ConfigConstants.VERSION_0_6_0)
.longConf()
.createWithDefault(60L);
}
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,8 @@ public void initialize(Config config) {
LOG.info("Initializing Gravitino Environment...");

this.config = config;
this.metricsSystem = new MetricsSystem();
int slidingWindowSeconds = config.get(Configs.METRICS_TIME_SLIDING_WINDOW_SECONDS).intValue();
this.metricsSystem = new MetricsSystem(slidingWindowSeconds);
metricsSystem.register(new JVMMetricsSource());

// Initialize EntityStore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,22 @@
* report metrics from MetricsSources registered to MetricsSystem.
*/
public class MetricsSystem implements Closeable {

private static final Logger LOG = LoggerFactory.getLogger(MetricsSystem.class);
private final String name;
private final MetricRegistry metricRegistry;
private HashMap<String, MetricsSource> metricSources = new HashMap<>();
private List<Reporter> metricsReporters = new ArrayList<>();
private CollectorRegistry prometheusRegistry;
private int timeSlidingWindowSeconds;

public MetricsSystem() {
this("");
public MetricsSystem(int timeSlidingWindowSeconds) {
this("", timeSlidingWindowSeconds);
}

public MetricsSystem(String name) {
public MetricsSystem(String name, int timeSlidingWindowSeconds) {
this.name = name;
this.timeSlidingWindowSeconds = timeSlidingWindowSeconds;
this.metricRegistry = new MetricRegistry();
this.prometheusRegistry = new CollectorRegistry();
}
Expand Down Expand Up @@ -176,4 +179,8 @@ private void registerMetricsToPrometheusRegistry() {
public MetricsServlet getPrometheusServlet() {
return new MetricsServlet(prometheusRegistry);
}

public int getTimeSlidingWindowSeconds() {
return timeSlidingWindowSeconds;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,11 @@
import com.codahale.metrics.Gauge;
import com.codahale.metrics.Histogram;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.SlidingTimeWindowArrayReservoir;
import com.codahale.metrics.Timer;
import com.datastrato.gravitino.GravitinoEnv;
import com.datastrato.gravitino.metrics.MetricsSystem;
import java.util.concurrent.TimeUnit;

/**
* MetricsSource provides utilities to collect specified kind metrics, all metrics must create with
Expand Down Expand Up @@ -75,7 +79,12 @@ public Counter getCounter(String name) {
* @return a new or pre-existing Histogram
*/
public Histogram getHistogram(String name) {
return this.metricRegistry.histogram(name);
return this.metricRegistry.histogram(
name,
() ->
new Histogram(
new SlidingTimeWindowArrayReservoir(
getTimeSlidingWindowSeconds(), TimeUnit.SECONDS)));
}

/**
Expand All @@ -85,6 +94,21 @@ public Histogram getHistogram(String name) {
* @return a new or pre-existing Timer
*/
public Timer getTimer(String name) {
return this.metricRegistry.timer(name);
return this.metricRegistry.timer(
name,
() ->
new Timer(
new SlidingTimeWindowArrayReservoir(
getTimeSlidingWindowSeconds(), TimeUnit.SECONDS)));
}

protected int getTimeSlidingWindowSeconds() {
MetricsSystem metricsSystem = GravitinoEnv.getInstance().metricsSystem();
// in test case
if (metricsSystem == null) {
return 60;
} else {
return metricsSystem.getTimeSlidingWindowSeconds();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import org.junit.jupiter.api.Test;

public class TestMetricsSystem {
MetricsSystem metricsSystem = new MetricsSystem();
MetricsSystem metricsSystem = new MetricsSystem(60);

private long getCounterValue(String metricsSourceName, String name) {
return metricsSystem.getMetricRegistry().counter(metricsSourceName + "." + name).getCount();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public TestMetricsSource() {

@BeforeAll
void init() {
metricsSystem = new MetricsSystem();
metricsSystem = new MetricsSystem(60);
metricsSystem.register(this);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,26 @@

package com.datastrato.gravitino.server.web;

import com.codahale.metrics.Clock;
import com.codahale.metrics.SlidingTimeWindowArrayReservoir;
import com.codahale.metrics.jersey2.InstrumentedResourceMethodApplicationListener;
import com.datastrato.gravitino.metrics.MetricNames;
import com.datastrato.gravitino.metrics.source.MetricsSource;
import java.util.concurrent.TimeUnit;
import org.glassfish.jersey.server.ResourceConfig;

public class HttpServerMetricsSource extends MetricsSource {

public HttpServerMetricsSource(String name, ResourceConfig resourceConfig, JettyServer server) {
super(name);
resourceConfig.register(new InstrumentedResourceMethodApplicationListener(getMetricRegistry()));
resourceConfig.register(
new InstrumentedResourceMethodApplicationListener(
getMetricRegistry(),
Clock.defaultClock(),
false,
() ->
new SlidingTimeWindowArrayReservoir(
getTimeSlidingWindowSeconds(), TimeUnit.SECONDS)));
registerGauge(
MetricNames.SERVER_IDLE_THREAD_NUM, () -> server.getThreadPool().getIdleThreads());
}
Expand Down

0 comments on commit 0517a34

Please sign in to comment.