6

有人可以解释以下响应中的 MAX 统计数据指的是什么。我没有看到它记录在任何地方。

localhost:8081/actuator/metrics/http.server.requests?tag=uri:/myControllerMethod

回复:

{  
   "name":"http.server.requests",
   "description":null,
   "baseUnit":"milliseconds",
   "measurements":[  
      {  
         "statistic":"COUNT",
         "value":13
      },
      {  
         "statistic":"TOTAL_TIME",
         "value":57.430899
      },
      {  
         "statistic":"MAX",
         "value":0
      }
   ],
   "availableTags":[  
      {  
         "tag":"exception",
         "values":[  
            "None"
         ]
      },
      {  
         "tag":"method",
         "values":[  
            "GET"
         ]
      },
      {  
         "tag":"outcome",
         "values":[  
            "SUCCESS"
         ]
      },
      {  
         "tag":"status",
         "values":[  
            "200"
         ]
      },
      {  
         "tag":"commonTag",
         "values":[  
            "somePrefix"
         ]
      }
   ]
}
4

2 回答 2

2

您可以使用根调用?tag=url:{endpoint_tag}响应中定义的方法查看各个指标。/actuator/metrics/http.server.requests值的详细信息measurements是;

  • COUNT:呼叫的每秒速率。
  • TOTAL_TIME:记录的时间总和。以监控系统的基本时间单位报告
  • MAX:记录的最大数量。当这表示一个时间时,它以监控系统的基本时间单位报告。

在这里给出,也在这里


您看到的差异是由于计时器的存在。这意味着在一段时间后MAX,任何标记指标的当前定义值都可以重置回0. 您可以添加一些新的调用,/myControllerMethod然后立即调用以/actuator/metrics/http.server.requests查看给定标签的非零MAX值吗?

这是由于获取MAX每个较小时期的指标背后的想法。当您看到这些指标时,您将能够在MAX很长一段时间内获得一组值而不是单个值。

您可以在 Micrometer 源代码中看到这一点。有一种rotate()方法专注于重置MAX值以创建上述行为。

您可以看到每次调用都会poll()调用它,每隔一段时间就会触发一次以收集指标。

于 2019-07-29T05:26:37.143 回答
1
  • MAX代表什么

MAX 表示执行端点所花费的最长时间。

分析为/user/asset/getAllAssets

COUNT  TOTAL_TIME  MAX
5      115         17
6      122         17  (Execution Time = 122 - 115 = 17)
7      131         17  (Execution Time = 131 - 122 = 17)
8      187         56  (Execution Time = 187 - 131 = 56)  
9      204         56  From Now MAX will be 56 (Execution Time = 204 - 187 = 17)  

  • 如果我们对特定端点的请求数量较少(或 1 个请求),MAX 是否会为 0?

没有特定端点的请求数不会影响 MAX (请参阅 Spring Boot Admin 的图像)


  • MAX 何时为 0

Timer将值设置为 0。当端点没有被调用或执行一段时间时 Timer 将 MAX 设置为 0。这里的近似计时器值是 2 分钟(120 秒)

.expiry(Duration.ofMinutes(2)). 如果在到期时间或轮换时间之间没有发出请求, DistributionStatisticConfig 会将


  • 我如何确定计时器值?

为此,我采集了 6 个样本(在同一端点执行了 6 次)。为此,我已经确定了调用端点时间之间的时间差 - MAX 设置回零的时间

更多细节

在此处输入图像描述


更新

文档已更新。

笔记:

  • 对于基本DistributionSummary实现,例如CumulativeDistributionSummary, MaxStepDistributionSummary是时间窗口 max ( TimeWindowMax)。

  • 这意味着它的值是一个时间窗口内的最大值。

  • 如果时间窗口结束,它将被重置为 0 并重新开始一个新的时间窗口。

  • DistributionStatisticConfig除非将到期时间明确设置为其他值,否则时间窗口大小将是仪表注册表的步长。

于 2019-07-29T10:45:01.000 回答