如何解决带有Spring Boot的千分尺添加自定义指标以计算用户注册
添加计数用户注册的自定义指标的最佳方法是什么? 这是这种情况:
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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。