如何使用@Timed of Micrometer来捕捉未来的指标



我想使用微米记录执行时间,异常类型(如果有的话)的异步方法,当它最终发生。有什么推荐的方法吗?

例如,aws sqs提供sqasync客户端,我想让千分尺听它返回的Future,并暴露成功和失败延迟指标

@Timed(value = PrometheusConstants.SQS_ASYNC_PUBLISH_TIMER, percentiles = {0.5, 0.95, 0.99}, histogram = true)
public Future<SendMessageResult> sendAsync(String queueUrl, String message) {
return amazonSQSAsync.sendMessageAsync(queueUrl, message);
}

上面的例子不能工作,即使我的localstack sqs down。Micrometer将请求视为成功。

注意:这个例子应该基于文档工作,但它不工作https://micrometer.io/docs/concepts#_the_timed_annotation

您可以使用方法measureTimeMillis来测量异步函数的时间,然后使用Timer。构建器来创建计时器和记录方法来记录度量。

//create your Meter registry
MeterRegistry registry = new SimpleMeterRegistry();
// create your timer
val myTimer = Timer.builder("my.timer")
.publishPercentileHistogram()
.register(registry);
// Executes the given block and returns elapsed time in milliseconds
val asyncFunctionTime = measureTimeMillis {
sendAsync()    
}
// Record the metric and send to micrometer
myTimer.record(asyncFunctionTime, TimeUnit.MILLISECONDS)

有关更多信息,您可以查看Micrometer文档

相关内容

  • 没有找到相关文章

最新更新