java - Micrometer Timer.start/stop 和 Timer.record 之间的区别

标签 java grafana prometheus micrometer

我想检查数据库命中(多个数据库)和请求处理的延迟。 Timer.SampleTimer.record 哪个更好?

我正在使用以 Prometheus 为基础的 Micrometer。

最佳答案

计算出事件持续时间时,使用 Timer.record。

default void record(Duration duration)

当您想要传递 Sample 以确定发布指标的时间点时,您通常会使用 Timer.Sample,而不必在完全相同的位置。您还可以更精细地控制使用 Timer 对象发布的内容。 这是一个两步过程。

  1. 在事件开始之前创建一个样本以返回样本对象

    static Sample start(Clock clock) {..}
    
  2. 停止示例并在 Activity 完成时使用 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));
    }

关于java - Micrometer Timer.start/stop 和 Timer.record 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57249114/

相关文章:

在Mac上读取Excel的Java代码

grafana - Grafana 中的数据库连接数

java - 版本号指标

amazon-web-services - Helm 升级引发YAML解析器错误

kubernetes - 如何将抓取目标添加到与Kubernetes-Helm一起安装的Prometheus服务器上?

java - 如何使用 spring 和 Hibernate 生成使用 json 对象的 json 响应

java - 设置多个 TextView Android

kubernetes - 使用外部 Prometheus 抓取 CoreDNS 指标

java - 将 Bitmap 转换为 Bitmap[] 数组

node.js - 如何跟踪所有 rest api 的请求数