Skip to content

Commit

Permalink
Refactor metrics
Browse files Browse the repository at this point in the history
  • Loading branch information
at055612 committed Jan 27, 2025
1 parent 2c33a76 commit 59435c3
Show file tree
Hide file tree
Showing 30 changed files with 578 additions and 373 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import stroom.config.global.impl.db.GlobalConfigDaoModule;
import stroom.db.util.DbModule;
import stroom.util.io.DirProvidersModule;
import stroom.util.metrics.Metrics;
import stroom.util.metrics.MetricsImpl;

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.health.HealthCheckRegistry;
Expand Down Expand Up @@ -71,6 +73,7 @@ protected void configure() {
bind(Config.class).toInstance(configuration);
bind(Environment.class).toInstance(environment);
bind(MetricRegistry.class).toInstance(environment.metrics());
bind(Metrics.class).to(MetricsImpl.class);

final AppConfigModule appConfigModule = appConfigModuleFunc.apply(configHolder);
install(appConfigModule);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package stroom.cache.impl;

import stroom.cache.api.StroomCache;
import stroom.util.Metrics;
import stroom.util.NullSafe;
import stroom.util.cache.CacheConfig;
import stroom.util.cache.CacheConfig.StatisticsMode;
import stroom.util.logging.LambdaLogger;
import stroom.util.logging.LambdaLoggerFactory;
import stroom.util.logging.LogUtil;
import stroom.util.metrics.MetricsUtil;
import stroom.util.shared.ModelStringUtil;
import stroom.util.shared.PropertyPath;
import stroom.util.shared.cache.CacheInfo;
Expand Down Expand Up @@ -147,7 +147,7 @@ private void configureStatisticsRecording(final Caffeine<?, ?> newCacheBuilder,
// https://metrics.dropwizard.io/4.2.0/manual/caffeine.html
return new MetricsStatsCounter(
SharedMetricRegistries.getDefault(),
Metrics.buildName(getClass(), name));
MetricsUtil.buildName(getClass(), name));
});
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package stroom.dropwizard.common;

import stroom.util.HasMetrics;
import stroom.util.Metrics;
import stroom.util.Metrics.NamedMetric;
import stroom.util.NullSafe;
import stroom.util.logging.LambdaLogger;
import stroom.util.logging.LambdaLoggerFactory;
import stroom.util.logging.LogUtil;
import stroom.util.metrics.HasMetrics;
import stroom.util.metrics.MetricsUtil;
import stroom.util.metrics.MetricsUtil.NamedMetric;

import com.codahale.metrics.Counter;
import com.codahale.metrics.Gauge;
Expand Down Expand Up @@ -70,7 +70,7 @@ public void register() {
.flatMap(map -> map.entrySet().stream())
.filter(Objects::nonNull)
.map(entry -> new NamedMetric(entry.getKey(), entry.getValue()))
.sorted(Comparator.comparing(Metrics.NamedMetric::name, String::compareToIgnoreCase))
.sorted(Comparator.comparing(MetricsUtil.NamedMetric::name, String::compareToIgnoreCase))
.toList();

int maxNameLength = namedMetrics.stream()
Expand All @@ -93,7 +93,7 @@ private Map<String, Metric> getMetrics(final HasMetrics hasMetrics) {

if (NullSafe.hasEntries(metrics)) {
final Predicate<String> invalidNamePredicate = Predicate.not(
Metrics.METRIC_NAME_PATTERN.asPredicate());
MetricsUtil.METRIC_NAME_PATTERN.asPredicate());

final String invalidNames = metrics.keySet()
.stream()
Expand All @@ -102,7 +102,7 @@ private Map<String, Metric> getMetrics(final HasMetrics hasMetrics) {
.collect(Collectors.joining(", "));
if (!invalidNames.isEmpty()) {
throw new RuntimeException(LogUtil.message("Metrics [{}] from {} do not match pattern {}",
invalidNames, hasMetrics.getClass().getName(), Metrics.METRIC_NAME_PATTERN));
invalidNames, hasMetrics.getClass().getName(), MetricsUtil.METRIC_NAME_PATTERN));
}
}
return metrics;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package stroom.dropwizard.common;

import stroom.util.HasAdminTasks;
import stroom.util.HasMetrics;
import stroom.util.guice.GuiceUtil;
import stroom.util.http.HttpClientFactory;
import stroom.util.metrics.HasMetrics;
import stroom.util.shared.AuthenticationBypassChecker;

import com.codahale.metrics.Metric;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,10 @@
import stroom.util.guice.HasHealthCheckBinder;
import stroom.util.guice.RestResourcesBinder;
import stroom.util.guice.ServletBinder;
import stroom.util.metrics.Metrics;
import stroom.util.metrics.MetricsImpl;

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.health.HealthCheckRegistry;
import com.google.inject.AbstractModule;
import io.dropwizard.core.setup.Environment;
Expand Down Expand Up @@ -80,7 +83,9 @@ public ProxyModule(final Config configuration,
protected void configure() {
bind(Config.class).toInstance(configuration);
bind(Environment.class).toInstance(environment);
bind(MetricRegistry.class).toInstance(environment.metrics());
bind(HealthCheckRegistry.class).toInstance(environment.healthChecks());
bind(Metrics.class).to(MetricsImpl.class);

install(new ProxyConfigModule(proxyConfigHolder));
install(new ProxyCoreModule());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
import stroom.proxy.repo.LogStream;
import stroom.receive.common.StroomStreamException;
import stroom.security.api.UserIdentityFactory;
import stroom.util.Metrics;
import stroom.util.NullSafe;
import stroom.util.concurrent.ThreadUtil;
import stroom.util.logging.LambdaLogger;
import stroom.util.logging.LambdaLoggerFactory;
import stroom.util.logging.LogUtil;
import stroom.util.metrics.Metrics;
import stroom.util.time.StroomDuration;

import com.codahale.metrics.Timer;
Expand Down Expand Up @@ -60,7 +60,8 @@ public HttpSender(final LogStream logStream,
final ForwardHttpPostConfig config,
final String userAgent,
final UserIdentityFactory userIdentityFactory,
final HttpClient httpClient) {
final HttpClient httpClient,
final Metrics metrics) {
this.logStream = logStream;
this.config = config;
this.userAgent = userAgent;
Expand All @@ -69,7 +70,7 @@ public HttpSender(final LogStream logStream,
this.forwardUrl = config.getForwardUrl();
this.forwardDelay = NullSafe.duration(config.getForwardDelay());
this.forwarderName = config.getName();
this.sendTimer = Metrics.registrationBuilder(getClass())
this.sendTimer = metrics.registrationBuilder(getClass())
.addNamePart(forwarderName)
.addNamePart("send")
.timer()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import stroom.security.api.UserIdentityFactory;
import stroom.util.http.HttpClientFactory;
import stroom.util.logging.LogUtil;
import stroom.util.metrics.Metrics;
import stroom.util.shared.BuildInfo;

import jakarta.inject.Inject;
Expand All @@ -26,15 +27,18 @@ public class HttpSenderFactory {
private final String defaultUserAgent;
private final UserIdentityFactory userIdentityFactory;
private final HttpClientFactory httpClientFactory;
private final Metrics metrics;

@Inject
public HttpSenderFactory(final LogStream logStream,
final Provider<BuildInfo> buildInfoProvider,
final UserIdentityFactory userIdentityFactory,
final HttpClientFactory httpClientFactory) {
final HttpClientFactory httpClientFactory,
final Metrics metrics) {
this.logStream = logStream;
this.userIdentityFactory = userIdentityFactory;
this.httpClientFactory = httpClientFactory;
this.metrics = metrics;

// Construct something like
// stroom-proxy/v6.0-beta.46 java/1.8.0_181
Expand Down Expand Up @@ -64,6 +68,12 @@ public HttpSender create(final ForwardHttpPostConfig config) {
name += "-" + UUID.randomUUID();

final HttpClient httpClient = httpClientFactory.get(name, config.getHttpClient());
return new HttpSender(logStream, config, userAgentString, userIdentityFactory, httpClient);
return new HttpSender(
logStream,
config,
userAgentString,
userIdentityFactory,
httpClient,
metrics);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
import stroom.proxy.repo.AggregatorConfig;
import stroom.proxy.repo.FeedKey;
import stroom.proxy.repo.ProxyServices;
import stroom.util.Metrics;
import stroom.util.io.FileName;
import stroom.util.io.FileUtil;
import stroom.util.logging.LambdaLogger;
import stroom.util.logging.LambdaLoggerFactory;
import stroom.util.logging.LogUtil;
import stroom.util.metrics.Metrics;

import com.codahale.metrics.Histogram;
import jakarta.inject.Inject;
Expand Down Expand Up @@ -51,6 +51,7 @@ public class PreAggregator {
private final CleanupDirQueue deleteDirQueue;
private final Provider<AggregatorConfig> aggregatorConfigProvider;
private final DataDirProvider dataDirProvider;
private final Metrics metrics;

private final Path aggregatingDir;

Expand All @@ -66,13 +67,15 @@ public class PreAggregator {
public PreAggregator(final CleanupDirQueue deleteDirQueue,
final DataDirProvider dataDirProvider,
final ProxyServices proxyServices,
final Provider<AggregatorConfig> aggregatorConfigProvider) {
final Provider<AggregatorConfig> aggregatorConfigProvider,
final Metrics metrics) {
this.deleteDirQueue = deleteDirQueue;
this.aggregatorConfigProvider = aggregatorConfigProvider;
this.dataDirProvider = dataDirProvider;

// Get or create the aggregating dir.
aggregatingDir = dataDirProvider.get().resolve(DirNames.PRE_AGGREGATES);
this.metrics = metrics;
DirUtil.ensureDirExists(aggregatingDir);

// Read all the current aggregates and establish the aggregation state.
Expand Down Expand Up @@ -108,17 +111,17 @@ public PreAggregator(final CleanupDirQueue deleteDirQueue,
throw new UncheckedIOException(e);
}

aggregateItemCountHistogram = Metrics.registrationBuilder(getClass())
aggregateItemCountHistogram = metrics.registrationBuilder(getClass())
.addNamePart(AGGREGATE_NAME_PART)
.addNamePart(Metrics.COUNT)
.histogram()
.createAndRegister();
aggregateByteSizeHistogram = Metrics.registrationBuilder(getClass())
aggregateByteSizeHistogram = metrics.registrationBuilder(getClass())
.addNamePart(AGGREGATE_NAME_PART)
.addNamePart(Metrics.SIZE_IN_BYTES)
.histogram()
.createAndRegister();
aggregateAgeHistogram = Metrics.registrationBuilder(getClass())
aggregateAgeHistogram = metrics.registrationBuilder(getClass())
.addNamePart(AGGREGATE_NAME_PART)
.addNamePart(Metrics.AGE_MS)
.histogram()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ private DropwizardAppExtension<Config> getDropwizardAppExtension() {
void beforeEach() throws Exception {
dropwizard.before();
client = dropwizard.client();
// MetricsUtil.clearRegistry();
}

@AfterEach
Expand All @@ -78,6 +79,7 @@ void tearDown() {
// make sure these get cleared else they may break other tests that don't use system props
System.clearProperty(HomeDirProvider.PROP_STROOM_HOME);
System.clearProperty(TempDirProvider.PROP_STROOM_TEMP);
// MetricsUtil.clearRegistry();
}

// Subclasses can override this
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
import stroom.proxy.app.guice.ProxyCoreModule;
import stroom.proxy.app.handler.ForwardFileDestinationFactory;
import stroom.proxy.app.handler.MockForwardFileDestinationFactory;
import stroom.test.common.MockMetrics;
import stroom.util.metrics.Metrics;

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.health.HealthCheckRegistry;
import com.google.inject.AbstractModule;
import io.dropwizard.core.setup.Environment;

Expand All @@ -31,6 +35,9 @@ public ProxyTestModule(final Config configuration,
protected void configure() {
bind(Config.class).toInstance(configuration);
bind(Environment.class).toInstance(environment);
bind(MetricRegistry.class).toInstance(environment.metrics());
bind(HealthCheckRegistry.class).toInstance(environment.healthChecks());
bind(Metrics.class).toInstance(new MockMetrics());

install(new ProxyConfigModule(proxyConfigHolder));
install(new ProxyCoreModule());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import stroom.util.io.FileUtil;
import stroom.util.time.StroomDuration;

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.health.HealthCheckRegistry;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
Expand Down Expand Up @@ -48,6 +49,7 @@ class TestInnerProcessEndToEnd {
@Inject
private MockForwardFileDestinationFactory forwardFileDestinationFactory;


@Test
void testSimple() throws Exception {
final String feedName = FileSystemTestUtil.getUniqueTestString();
Expand Down Expand Up @@ -251,10 +253,13 @@ private AbstractModule getModule(final ProxyConfig proxyConfig) {
final Environment environmentMock = Mockito.mock(Environment.class);
Mockito.when(environmentMock.healthChecks())
.thenReturn(new HealthCheckRegistry());
Mockito.when(environmentMock.metrics())
.thenReturn(new MetricRegistry());

return new ProxyTestModule(
config,
new Environment("TestEnvironment"),
environmentMock,
// new Environment("TestEnvironment"),
Path.of("dummy/path/to/config.yml"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import stroom.proxy.app.DataDirProvider;
import stroom.proxy.app.handler.ReceiverFactory;
import stroom.proxy.repo.store.FileStores;
import stroom.test.common.MockMetrics;
import stroom.util.concurrent.UniqueId;
import stroom.util.concurrent.UniqueId.NodeType;

Expand Down Expand Up @@ -32,7 +33,7 @@ void test() throws IOException {
receiveStreamHandlers,
() -> eventStoreConfig,
dataDirProvider,
new FileStores(),
new FileStores(new MockMetrics()),
new CacheManagerImpl());

for (int i = 0; i < 10; i++) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import stroom.util.logging.LambdaLogger;
import stroom.util.logging.LambdaLoggerFactory;

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.health.HealthCheckRegistry;
import com.google.inject.Module;
import io.dropwizard.core.setup.Environment;
Expand Down Expand Up @@ -38,6 +39,8 @@ private Module getModule() {
final Environment environmentMock = Mockito.mock(Environment.class);
Mockito.when(environmentMock.healthChecks())
.thenReturn(new HealthCheckRegistry());
Mockito.when(environmentMock.metrics())
.thenReturn(new MetricRegistry());

final Config config = new Config();
config.setProxyConfig(new ProxyConfig());
Expand Down
Loading

0 comments on commit 59435c3

Please sign in to comment.