赞
踩
endpoints:
enabled: false
metrics:
enabled: true
正如以上片段所示,endpoints.enabled
设置为false就能禁用Actuator的全部端点,然后将endpoints.metrics.enabled
设置为true重新启用/metrics
端点。
你可能还想定义自己的度量,用来捕获应用程序中的特定信息。
比方说,我们想要知道用户往阅读列表里保存了多少次图书,最简单的方法就是在每次调用ReadingListController
的addToReadingList()
方法时增加计数器值。计数器很容易实现,但这个不断变化的总计值如何同/metrics
端点发布的度量信息一起发布出来呢?
再假设我们想要获得最后保存图书的时间戳。时间戳可以通过调用System.currentTime-Millis()
来获取,但如何在/metrics
端点里报告该时间戳呢?
实际上,自动配置允许Actuator创建CounterService
的实例,并将其注册为Spring的应用程序上下文中的Bean。CounterService
这个接口里定义了三个方法,分别用来增加、减少或重置 特定名称的度量值,代码如下:
package org.springframework.boot.actuate.metrics;
public interface CounterService {
void increment(String metricName);
void decrement(String metricName);
void reset(String metricName);
}
Actuator的自动配置还会配置一个GaugeService
类型的Bean。该接口与CounterService
类似,能将某个值记录到特定名称的度量值里。GaugeService
看起来是这样的:
package org.springframework.boot.actuate.metrics;
public interface GaugeService {
void submit(String metricName, double value);
}
你无需实现这些接口。Spring Boot已经提供了两者的实现。我们所要做的就是把它们的实例注入所需的Bean,在适当的时候调用其中的方法,更新想要的度量值。
针对上文提到的需求,我们需要把CounterService
和GaugeService Bean
注入Reading-ListController
,然后在addToReadingList()
方法里调用其中的方法。
使用注入的CounterService
和GaugeService
@Controller @RequestMapping("/") @ConfigurationProperties("amazon") public class ReadingListController { ... private CounterService counterService; @Autowired public ReadingListController( ReadingListRepository readingListRepository, AmazonProperties amazonProperties, CounterService counterService, GaugeService gaugeService) { this.readingListRepository = readingListRepository; this.amazonProperties = amazonProperties; this.counterService = counterService;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。