Я пытаюсь добавить метрики к простому Java-приложению, используя метрики codahale. Я хотел бы использовать аннотацию @Timed, но мне непонятно, какой MetricRegistry он использует или как сказать, какой MetricRegistry использовать. Приложение представляет собой обычное приложение Java 8, построенное с помощью Maven 3, no Spring, без спящего режима.
Я не могу найти документацию о том, как реализовать @Timed в документации dropwizard: https://dropwizard.github.io/metrics/3.1.0/manual/
Я добавил эти зависимости:
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.codahale.metrics</groupId>
<artifactId>metrics-annotation</artifactId>
<version>3.0.2</version>
</dependency>
Когда я использую программный вызов Timer, я могу получать отчеты, потому что знаю, какой MetricsRegistry используется:
static final MetricRegistry metrics = new MetricRegistry();
private void update() throws SQLException {
Timer.Context time = metrics.timer("domainobject.update").time();
try {
[...]
} finally {
time.stop();
}
}
Но когда я использую гораздо более элегантную аннотацию @Timed, я понятия не имею, какой реестр используется, и поэтому я не могу создать репортера, а это значит, что я не могу сообщить о показателях (я даже не уверен, что это действительно что-то делает):
@Timed(name = "domainobject.update")
private void update() throws SQLException {
[...]
}
Просьба сообщить, как сделать аннотации @Timed и другие метрики в обычном Java-приложении.
Дополнительная информация: Причина, по которой я нахожу это странным, заключается в том, что я добавил структуру Lombok, и аннотации @Slf4j работают. Я добавил Lombok как зависимость в maven pom.xml:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.14.8</version>
</dependency>
И я могу использовать аннотацию класса @Sl4fj для добавления регистратора в класс без загромождения переменных-членов:
@Slf4j
public class App {
public void logsome(){
log.info("Hello there");
}
}
Итак, если это возможно, просто добавив зависимость, я считаю, что просто не хватает зависимости или конфигурации, чтобы получить работу аннотации codahale @Timed, как описано выше.
(кстати, проверьте Ломбок, это облегчит вашу жизнь: http://projectlombok.org/)