最近的价值或最后看到的价值

Cor*_*ein 9 prometheus

Prometheus是围绕返回指标的时间序列表示而构建的.在许多情况下,但是,我只关心什么度量的状态,现在,和我有一个很难搞清楚一个可靠的方式来获得一个度量的"最近"的价值.

从现在开始每隔30秒获得一次指标,我尝试过这样的事情:

my_metric[30s]
Run Code Online (Sandbox Code Playgroud)

但这感觉很脆弱.如果指标在数据点之间的日期多于或少于30秒,那么我要么得到多于一个或零结果.

如何获取指标的最新值?

tho*_*dge 18

如果您直接使用Prometheus使用query_range API 端点,您将获得时间序列。如果您切换到查询API 端点,您将获得最后一个值。

Grafana中,您可以通过切换Instant切换从时间序列到最后一个值。

  • 感谢您对 grafana“即时”切换的注释 (4认同)

bri*_*zil 11

您所需要的只是my_metric,默认情况下,您将获得不超过5分钟的最新值.

  • Prometheus控制台仅显示最新值,但在通过API查询度量标准时(例如通过Grafana),`my_metric`返回时间序列.尝试点击`/ api/v1/query?query = my_metric`.它返回时间序列,而不是最近的值. (4认同)
  • 我仍然得到的不仅仅是最新的……在 prometheus 上,我看到返回了三个值(我的每个应用程序一个),在 grafana 上,我在过去 5 分钟内每次刮擦都会得到一张桌子 (3认同)
  • @ brian-brazil如果我想在目标下降一段时间后获得量规的最新值怎么办。 (2认同)

val*_*ala 9

默认情况下,Prometheus 返回最近 5 分钟内发布的最新值。这个后视窗口被称为lookback delta并且可以使用--query.lookback-delta命令行标志进行配置。请参阅这些文档以获取更多信息。可以通过last_over_time()函数在每个查询的基础上扩展lookbehind 窗口。例如,以下查询返回名称为时间序列的最新值(my_metric如果这些值在过去一小时内可用):

last_over_time(my_metric[1h])
Run Code Online (Sandbox Code Playgroud)


小智 7

我通过 prom/cloudwatch-exporter 从 AWS 获取的指标也遇到了类似的问题。AWS 似乎需要一段时间才能融合其 CloudWatch 指标。以前是10分钟左右,现在是13分钟左右。我们一直在遗漏诸如磁盘空间不足之类的问题,因为这些指标完全无法到达普罗米修斯,因此我们的警报毫无用处。

我发现“偏移”在这里很有用,我想要最后一个指标,但它超出了 5m 的截止值。因此,通过指定偏移量,我仍然可以获取一个值,而不是什么都没有。例子:

aws_ec2_cpuutilization_average offset 15m
Run Code Online (Sandbox Code Playgroud)


小智 6

鉴于这种:

namespace_metricname_count_sum{id="1",status="to-do"}
namespace_metricname_count_sum{id="1",status="in-progress"}
Run Code Online (Sandbox Code Playgroud)

如果您想获取最新的值,则需要使用在本例中共有的值,即id=~".*"通过对日志进行分组,您将能够获取某个时间范围内的最后一个值

count ( max_over_time ( namespace_metricname_count_sum{id=~".*"}[12h])) by (status)
Run Code Online (Sandbox Code Playgroud)