普罗米修斯的简单累积增加

Gav*_*OVO 13 grafana prometheus promql

我有一个应用程序,当它收到一个特定的 HTTP 请求时,它会增加一个 Prometheus 计数器。该应用程序在 Kubernetes 中运行,具有多个实例并且每天重新部署多次。使用查询http_requests_total{method="POST",path="/resource/aaa",statusClass="2XX"}生成一个图表,按预期显示每个实例的累积请求计数

我想创建一个 Grafana 图,显示过去 7 天内收到的请求的累积频率。

我的第一个想法是increase(...[7d])为了考虑 7 天窗口之外的任何指标(如图所示),然后sum是这些值。

我已经意识到sum(increase(http_requests_total{method="POST",path="/resource/aaa",statusClass="2XX"}[7d]))事实上确实给出了时间点的正确答案。然而,生成的图表并不完全符合要求,因为组件increase(...) 值会随着一周而增加/减少。

我将如何创建一个图表来显示过去 7 天内这些指标增加的累积总和?例如,给定以下简化数据

| Day | # Requests |
|-----|------------|
| 1   | 10         |
| 2   | 5          |
| 3   | 15         |
| 4   | 10         |
| 5   | 20         |
| 6   | 5          |
| 7   | 5          |
| 8   | 10         |
Run Code Online (Sandbox Code Playgroud)

如果我要查看第 2 天到第 8 天的图表,我希望图表呈现如下一条线,

| Day | Cumulative Requests |
|-----|---------------------|
| d0  | 0                   |
| d1  | 5                   |
| d2  | 20                  |
| d3  | 30                  |
| d4  | 50                  |
| d5  | 55                  |
| d6  | 60                  |
| d7  | 70                  |
Run Code Online (Sandbox Code Playgroud)

其中 d0 表示图中的初始值

谢谢

小智 2

如果我正确理解你的问题的想法,我想我设法用这样的查询创建这样的图表

sum(max_over_time(counterName{someLabel="desiredlabelValue"}[7d]))
Run Code Online (Sandbox Code Playgroud)

它生成的图表看起来像蓝色的图表:过去 7 天内累计处理的数据

图表的未来部分减少的原因既是因为未来处理尚未明显发生,也是因为超过 7 天的处理滑出了移动的 7 天检查窗口。