Search in sources :

Example 1 with MetricsConfig

use of org.apache.samza.config.MetricsConfig in project samza by apache.

the class DiagnosticsUtil method createDiagnosticsStream.

public static void createDiagnosticsStream(Config config) {
    if (!new JobConfig(config).getDiagnosticsEnabled()) {
        return;
    }
    // if diagnostics is enabled, create diagnostics stream if it doesnt exist
    String diagnosticsSystemStreamName = new MetricsConfig(config).getMetricsSnapshotReporterStream(MetricsConfig.METRICS_SNAPSHOT_REPORTER_NAME_FOR_DIAGNOSTICS).orElseThrow(() -> new ConfigException("Missing required config: " + String.format(MetricsConfig.METRICS_SNAPSHOT_REPORTER_STREAM, MetricsConfig.METRICS_SNAPSHOT_REPORTER_NAME_FOR_DIAGNOSTICS)));
    SystemStream diagnosticsSystemStream = StreamUtil.getSystemStreamFromNames(diagnosticsSystemStreamName);
    SystemConfig systemConfig = new SystemConfig(config);
    SystemAdmin diagnosticsSysAdmin = systemConfig.getSystemFactories().get(diagnosticsSystemStream.getSystem()).getAdmin(diagnosticsSystemStream.getSystem(), config, DiagnosticsUtil.class.getSimpleName());
    StreamSpec diagnosticsStreamSpec = new StreamSpec(DIAGNOSTICS_STREAM_ID, diagnosticsSystemStream.getStream(), diagnosticsSystemStream.getSystem(), new StreamConfig(config).getStreamProperties(DIAGNOSTICS_STREAM_ID));
    log.info("Creating diagnostics stream {}", diagnosticsSystemStream.getStream());
    diagnosticsSysAdmin.start();
    if (diagnosticsSysAdmin.createStream(diagnosticsStreamSpec)) {
        log.info("Created diagnostics stream {}", diagnosticsSystemStream.getStream());
    } else {
        log.info("Diagnostics stream {} already exists", diagnosticsSystemStream.getStream());
    }
    diagnosticsSysAdmin.stop();
}
Also used : StreamSpec(org.apache.samza.system.StreamSpec) SystemConfig(org.apache.samza.config.SystemConfig) SystemStream(org.apache.samza.system.SystemStream) StreamConfig(org.apache.samza.config.StreamConfig) ConfigException(org.apache.samza.config.ConfigException) SystemAdmin(org.apache.samza.system.SystemAdmin) JobConfig(org.apache.samza.config.JobConfig) MetricsConfig(org.apache.samza.config.MetricsConfig)

Example 2 with MetricsConfig

use of org.apache.samza.config.MetricsConfig in project samza by apache.

the class DiagnosticsUtil method buildDiagnosticsManager.

/**
 * Create a {@link DiagnosticsManager} for the given jobName, jobId, containerId, and execEnvContainerId, if
 * diagnostics is enabled.
 * @param executionEnvContainerId ID assigned to the container by the cluster manager (e.g. YARN)
 * @param samzaEpochId ID assigned to the job deployment attempt by the cluster manager
 */
public static Optional<DiagnosticsManager> buildDiagnosticsManager(String jobName, String jobId, JobModel jobModel, String containerId, Optional<String> executionEnvContainerId, Optional<String> samzaEpochId, Config config) {
    JobConfig jobConfig = new JobConfig(config);
    MetricsConfig metricsConfig = new MetricsConfig(config);
    Optional<DiagnosticsManager> diagnosticsManagerOptional = Optional.empty();
    if (jobConfig.getDiagnosticsEnabled()) {
        ClusterManagerConfig clusterManagerConfig = new ClusterManagerConfig(config);
        int containerMemoryMb = clusterManagerConfig.getContainerMemoryMb();
        int containerNumCores = clusterManagerConfig.getNumCores();
        long maxHeapSizeBytes = Runtime.getRuntime().maxMemory();
        int containerThreadPoolSize = jobConfig.getThreadPoolSize();
        String taskClassVersion = Util.getTaskClassVersion(config);
        String samzaVersion = Util.getSamzaVersion();
        String hostName = Util.getLocalHost().getHostName();
        Optional<String> diagnosticsReporterStreamName = metricsConfig.getMetricsSnapshotReporterStream(MetricsConfig.METRICS_SNAPSHOT_REPORTER_NAME_FOR_DIAGNOSTICS);
        if (!diagnosticsReporterStreamName.isPresent()) {
            throw new ConfigException("Missing required config: " + String.format(MetricsConfig.METRICS_SNAPSHOT_REPORTER_STREAM, MetricsConfig.METRICS_SNAPSHOT_REPORTER_NAME_FOR_DIAGNOSTICS));
        }
        SystemStream diagnosticsSystemStream = StreamUtil.getSystemStreamFromNames(diagnosticsReporterStreamName.get());
        // Create a SystemProducer for DiagnosticsManager. This producer is used by the DiagnosticsManager
        // to write to the same stream as the MetricsSnapshotReporter called `diagnosticsreporter`.
        Optional<String> diagnosticsSystemFactoryName = new SystemConfig(config).getSystemFactory(diagnosticsSystemStream.getSystem());
        if (!diagnosticsSystemFactoryName.isPresent()) {
            throw new SamzaException("Missing factory in config for system " + diagnosticsSystemStream.getSystem());
        }
        SystemFactory systemFactory = ReflectionUtil.getObj(diagnosticsSystemFactoryName.get(), SystemFactory.class);
        SystemProducer systemProducer = systemFactory.getProducer(diagnosticsSystemStream.getSystem(), config, new MetricsRegistryMap(), DiagnosticsUtil.class.getSimpleName());
        DiagnosticsManager diagnosticsManager = new DiagnosticsManager(jobName, jobId, jobModel.getContainers(), containerMemoryMb, containerNumCores, new StorageConfig(config).getNumPersistentStores(), maxHeapSizeBytes, containerThreadPoolSize, containerId, executionEnvContainerId.orElse(""), samzaEpochId.orElse(""), taskClassVersion, samzaVersion, hostName, diagnosticsSystemStream, systemProducer, Duration.ofMillis(new TaskConfig(config).getShutdownMs()), jobConfig.getAutosizingEnabled(), config);
        diagnosticsManagerOptional = Optional.of(diagnosticsManager);
    }
    return diagnosticsManagerOptional;
}
Also used : SystemConfig(org.apache.samza.config.SystemConfig) SystemFactory(org.apache.samza.system.SystemFactory) DiagnosticsManager(org.apache.samza.diagnostics.DiagnosticsManager) StorageConfig(org.apache.samza.config.StorageConfig) SystemStream(org.apache.samza.system.SystemStream) SystemProducer(org.apache.samza.system.SystemProducer) ConfigException(org.apache.samza.config.ConfigException) TaskConfig(org.apache.samza.config.TaskConfig) SamzaException(org.apache.samza.SamzaException) JobConfig(org.apache.samza.config.JobConfig) MetricsConfig(org.apache.samza.config.MetricsConfig) ClusterManagerConfig(org.apache.samza.config.ClusterManagerConfig) MetricsRegistryMap(org.apache.samza.metrics.MetricsRegistryMap)

Example 3 with MetricsConfig

use of org.apache.samza.config.MetricsConfig in project samza by apache.

the class BaseReadWriteUpdateTable method init.

@Override
public void init(Context context) {
    MetricsConfig metricsConfig = new MetricsConfig(context.getJobContext().getConfig());
    clock = metricsConfig.getMetricsTimerEnabled() ? () -> System.nanoTime() : () -> 0L;
    metrics = new TableMetrics(context, this, tableId);
}
Also used : TableMetrics(org.apache.samza.table.utils.TableMetrics) MetricsConfig(org.apache.samza.config.MetricsConfig)

Example 4 with MetricsConfig

use of org.apache.samza.config.MetricsConfig in project samza by apache.

the class AsyncRateLimitedTable method init.

@Override
public void init(Context context) {
    table.init(context);
    MetricsConfig metricsConfig = new MetricsConfig(context.getJobContext().getConfig());
    if (metricsConfig.getMetricsTimerEnabled()) {
        TableMetricsUtil tableMetricsUtil = new TableMetricsUtil(context, this, tableId);
        if (isReadRateLimited()) {
            readRateLimiter.setTimerMetric(tableMetricsUtil.newTimer("get-throttle-ns"));
        }
        if (isWriteRateLimited()) {
            writeRateLimiter.setTimerMetric(tableMetricsUtil.newTimer("put-throttle-ns"));
        }
        if (isUpdateRateLimited()) {
            updateRateLimiter.setTimerMetric(tableMetricsUtil.newTimer("update-throttle-ns"));
        }
    }
}
Also used : TableMetricsUtil(org.apache.samza.table.utils.TableMetricsUtil) MetricsConfig(org.apache.samza.config.MetricsConfig)

Example 5 with MetricsConfig

use of org.apache.samza.config.MetricsConfig in project samza by apache.

the class JobCoordinatorLaunchUtil method runJobCoordinator.

private static void runJobCoordinator(String jobCoordinatorClassName, MetricsRegistryMap metrics, MetadataStore metadataStore, Config finalConfig) {
    JobCoordinatorFactory jobCoordinatorFactory = ReflectionUtil.getObj(jobCoordinatorClassName, JobCoordinatorFactory.class);
    JobCoordinator jobCoordinator = jobCoordinatorFactory.getJobCoordinator(JOB_COORDINATOR_PROCESSOR_ID_PLACEHOLDER, finalConfig, metrics, metadataStore);
    Map<String, MetricsReporter> metricsReporters = MetricsReporterLoader.getMetricsReporters(new MetricsConfig(finalConfig), CoordinationConstants.JOB_COORDINATOR_CONTAINER_NAME);
    metricsReporters.values().forEach(metricsReporter -> metricsReporter.register(CoordinationConstants.JOB_COORDINATOR_CONTAINER_NAME, metrics));
    metricsReporters.values().forEach(MetricsReporter::start);
    CountDownLatch waitForShutdownLatch = new CountDownLatch(1);
    jobCoordinator.setListener(new NoProcessorJobCoordinatorListener(waitForShutdownLatch));
    jobCoordinator.start();
    addShutdownHook(jobCoordinator);
    try {
        waitForShutdownLatch.await();
    } catch (InterruptedException e) {
        String errorMessage = "Error while waiting for coordinator to complete";
        LOG.error(errorMessage, e);
        throw new SamzaException(errorMessage, e);
    } finally {
        metricsReporters.values().forEach(MetricsReporter::stop);
    }
}
Also used : NoProcessorJobCoordinatorListener(org.apache.samza.coordinator.NoProcessorJobCoordinatorListener) MetricsReporter(org.apache.samza.metrics.MetricsReporter) JobCoordinatorFactory(org.apache.samza.coordinator.JobCoordinatorFactory) JobCoordinator(org.apache.samza.coordinator.JobCoordinator) CountDownLatch(java.util.concurrent.CountDownLatch) SamzaException(org.apache.samza.SamzaException) MetricsConfig(org.apache.samza.config.MetricsConfig)

Aggregations

MetricsConfig (org.apache.samza.config.MetricsConfig)12 MetricsRegistryMap (org.apache.samza.metrics.MetricsRegistryMap)5 SamzaException (org.apache.samza.SamzaException)4 MetricsReporter (org.apache.samza.metrics.MetricsReporter)4 SystemStream (org.apache.samza.system.SystemStream)4 JobConfig (org.apache.samza.config.JobConfig)3 CountDownLatch (java.util.concurrent.CountDownLatch)2 ConfigException (org.apache.samza.config.ConfigException)2 SystemConfig (org.apache.samza.config.SystemConfig)2 JobCoordinator (org.apache.samza.coordinator.JobCoordinator)2 JobCoordinatorFactory (org.apache.samza.coordinator.JobCoordinatorFactory)2 NoProcessorJobCoordinatorListener (org.apache.samza.coordinator.NoProcessorJobCoordinatorListener)2 SystemFactory (org.apache.samza.system.SystemFactory)2 ImmutableMap (com.google.common.collect.ImmutableMap)1 Duration (java.time.Duration)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 Pattern (java.util.regex.Pattern)1 MockStreamApplication (org.apache.samza.application.MockStreamApplication)1