Используйте @Timed для наследуемых функций - PullRequest
0 голосов
/ 28 сентября 2018

Мы используем абстрактные классы для таких сервисов, как этот псевдокод

abstract class AbstractApiService {
    @Timed(value="get", useClassPrefix=true)
    def get(Long id) {
       ... returns sth ....
    }

    @Timed(value="create", useClassPrefix=true)
    def create(Map params) {
        ... returns sth ....
    }
}

Существуют бины, которые наследуют AbstractApiService и предоставляют такие функции, как создание, удаление и обновление объектов, таких как

class UserAccountService extends AbstractApiService {
    ... code ....
}

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

Приложение основано на Grails 3.3.8

build. Gradle:

compile 'com.moelholm:prometheus-spring-boot-starter:1.0.2' 
compile 'io.dropwizard.metrics:metrics-core:4.0.0-alpha2'
compile 'io.dropwizard.metrics:metrics-jvm:4.0.0-alpha2' 
compile 'org.grails.plugins:dropwizard-metrics:1.0.0.M2'

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я создал собственное ручное решение https://gist.github.com/michmzr/1e03534bc5fb6df89065f6964acf9c71

0 голосов
/ 28 сентября 2018

К сожалению, я считаю, что вам придется определять аннотацию @Timed для каждого метода, который вы хотите отслеживать.Я не думаю, что код аннотации будет раскручивать отдельную метрику для каждого конкретного класса.

...