/** * Use {@link Counter#builder(String)}. * * @param id The {@link MetricId}. * @return A existing or a new {@link Counter} metric. */ public Counter counter(MetricId id) { return getOrCreate(id, Counter.class, () -> metricProvider.newCounter(id)); }
/** * Use {@link Gauge#builder(String)}. * * @param id The {@link MetricId}. * @param statisticConfigs {@link StatisticConfig statistic configurations} to summarize gauge values. * @return A existing or a new {@link Gauge} metric. */ public Gauge gauge(MetricId id, StatisticConfig... statisticConfigs) { return getOrCreate(id, Gauge.class, () -> metricProvider.newGauge(id, statisticConfigs)); }
/** * Use {@link PolledGauge#builder(String, Object, ToDoubleFunction)}. * * @param id The {@link MetricId}. * @param obj State object used to compute a value. * @param valueFunction Function that produces an instantaneous gauge value from the state object. * @param <T> The type of the state object from which the gauge value is extracted. * @return A existing or a new {@link PolledGauge} metric. */ public <T> PolledGauge polledGauge(MetricId id, T obj, ToDoubleFunction<T> valueFunction) { return getOrCreate(id, PolledGauge.class, () -> metricProvider.newPolledGauge(id, obj, valueFunction)); }
@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()); } }
private MetricProvider loadMetricProvider(ConfigRegistry configRegistry) { String providerName = configRegistry.getConfigOrDefault(METRIC_PROVIDER_NAME, DEFAULT_METRIC_PROVIDER_NAME); // Look for MetricProvider implementations Iterator<MetricProvider> metricProviders = ServiceLoader.load(MetricProvider.class).iterator(); while (metricProviders.hasNext()) { MetricProvider temp = metricProviders.next(); if (providerName != null && providerName.equalsIgnoreCase(temp.getName())) { return temp; } } return new NoOpMetricProvider(); }
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(); }
public Counter build() { return DefaultMetricRegistry.getInstance().getMetricProvider(). newCounter(new MetricId(name, description, tags)); }
@Override public Gauge build() { return DefaultMetricRegistry.getInstance().getMetricProvider(). newGauge(new MetricId(name, description, tags), statisticConfigs.toArray( new StatisticConfig[statisticConfigs.size()])); } }
@Override public PolledGauge build() { return DefaultMetricRegistry.getInstance().getMetricProvider(). newPolledGauge(new MetricId(name, description, tags), obj, valueFunction); } }