@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()); } }