了解指标类型
Prometheus 支持四种类型的指标
- Counter (计数器)
- Gauge (仪表盘)
- 直方图
- 摘要
Counter(计数器)
Counter 是一种只能增加或重置的指标值,即其值不能低于之前的值。它可以用于像请求数、错误数等指标。
在查询栏中输入以下查询并点击执行。
go_gc_duration_seconds_count
PromQL 中的 rate() 函数会获取一段时间内的指标历史记录,并计算该值每秒增加的速度。Rate 仅适用于计数器值。
rate(go_gc_duration_seconds_count[5m]) 
Gauge(仪表盘)
Gauge 是一个可以上升或下降的数字。它可以用于像集群中的 Pod 数量、队列中的事件数等指标。
像 max_over_time、min_over_time 和 avg_over_time 这样的 PromQL 函数可以用于仪表盘指标。
Histogram(直方图)
Histogram (直方图) 是一种比前两种更复杂的指标类型。直方图可以用于任何根据分桶值计数的计算值。桶的边界可以由开发人员配置。一个常见的例子是响应请求所需的时间,称为延迟。
示例:假设我们想要观察处理 API 请求所花费的时间。直方图允许我们将请求时间存储在桶中,而不是存储每个请求的时间。我们定义了花费时间的桶,例如 `le 0.3` (小于或等于 0.3)、`le 0.5`、`le 0.7`、`le 1` 和 `le 1.2`。这些就是我们的桶,一旦计算出请求所花费的时间,它就会被添加到所有桶边界高于测量值的桶的计数中。
假设对端点“/ping”的请求 1 花费了 0.25 秒。这些桶的计数值将会是:
/ping
| 桶 | 计数 |
|---|---|
| 0 - 0.3 | 1 |
| 0 - 0.5 | 1 |
| 0 - 0.7 | 1 |
| 0 - 1 | 1 |
| 0 - 1.2 | 1 |
| 0 - +Inf | 1 |
注意:+Inf 桶是默认添加的。
(由于直方图是累积频率,因此所有大于该值的桶都会加 1)
对端点“/ping”的请求 2 花费了 0.4 秒。这些桶的计数值将会是这样:
/ping
| 桶 | 计数 |
|---|---|
| 0 - 0.3 | 1 |
| 0 - 0.5 | 2 |
| 0 - 0.7 | 2 |
| 0 - 1 | 2 |
| 0 - 1.2 | 2 |
| 0 - +Inf | 2 |
由于 0.4 低于 0.5,所有直到该边界的桶都会增加它们的计数。
让我们从 Prometheus UI 中探索一个直方图指标,并应用一些函数。
prometheus_http_request_duration_seconds_bucket{handler="/graph"}
histogram_quantile() 函数可以用来从直方图中计算分位数。
histogram_quantile(0.9,prometheus_http_request_duration_seconds_bucket{handler="/graph"})
图表显示第 90 百分位数是 0.09。要查找过去 5 分钟的 histogram_quantile,您可以使用 rate() 和时间范围。
histogram_quantile(0.9, rate(prometheus_http_request_duration_seconds_bucket{handler="/graph"}[5m]))
总结
Summaries (摘要) 也测量事件,是直方图的替代方案。它们成本更低,但会丢失更多数据。它们在应用程序级别计算,因此无法聚合来自同一进程的多个实例的指标。当指标的桶事先未知时会使用它们,但强烈建议在可能的情况下使用直方图而非摘要。
在本教程中,我们详细介绍了指标的类型以及一些 PromQL 操作,如 rate、histogram_quantile 等。




