我需要使用测微计@Timed 注释来测量方法度量。因为它不适用于任意方法;我在 spring 配置中明确添加了 @TimedAspect 的配置。已经参考这篇文章以获得精确的配置注意:已经尝试为此添加一个单独的配置类,以及将 TimedAspect bean 作为我现有配置 bean 的一部分
然而,不幸的是它不起作用。Bean 已注册,并且从配置类调用在启动时成功通过。调试的时候发现的。但是,@Around 中的代码似乎永远不会执行。不会抛出任何错误;并且我能够在 /metrics 和 /prometheus 端点上查看默认的“系统”指标。
注意:这是在通过执行业务流多次调用“方法”之后。我知道如果根本没有调用该方法,它可能不会出现在指标中
版本:弹簧靴 2.1.1、弹簧 5.3、千分尺 1.1.4、执行器 2.1
尝试了以下帖子的所有内容:
https://github.com/izeye/sample-micrometer-spring-boot/tree/timed-annotation
https://github.com/micrometer-metrics/micrometer/issues/361
更新:因此,问题似乎仅在 Timed 位于抽象方法上时才出现,该方法通过另一种方法调用。能够通过一个简单的例子重现它。请参阅@Timed("say_hello_example") 注释。当我点击 prometheus 端点时,它只会被忽略并且不会出现。
代码:抽象类
public abstract class AbstractUtil {
public abstract void sayhello();
public void sayhellowithtimed(String passedVar) {
System.out.println("Passed var =>"+passedVar);
System.out.println("Calling abstract sayhello....");
sayhello();
}
}
Run Code Online (Sandbox Code Playgroud)
实现类
@Component
@Scope("prototype")
public class ExampleUtil extends AbstractUtil {
public static final String HELLO = "HELLO";
@Timed("dirwatcher_handler")
public void handleDirectoryWatcherChange(WatchEvent event){ …Run Code Online (Sandbox Code Playgroud)