Prometheus是围绕返回指标的时间序列表示而构建的.在许多情况下,但是,我只关心什么度量的状态,现在,和我有一个很难搞清楚一个可靠的方式来获得一个度量的"最近"的价值.
从现在开始每隔30秒获得一次指标,我尝试过这样的事情:
my_metric[30s]
Run Code Online (Sandbox Code Playgroud)
但这感觉很脆弱.如果指标在数据点之间的日期多于或少于30秒,那么我要么得到多于一个或零结果.
如何获取指标的最新值?
tho*_*dge 18
如果您直接使用Prometheus使用query_range API 端点,您将获得时间序列。如果您切换到查询API 端点,您将获得最后一个值。
在Grafana中,您可以通过切换Instant切换从时间序列到最后一个值。
bri*_*zil 11
您所需要的只是my_metric,默认情况下,您将获得不超过5分钟的最新值.
默认情况下,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)
| 归档时间: |
|
| 查看次数: |
15969 次 |
| 最近记录: |