Я использую Spring Boot 2 + Influx + Spring AOP для сбора метрик в моей системе.
ТАК, у меня есть:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-influx</artifactId>
</dependency>
У меня есть класс, который собирает эти метрики и отправляет их в поток, см .:
@Aspect
@Configuration
@RequiredArgsConstructor
@Slf4j
public class TimerCounterAspect {
private final MicrometerFactory micrometerFactory;
@Around("@annotation(br.com.myproject.TimerCount)")
public Object around(ProceedingJoinPoint joinPoint) {
Timer.Sample sample = micrometerFactory.starTimer();
micrometerFactory.counterIncrement(joinPoint.getTarget().getClass());
Object oReturn;
try {
oReturn = joinPoint.proceed();
} catch (Throwable throwable) {
micrometerFactory.counterErrorIncrement(joinPoint.getTarget().getClass());
log.error("Falha ao processar JoinPoint", throwable);
throw new RuntimeException(throwable);
} finally {
micrometerFactory.stopTimer(joinPoint.getTarget().getClass(), sample);
}
return oReturn;
}
}
Когда я посылаю какое-то значение в приток, это работает очень хорошо, но Spring продолжает отправлять «нулевые значения» без моего разрешения, заполняя мою базу данных притока. Таким образом, мой InfliffDB показывает что-то вроде этого:
0
0
0
334 (My sent value)
0
0
0
0
0