Число используемых метрик dropwizard-источника данных пула Vertx отрицательно

У нас есть микро-сервис vertx для аутентификации клиентов на производстве. Мы используем dropwizard-метрики для отправки метрик в графит и используем Graphana для построения графика для данных временных рядов. Служба связывается с MySQL DB для транзакций, и мы используем C3P0 для пула соединений. Частота отправки данных в графит составляет 30 секунд. Я приложил код для того же. Максимальное количество запросов в минуту во время пикового трафика составляет 600.

Просматривая на графике, мы можем увидеть количество подключений, используемых в данный момент времени. Тем не менее, я не могу понять, почему значение является отрицательным. Если соединение не используется, я полагаю, что на графике должно быть указано число используемых 0.

Может кто-нибудь объяснить, что означает отрицательное значение? Любое объяснение будет высоко ценится.

Я приложил скриншот для того же

Прилагается конфигурация vertx.

public class ApplicationModule extends AbstractModule {

@Override
protected void configure() {
    VertxOptions vertxOptions = new VertxOptions()
        .setMetricsOptions(new DropwizardMetricsOptions()
            .setEnabled(true)
            .addMonitoredHttpServerUri(new Match().setValue("/*").setType(MatchType.REGEX))
            .setRegistryName(CommonConstants.METRICS_REGISTRY_NAME))
        .setMaxWorkerExecuteTime((long) 1.8e+12); // 30 minutes in nanosecond
    Vertx vertx = Vertx.vertx(vertxOptions);
    bind(Vertx.class).toInstance(vertx);
    bind(MetricRegistry.class).toInstance(SharedMetricRegistries.getOrCreate(CommonConstants.METRICS_REGISTRY_NAME));
}

}

Прикреплен код для отправки метрик в Graphite.

public class MetricsVerticle extends AbstractVerticle {
private static final Logger LOGGER = LoggerFactory.getLogger(MetricsVerticle.class);
private final MetricRegistry registry;
private final String env;
private final Graphite graphite;
private final GraphiteReporter reporter;

@Inject
public MetricsVerticle(MetricRegistry registry, 
    @Named(GRAPHITE_HOST) String host, 
    @Named(GRAPHITE_PORT) String port, 
    @Named(ENVIRONMENT_NAME) String env) {
    this.registry = registry;
    this.env = env;
    this.graphite = new Graphite(new InetSocketAddress(host, Integer.parseInt(port)));
    this.reporter = buildGraphiteReporter();
}

@Override
public void start() throws Exception {
    sendMetricsToGraphite();
    LOGGER.info("Deployed MetricsVerticle");
}

@Override
public void stop() {
    try {
        LOGGER.info("----- Stopping Graphite reporter -----");
        reporter.stop();
    } catch (Exception e) {
        LOGGER.error(e.getMessage(), e);
    }
}

private void sendMetricsToGraphite() {
    LOGGER.info("----- Streaming metrics to Graphite -----");
    reporter.start(30, TimeUnit.SECONDS);
}

private GraphiteReporter buildGraphiteReporter() {
    LOGGER.info("----- Registering Graphite as metrics consumer -----");
    return GraphiteReporter.forRegistry(registry)
        .prefixedWith("in.hopscotch.services.abtest") 
        .convertRatesTo(TimeUnit.SECONDS)
        .convertDurationsTo(TimeUnit.MILLISECONDS)
        .build(graphite);
}

}

0 ответов

Другие вопросы по тегам