public MetricsPlugin(NodeEngineImpl nodeEngine) { this(nodeEngine.getLogger(MetricsPlugin.class), nodeEngine.getMetricsRegistry(), nodeEngine.getProperties()); }
public MetricsPlugin(NodeEngineImpl nodeEngine) { this(nodeEngine.getLogger(MetricsPlugin.class), nodeEngine.getMetricsRegistry(), nodeEngine.getProperties()); }
public TransactionManagerServiceImpl(NodeEngineImpl nodeEngine) { this.nodeEngine = nodeEngine; this.logger = nodeEngine.getLogger(TransactionManagerService.class); this.finalizeExceptionHandler = logAllExceptions(logger, "Error while rolling-back tx!", Level.WARNING); nodeEngine.getMetricsRegistry().scanAndRegister(this, "transactions"); }
/** * Returns the {@link EventServiceSegment} for the {@code service}. If the segment is {@code null} and * {@code forceCreate} is {@code true}, the segment is created and registered with the {@link MetricsRegistry}. * * @param service the service of the segment * @param forceCreate whether the segment should be created in case there is no segment * @return the segment for the service or null if there is no segment and {@code forceCreate} is {@code false} */ public EventServiceSegment getSegment(String service, boolean forceCreate) { EventServiceSegment segment = segments.get(service); if (segment == null && forceCreate) { // we can't make use of the ConcurrentUtil; we need to register the segment to the metricsRegistry in case of creation EventServiceSegment newSegment = new EventServiceSegment(service, nodeEngine.getService(service)); EventServiceSegment existingSegment = segments.putIfAbsent(service, newSegment); if (existingSegment == null) { segment = newSegment; nodeEngine.getMetricsRegistry().scanAndRegister(newSegment, "event.[" + service + "]"); } else { segment = existingSegment; } } return segment; }
/** * Returns the {@link EventServiceSegment} for the {@code service}. If the segment is {@code null} and * {@code forceCreate} is {@code true}, the segment is created and registered with the {@link MetricsRegistry}. * * @param service the service of the segment * @param forceCreate whether the segment should be created in case there is no segment * @return the segment for the service or null if there is no segment and {@code forceCreate} is {@code false} */ public EventServiceSegment getSegment(String service, boolean forceCreate) { EventServiceSegment segment = segments.get(service); if (segment == null && forceCreate) { // we can't make use of the ConcurrentUtil; we need to register the segment to the metricsRegistry in case of creation EventServiceSegment newSegment = new EventServiceSegment(service, nodeEngine.getService(service)); EventServiceSegment existingSegment = segments.putIfAbsent(service, newSegment); if (existingSegment == null) { segment = newSegment; nodeEngine.getMetricsRegistry().scanAndRegister(newSegment, "event.[" + service + "]"); } else { segment = existingSegment; } } return segment; }
public TransactionManagerServiceImpl(NodeEngineImpl nodeEngine) { this.nodeEngine = nodeEngine; this.logger = nodeEngine.getLogger(TransactionManagerService.class); this.finalizeExceptionHandler = logAllExceptions(logger, "Error while rolling-back tx!", Level.WARNING); nodeEngine.getMetricsRegistry().scanAndRegister(this, "transactions"); }
public ClientEndpointManagerImpl(NodeEngine nodeEngine) { this.logger = nodeEngine.getLogger(ClientEndpointManager.class); this.eventService = nodeEngine.getEventService(); MetricsRegistry metricsRegistry = ((NodeEngineImpl) nodeEngine).getMetricsRegistry(); metricsRegistry.scanAndRegister(this, "client.endpoint"); }
private void registerMetrics() { MetricsRegistry metricsRegistry = node.nodeEngine.getMetricsRegistry(); metricsRegistry.scanAndRegister(clusterClock, "cluster.clock"); metricsRegistry.scanAndRegister(clusterHeartbeatManager, "cluster.heartbeat"); metricsRegistry.scanAndRegister(this, "cluster"); }
private void registerMetrics() { MetricsRegistry metricsRegistry = node.nodeEngine.getMetricsRegistry(); metricsRegistry.scanAndRegister(clusterClock, "cluster.clock"); metricsRegistry.scanAndRegister(clusterHeartbeatManager, "cluster.heartbeat"); metricsRegistry.scanAndRegister(this, "cluster"); }
public ClientEndpointManagerImpl(NodeEngine nodeEngine) { this.logger = nodeEngine.getLogger(ClientEndpointManager.class); this.eventService = nodeEngine.getEventService(); MetricsRegistry metricsRegistry = ((NodeEngineImpl) nodeEngine).getMetricsRegistry(); metricsRegistry.scanAndRegister(this, "client.endpoint"); }
@Override public ConnectionManager createConnectionManager(Node node, ServerSocketChannel serverSocketChannel) { NodeIOService ioService = new NodeIOService(node, node.nodeEngine); Networking networking = createNetworking(node, ioService); return new TcpIpConnectionManager( ioService, serverSocketChannel, node.loggingService, node.nodeEngine.getMetricsRegistry(), networking, node.getProperties()); }
@Override public ConnectionManager createConnectionManager(Node node, ServerSocketChannel serverSocketChannel) { NodeIOService ioService = new NodeIOService(node, node.nodeEngine); Networking networking = createNetworking(node, ioService); return new TcpIpConnectionManager( ioService, serverSocketChannel, node.loggingService, node.nodeEngine.getMetricsRegistry(), networking, node.getProperties()); }
public TaskletExecutionService(NodeEngineImpl nodeEngine, int threadCount) { this.hzInstanceName = nodeEngine.getHazelcastInstance().getName(); this.cooperativeWorkers = new CooperativeWorker[threadCount]; this.cooperativeThreadPool = new Thread[threadCount]; this.logger = nodeEngine.getLoggingService().getLogger(TaskletExecutionService.class); nodeEngine.getMetricsRegistry().newProbeBuilder() .withTag("module", "jet") .scanAndRegister(this); Arrays.setAll(cooperativeWorkers, i -> new CooperativeWorker()); Arrays.setAll(cooperativeThreadPool, i -> new Thread(cooperativeWorkers[i], String.format("hz.%s.jet.cooperative.thread-%d", hzInstanceName, i))); Arrays.stream(cooperativeThreadPool).forEach(Thread::start); for (int i = 0; i < cooperativeWorkers.length; i++) { nodeEngine.getMetricsRegistry().newProbeBuilder() .withTag("module", "jet") .withTag("cooperativeWorker", String.valueOf(i)) .scanAndRegister(cooperativeWorkers[i]); } }
/** * Complete local execution. If local execution was started, it should be * called after execution has completed. */ public void completeExecution(Throwable error) { assert executionFuture == null || executionFuture.isDone() : "If execution was begun, then completeExecution() should not be called before execution is done."; for (Tasklet tasklet : tasklets) { try { tasklet.close(); } catch (Throwable e) { logger.severe(jobNameAndExecutionId() + " encountered an exception in Processor.close(), ignoring it", e); } } for (ProcessorSupplier s : procSuppliers) { try { s.close(error); } catch (Throwable e) { logger.severe(jobNameAndExecutionId() + " encountered an exception in ProcessorSupplier.complete(), ignoring it", e); } } MetricsRegistry metricsRegistry = ((NodeEngineImpl) nodeEngine).getMetricsRegistry(); processors.forEach(metricsRegistry::deregister); tasklets.forEach(metricsRegistry::deregister); }
@Override public void init(NodeEngine nodeEngine, Properties properties) { this.publishers = getPublishers(); if (publishers.isEmpty()) { return; } logger.info("Configuring metrics collection, collection interval=" + config.getCollectionIntervalSeconds() + " seconds, retention=" + config.getRetentionSeconds() + " seconds, publishers=" + publishers.stream().map(MetricsPublisher::name).collect(joining(", ", "[", "]"))); ProbeRenderer renderer = new PublisherProbeRenderer(); scheduledFuture = nodeEngine.getExecutionService().scheduleWithRepetition("MetricsPublisher", () -> { if (paused) { logger.fine("Metrics not collected, service is paused."); return; } this.nodeEngine.getMetricsRegistry().render(renderer); for (MetricsPublisher publisher : publishers) { try { publisher.whenComplete(); } catch (Exception e) { logger.severe("Error completing publication for publisher " + publisher, e); } } }, 1, config.getCollectionIntervalSeconds(), TimeUnit.SECONDS); }
public HealthMonitor(Node node) { this.node = node; this.logger = node.getLogger(HealthMonitor.class); this.metricRegistry = node.nodeEngine.getMetricsRegistry(); this.monitorLevel = getHealthMonitorLevel(); this.thresholdMemoryPercentage = node.getProperties().getInteger(HEALTH_MONITORING_THRESHOLD_MEMORY_PERCENTAGE); this.thresholdCPUPercentage = node.getProperties().getInteger(HEALTH_MONITORING_THRESHOLD_CPU_PERCENTAGE); this.monitorThread = initMonitorThread(); this.healthMetrics = new HealthMetrics(); }
public HealthMonitor(Node node) { this.node = node; this.logger = node.getLogger(HealthMonitor.class); this.metricRegistry = node.nodeEngine.getMetricsRegistry(); this.monitorLevel = getHealthMonitorLevel(); this.thresholdMemoryPercentage = node.getProperties().getInteger(HEALTH_MONITORING_THRESHOLD_MEMORY_PERCENTAGE); this.thresholdCPUPercentage = node.getProperties().getInteger(HEALTH_MONITORING_THRESHOLD_CPU_PERCENTAGE); this.monitorThread = initMonitorThread(); this.healthMetrics = new HealthMetrics(); }
MigrationManager(Node node, InternalPartitionServiceImpl service, Lock partitionServiceLock) { this.node = node; this.nodeEngine = node.getNodeEngine(); this.partitionService = service; this.logger = node.getLogger(getClass()); this.partitionServiceLock = partitionServiceLock; migrationPlanner = new MigrationPlanner(node.getLogger(MigrationPlanner.class)); HazelcastProperties properties = node.getProperties(); partitionMigrationInterval = properties.getPositiveMillisOrDefault(GroupProperty.PARTITION_MIGRATION_INTERVAL, 0); partitionMigrationTimeout = properties.getMillis(GroupProperty.PARTITION_MIGRATION_TIMEOUT); fragmentedMigrationEnabled = properties.getBoolean(GroupProperty.PARTITION_FRAGMENTED_MIGRATION_ENABLED); partitionStateManager = partitionService.getPartitionStateManager(); ILogger migrationThreadLogger = node.getLogger(MigrationThread.class); String hzName = nodeEngine.getHazelcastInstance().getName(); migrationThread = new MigrationThread(this, hzName, migrationThreadLogger, migrationQueue); long migrationPauseDelayMs = TimeUnit.SECONDS.toMillis(MIGRATION_PAUSE_DURATION_SECONDS_ON_MIGRATION_FAILURE); ExecutionService executionService = nodeEngine.getExecutionService(); delayedResumeMigrationTrigger = new CoalescingDelayedTrigger( executionService, migrationPauseDelayMs, 2 * migrationPauseDelayMs, new Runnable() { @Override public void run() { resumeMigration(); } }); this.memberHeartbeatTimeoutMillis = properties.getMillis(GroupProperty.MAX_NO_HEARTBEAT_SECONDS); nodeEngine.getMetricsRegistry().scanAndRegister(stats, "partitions"); }
private Networking createNetworking(Node node, NodeIOService ioService) { ChannelInitializer initializer = node.getNodeExtension().createChannelInitializer(ioService); LoggingServiceImpl loggingService = node.loggingService; ChannelErrorHandler errorHandler = new TcpIpConnectionChannelErrorHandler(loggingService.getLogger(TcpIpConnectionChannelErrorHandler.class)); HazelcastProperties props = node.getProperties(); return new NioNetworking( new NioNetworking.Context() .loggingService(loggingService) .metricsRegistry(node.nodeEngine.getMetricsRegistry()) .threadNamePrefix(node.hazelcastInstance.getName()) .errorHandler(errorHandler) .inputThreadCount(props.getInteger(IO_INPUT_THREAD_COUNT)) .outputThreadCount(props.getInteger(IO_OUTPUT_THREAD_COUNT)) .balancerIntervalSeconds(props.getInteger(IO_BALANCER_INTERVAL_SECONDS)) .channelInitializer(initializer)); } }
private Networking createNetworking(Node node, NodeIOService ioService) { ChannelInitializer initializer = node.getNodeExtension().createChannelInitializer(ioService); LoggingServiceImpl loggingService = node.loggingService; ChannelErrorHandler errorHandler = new TcpIpConnectionChannelErrorHandler(loggingService.getLogger(TcpIpConnectionChannelErrorHandler.class)); HazelcastProperties props = node.getProperties(); return new NioNetworking( new NioNetworking.Context() .loggingService(loggingService) .metricsRegistry(node.nodeEngine.getMetricsRegistry()) .threadNamePrefix(node.hazelcastInstance.getName()) .errorHandler(errorHandler) .inputThreadCount(props.getInteger(IO_INPUT_THREAD_COUNT)) .outputThreadCount(props.getInteger(IO_OUTPUT_THREAD_COUNT)) .balancerIntervalSeconds(props.getInteger(IO_BALANCER_INTERVAL_SECONDS)) .channelInitializer(initializer)); } }