private MetricReporter loadMetricReporter(ConfigRegistry configRegistry) { String reporterName = configRegistry.getConfigOrDefault(METRIC_REPORTER_NAME, DEFAULT_METRIC_REPORTER_NAME); // Look for MetricProvider implementations Iterator<MetricReporter> metricReporters = ServiceLoader.load(MetricReporter.class).iterator(); while (metricReporters.hasNext()) { MetricReporter temp = metricReporters.next(); if (reporterName != null && reporterName.equalsIgnoreCase(temp.getName())) { return temp; } } return new NoOpMetricReporter(); }
@Override public void beforeRunProgram(boolean service) { if (DefaultMetricRegistry.getInstance() == null) { ConfigRegistry configRegistry = ConfigRegistry.getInstance(); if (!configRegistry.getAsBoolean(CONFIG_METRICS_ENABLED)) { // Create default MetricRegistry with NoOpMetricProvider DefaultMetricRegistry.setInstance(new MetricRegistry(new NoOpMetricProvider())); return; } //load metric provider configured MetricProvider metricProvider = loadMetricProvider(configRegistry); // Initialize Metric Provider metricProvider.init(); // Create default MetricRegistry DefaultMetricRegistry.setInstance(new MetricRegistry(metricProvider)); // Register Ballerina specific metrics registerBallerinaMetrics(); //load metric reporter configured MetricReporter reporter = loadMetricReporter(configRegistry); //initialize metric reporter try { reporter.init(); } catch (InvalidConfigurationException e) { consoleError.println("Invalid configuration error when initializing metrics reporter. " + e.getMessage()); } // Add Metrics Observer ObserveUtils.addObserver(new BallerinaMetricsObserver()); } }