千分尺 Timer.start/stop 和 Timer.record 之间的区别
Posted
技术标签:
【中文标题】千分尺 Timer.start/stop 和 Timer.record 之间的区别【英文标题】:Difference between Micrometer Timer.start/stop and Timer.record 【发布时间】:2019-12-06 12:21:29 【问题描述】:我想检查数据库命中(多个数据库)和请求处理的延迟。 Timer.Sample
或 Timer.record
哪个更好?
我正在使用以 Prometheus 为基础的千分尺。
【问题讨论】:
虽然大多数地方都可以使用,但如果您提供一些代码 sn-ps 可能会对建议有所帮助 【参考方案1】:主要区别是在manually stop录音中添加选项
您还可以将开始状态存储在示例实例中,以便稍后停止。该示例根据注册表的时钟记录开始时间。启动样例后,执行要计时的代码,在样例上调用 stop(Timer) 结束操作。
【讨论】:
【参考方案2】:当您计算出事件的持续时间时使用 Timer.record。
default void record(Duration duration)
您通常会使用 Timer.Sample 来传递 Sample 以确定发布指标的点,而不必在完全相同的位置。您还可以更精细地控制使用 Timer 对象发布的内容。 这是一个两步过程。
在事件开始之前创建一个示例以使用
返回一个示例对象static Sample start(Clock clock) ..
在活动完成后使用 Sample.stop 停止样本并推送指标
public long stop(Timer timer) ..
例如来自TimedAspect -
Timer.Sample sample = Timer.start(registry);
try
return pjp.proceed();
finally
sample.stop(Timer.builder(timed.value())
.description(timed.description().isEmpty() ? null : timed.description())
.tags(timed.extraTags())
.tags(tagsBasedOnJoinpoint.apply(pjp))
.publishPercentileHistogram(timed.histogram())
.publishPercentiles(timed.percentiles().length == 0 ? null : timed.percentiles())
.register(registry));
【讨论】:
以上是关于千分尺 Timer.start/stop 和 Timer.record 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用千分尺在telegraf中获取kafka流和骆驼指标
千分尺指标和 Application Insights java 代理 - 指标会累积,尽管它们不应该(或者我错过了啥)