Skip to content

Commit

Permalink
Adapt metrics to new dependency model
Browse files Browse the repository at this point in the history
  • Loading branch information
MishaDemianenko committed Jun 21, 2018
1 parent 29119ce commit 36c60a7
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 27 deletions.
Expand Up @@ -39,6 +39,7 @@
import org.neo4j.kernel.impl.transaction.TransactionCounters; import org.neo4j.kernel.impl.transaction.TransactionCounters;
import org.neo4j.kernel.impl.transaction.log.TransactionIdStore; import org.neo4j.kernel.impl.transaction.log.TransactionIdStore;
import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointerMonitor; import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointerMonitor;
import org.neo4j.kernel.impl.transaction.state.DataSourceManager;
import org.neo4j.kernel.lifecycle.LifeSupport; import org.neo4j.kernel.lifecycle.LifeSupport;
import org.neo4j.kernel.monitoring.Monitors; import org.neo4j.kernel.monitoring.Monitors;
import org.neo4j.metrics.MetricsSettings; import org.neo4j.metrics.MetricsSettings;
Expand Down Expand Up @@ -79,17 +80,11 @@ public interface Dependencies


PageCacheCounters pageCacheCounters(); PageCacheCounters pageCacheCounters();


CheckPointerMonitor checkPointerMonitor();

LogRotationMonitor logRotationMonitor();

StoreEntityCounters entityCountStats();

Supplier<ClusterMembers> clusterMembers(); Supplier<ClusterMembers> clusterMembers();


Supplier<CoreMetaData> raft(); Supplier<CoreMetaData> raft();


Supplier<TransactionIdStore> transactionIdStore(); DataSourceManager dataSourceManager();
} }


public Neo4jMetricsBuilder( MetricRegistry registry, EventReporter reporter, Config config, LogService logService, public Neo4jMetricsBuilder( MetricRegistry registry, EventReporter reporter, Config config, LogService logService,
Expand All @@ -109,7 +104,7 @@ public boolean build()
boolean result = false; boolean result = false;
if ( config.get( MetricsSettings.neoTxEnabled ) ) if ( config.get( MetricsSettings.neoTxEnabled ) )
{ {
life.add( new TransactionMetrics( registry, dependencies.transactionIdStore(), life.add( new TransactionMetrics( registry, databaseDependencySupplier( TransactionIdStore.class ),
dependencies.transactionCounters() ) ); dependencies.transactionCounters() ) );
result = true; result = true;
} }
Expand All @@ -123,14 +118,14 @@ public boolean build()
if ( config.get( MetricsSettings.neoCheckPointingEnabled ) ) if ( config.get( MetricsSettings.neoCheckPointingEnabled ) )
{ {
life.add( new CheckPointingMetrics( reporter, registry, dependencies.monitors(), life.add( new CheckPointingMetrics( reporter, registry, dependencies.monitors(),
dependencies.checkPointerMonitor() ) ); databaseDependencySupplier( CheckPointerMonitor.class ) ) );
result = true; result = true;
} }


if ( config.get( MetricsSettings.neoLogRotationEnabled ) ) if ( config.get( MetricsSettings.neoLogRotationEnabled ) )
{ {
life.add( new LogRotationMetrics( reporter, registry, dependencies.monitors(), life.add( new LogRotationMetrics( reporter, registry, dependencies.monitors(),
dependencies.logRotationMonitor() ) ); databaseDependencySupplier( LogRotationMonitor.class ) ) );
result = true; result = true;
} }


Expand All @@ -139,7 +134,7 @@ public boolean build()
if ( kernelContext.databaseInfo().edition != Edition.community && if ( kernelContext.databaseInfo().edition != Edition.community &&
kernelContext.databaseInfo().edition != Edition.unknown ) kernelContext.databaseInfo().edition != Edition.unknown )
{ {
life.add( new EntityCountMetrics( registry, dependencies.entityCountStats() ) ); life.add( new EntityCountMetrics( registry, databaseDependencySupplier( StoreEntityCounters.class ) ) );
result = true; result = true;
} }
} }
Expand Down Expand Up @@ -220,4 +215,9 @@ else if ( mode == OperationalMode.read_replica )


return result; return result;
} }

private <T> Supplier<T> databaseDependencySupplier( Class<T> clazz )
{
return () -> dependencies.dataSourceManager().getDataSource().getDependencyResolver().resolveDependency( clazz );
}
} }
Expand Up @@ -26,6 +26,7 @@
import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.MetricRegistry;


import java.util.TreeMap; import java.util.TreeMap;
import java.util.function.Supplier;


import org.neo4j.kernel.impl.annotations.Documented; import org.neo4j.kernel.impl.annotations.Documented;
import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointerMonitor; import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointerMonitor;
Expand All @@ -51,15 +52,15 @@ public class CheckPointingMetrics extends LifecycleAdapter


private final MetricRegistry registry; private final MetricRegistry registry;
private final Monitors monitors; private final Monitors monitors;
private final CheckPointerMonitor checkPointerMonitor; private final Supplier<CheckPointerMonitor> checkPointerMonitorSupplier;
private final DefaultCheckPointerTracer.Monitor listener; private final DefaultCheckPointerTracer.Monitor listener;


public CheckPointingMetrics( EventReporter reporter, MetricRegistry registry, public CheckPointingMetrics( EventReporter reporter, MetricRegistry registry,
Monitors monitors, CheckPointerMonitor checkPointerMonitor ) Monitors monitors, Supplier<CheckPointerMonitor> checkPointerMonitorSupplier )
{ {
this.registry = registry; this.registry = registry;
this.monitors = monitors; this.monitors = monitors;
this.checkPointerMonitor = checkPointerMonitor; this.checkPointerMonitorSupplier = checkPointerMonitorSupplier;
this.listener = durationMillis -> this.listener = durationMillis ->
{ {
TreeMap<String,Gauge> gauges = new TreeMap<>(); TreeMap<String,Gauge> gauges = new TreeMap<>();
Expand All @@ -73,6 +74,7 @@ public void start()
{ {
monitors.addMonitorListener( listener ); monitors.addMonitorListener( listener );


CheckPointerMonitor checkPointerMonitor = checkPointerMonitorSupplier.get();
registry.register( CHECK_POINT_EVENTS, (Gauge<Long>) checkPointerMonitor::numberOfCheckPointEvents ); registry.register( CHECK_POINT_EVENTS, (Gauge<Long>) checkPointerMonitor::numberOfCheckPointEvents );
registry.register( CHECK_POINT_TOTAL_TIME, registry.register( CHECK_POINT_TOTAL_TIME,
(Gauge<Long>) checkPointerMonitor::checkPointAccumulatedTotalTimeMillis ); (Gauge<Long>) checkPointerMonitor::checkPointAccumulatedTotalTimeMillis );
Expand Down
Expand Up @@ -25,6 +25,8 @@
import com.codahale.metrics.Gauge; import com.codahale.metrics.Gauge;
import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.MetricRegistry;


import java.util.function.Supplier;

import org.neo4j.kernel.impl.annotations.Documented; import org.neo4j.kernel.impl.annotations.Documented;
import org.neo4j.kernel.impl.store.stats.StoreEntityCounters; import org.neo4j.kernel.impl.store.stats.StoreEntityCounters;
import org.neo4j.kernel.lifecycle.LifecycleAdapter; import org.neo4j.kernel.lifecycle.LifecycleAdapter;
Expand All @@ -46,21 +48,22 @@ public class EntityCountMetrics extends LifecycleAdapter
public static final String COUNTS_NODE = name( COUNTS_PREFIX, "node" ); public static final String COUNTS_NODE = name( COUNTS_PREFIX, "node" );


private final MetricRegistry registry; private final MetricRegistry registry;
private final StoreEntityCounters storeEntityCounters; private final Supplier<StoreEntityCounters> storeEntityCountersSupplier;


public EntityCountMetrics( MetricRegistry registry, StoreEntityCounters storeEntityCounters ) public EntityCountMetrics( MetricRegistry registry, Supplier<StoreEntityCounters> storeEntityCountersSupplier )
{ {
this.registry = registry; this.registry = registry;
this.storeEntityCounters = storeEntityCounters; this.storeEntityCountersSupplier = storeEntityCountersSupplier;
} }


@Override @Override
public void start() public void start()
{ {
registry.register( COUNTS_NODE, (Gauge<Long>) storeEntityCounters::nodes ); StoreEntityCounters counters = storeEntityCountersSupplier.get();
registry.register( COUNTS_RELATIONSHIP, (Gauge<Long>) storeEntityCounters::relationships ); registry.register( COUNTS_NODE, (Gauge<Long>) counters::nodes );
registry.register( COUNTS_PROPERTY, (Gauge<Long>) storeEntityCounters::properties ); registry.register( COUNTS_RELATIONSHIP, (Gauge<Long>) counters::relationships );
registry.register( COUNTS_RELATIONSHIP_TYPE, (Gauge<Long>) storeEntityCounters::relationshipTypes ); registry.register( COUNTS_PROPERTY, (Gauge<Long>) counters::properties );
registry.register( COUNTS_RELATIONSHIP_TYPE, (Gauge<Long>) counters::relationshipTypes );
} }


@Override @Override
Expand Down
Expand Up @@ -25,9 +25,9 @@
import com.codahale.metrics.Gauge; import com.codahale.metrics.Gauge;
import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.MetricRegistry;


import java.io.IOException;
import java.util.SortedMap; import java.util.SortedMap;
import java.util.TreeMap; import java.util.TreeMap;
import java.util.function.Supplier;


import org.neo4j.kernel.impl.annotations.Documented; import org.neo4j.kernel.impl.annotations.Documented;
import org.neo4j.kernel.impl.api.DefaultTransactionTracer; import org.neo4j.kernel.impl.api.DefaultTransactionTracer;
Expand All @@ -53,15 +53,15 @@ public class LogRotationMetrics extends LifecycleAdapter


private final MetricRegistry registry; private final MetricRegistry registry;
private final Monitors monitors; private final Monitors monitors;
private final LogRotationMonitor logRotationMonitor; private final Supplier<LogRotationMonitor> logRotationMonitorSupplier;
private final DefaultTransactionTracer.Monitor listener; private final DefaultTransactionTracer.Monitor listener;


public LogRotationMetrics( EventReporter reporter, MetricRegistry registry, public LogRotationMetrics( EventReporter reporter, MetricRegistry registry,
Monitors monitors, LogRotationMonitor logRotationMonitor ) Monitors monitors, Supplier<LogRotationMonitor> logRotationMonitorSupplier )
{ {
this.registry = registry; this.registry = registry;
this.monitors = monitors; this.monitors = monitors;
this.logRotationMonitor = logRotationMonitor; this.logRotationMonitorSupplier = logRotationMonitorSupplier;
this.listener = durationMillis -> this.listener = durationMillis ->
{ {
final SortedMap<String,Gauge> gauges = new TreeMap<>(); final SortedMap<String,Gauge> gauges = new TreeMap<>();
Expand All @@ -75,9 +75,10 @@ public void start()
{ {
monitors.addMonitorListener( listener ); monitors.addMonitorListener( listener );


registry.register( LOG_ROTATION_EVENTS, (Gauge<Long>) logRotationMonitor::numberOfLogRotationEvents ); LogRotationMonitor monitor = this.logRotationMonitorSupplier.get();
registry.register( LOG_ROTATION_EVENTS, (Gauge<Long>) monitor::numberOfLogRotationEvents );
registry.register( LOG_ROTATION_TOTAL_TIME, registry.register( LOG_ROTATION_TOTAL_TIME,
(Gauge<Long>) logRotationMonitor::logRotationAccumulatedTotalTimeMillis ); (Gauge<Long>) monitor::logRotationAccumulatedTotalTimeMillis );
} }


@Override @Override
Expand Down

0 comments on commit 36c60a7

Please sign in to comment.