private void startObservation(ObserverContext observerContext, String[] mainTags) { observerContext.addProperty(PROPERTY_START_TIME, System.nanoTime()); String connectorName = observerContext.getConnectorName(); Set<Tag> mainTagSet = new HashSet<>(mainTags.length); try { // Tags are validated (both key and value should not be null) Tags.tags(mainTagSet, mainTags); getInprogressGauge(connectorName, mainTagSet).increment(); } catch (RuntimeException e) { handleError(connectorName, mainTagSet, e); } }
@Override public void startClientObservation(ObserverContext observerContext) { String[] mainTags = {TAG_KEY_ACTION, observerContext.getActionName()}; startObservation(observerContext, mainTags); }
@Override public void stopClientObservation(ObserverContext observerContext) { if (!observerContext.isStarted()) { // Do not collect metrics if the observation hasn't started return; } String[] mainTags = {TAG_KEY_ACTION, observerContext.getActionName()}; stopObservation(observerContext, mainTags); }
Long startTime = (Long) observerContext.getProperty(PROPERTY_START_TIME); long duration = System.nanoTime() - startTime; getInprogressGauge(connectorName, mainTagSet).decrement(); metricRegistry.gauge(new MetricId(connectorName + "_response_time_seconds", "Response Time", allTags), responseTimeStatisticConfigs).setValue(duration / 1E9); int httpStatusCode = Integer.parseInt(statusCode); if (httpStatusCode > 0) { incrementHttpStatusCodeCounters(httpStatusCode, connectorName, mainTagSet); handleError(connectorName, allTags, e);
@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()); } }
@Override public void startServerObservation(ObserverContext observerContext) { String[] mainTags = {TAG_KEY_SERVICE, observerContext.getServiceName(), TAG_KEY_RESOURCE, observerContext.getResourceName()}; startObservation(observerContext, mainTags); }
@Override public void stopServerObservation(ObserverContext observerContext) { if (!observerContext.isStarted()) { // Do not collect metrics if the observation hasn't started return; } String[] mainTags = {TAG_KEY_SERVICE, observerContext.getServiceName(), TAG_KEY_RESOURCE, observerContext.getResourceName()}; stopObservation(observerContext, mainTags); }