问题描述
添加计数用户注册的自定义指标的最佳方法是什么? 这是这种情况:
class Registration {
Long id;
boolean activated;
}
及其存储库
interface RegistrationRepository extends JpaRepository<Registration,Long> {
Long countByActivated(boolean isActivated);
}
访问http://localhost:8080/actuator/metrics/user.registrations
我想要3个指标:
1-使用registrationRepository.count()
2-使用registrationRepository.countByActivated(true)
:通过http://localhost:8080/actuator/metrics/user.registrations?tag=activated:true
3-使用registrationRepository.countByActivated(false)
通过http://localhost:8080/actuator/metrics/user.registrations?tag=activated:false
的未激活注册的度量标准
问题是我无法使用io.micrometer.core.instrument.Counter
接口,因为在重新启动应用程序时计数器会重置为0。
解决方法
您可以使用io.micrometer.core.instrument.FunctionCounter
。
您可以在FunctionCounter.Builder
中提供回调:
FunctionCounter counter FunctionCounter.builder(name,meterBean,MeterBean::getValue)
.description(description)
.baseUnit(unit)
.tags(tags)
.register(meterRegistry)
}
MeterBean
可以是一个简单的bean,例如:
public interface MeterBean {
private double value;
public double getValue() { return this.value };
public void setValue() { this.value = callTheMethodUWantToSetTheValue() }
}
在部署新版本的应用程序时,该值仍会重置为0,但是您可以在应用程序引导时设置此bean的值。因此,应避免使用千分尺报告0。