Пользовательский счетчик с использованием прометея не виден на / привод / прометей - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь добавить пользовательские метрики в мое приложение весенней загрузки. Я просмотрел множество примеров и до сих пор не могу добавить пользовательский счетчик.

application.properties

management.endpoint.metrics.enabled=true
management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true

код

static final Counter requests = 
Counter.build().namespace("java").name("requests_total").help("Total requests.")
.register();

@CrossOrigin
@GetMapping("/test")
public int processRequest() {
    requests.inc();
    return (int) requests.get();
}

Я вижу увеличение значения счетчика при доступе к API. Проблема в том, что я не могу найти свои недавно созданные метрики на http://localhost:8080/actuator/prometheus и на странице Prometheus :9090. Поэтому я считаю, что счетчик не регистрируется (??). Что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Вы могли бы сделать что-то вроде этого. Spring автоматически найдет реестр сборщика и подключит его.

@Component
public class CustomeCounter {

Counter mycounter;

public CustomCounter(CollectorRegistry registry) {
 mycounter = Counter.build().name("test").help("test").register(registry);
}

public void incrementCounter() {
 mycounter.inc();
}
}


@Component
public class Test{

@Resource
private CustomCounter customCounter;

public void testInc() {
customCounter.incrementCounter();
}
}
0 голосов
/ 13 октября 2019

Похоже, вы используете Java-интерфейс Prometheus напрямую. Созданный вами счетчик зарегистрирован по умолчанию CollectorRegistry API-интерфейса Prometheus Java, но он не зарегистрирован в Micrometer, так как он создает собственный экземпляр CollectorRegistry, поэтому ваш счетчик там не отображается.

Вы должныиспользовать API Micrometer Counter вместо прямого использования API Java Prometheus. Это дает дополнительное преимущество, заключающееся в том, что вы можете обменивать свой бэкэнд мониторинга без каких-либо изменений в коде вашего инструментария.

Кроме того, кажется, что вы хотели бы измерить HTTP-запросы. Обычно они рассчитываются автоматически. Найдите конечную точку /actuator/prometheus для семейства метрик http_server_requests_seconds_[count,sum,max].

...