您可以使用以下任一查询:
max_over_time(
timestamp(
application_version{site="NYC", instance="Test", id!=""}
)[1h:]
) == scalar(
max(
max_over_time(
timestamp(
application_version{site="NYC", instance="Test", id!=""}
)[1h:]
)
)
)
max_over_time(
timestamp(
application_version{site="NYC", instance="Test", id!=""}
)[1h:]
)
== on() group_left()
max(
max_over_time(
timestamp(
application_version{site="NYC", instance="Test", id!=""}
)[1h:]
)
)
它们都只返回最后一个当前值的时间戳最大的度量。
它将返回一个结果。即使指标看起来彼此接近(具有相同的过时窗口),这些查询仍然会选择具有最大时间戳的指标。
如果您预计需要根据某个标签中的区别获得多个结果,请使用后一个。一旦您需要多个结果,您可以转换max
to max by
,并添加所需的标签on()
clause.
如果您对我的两个查询都返回时间戳而不是 1 作为值不满意,您可以在其中一个查询的开头添加
application_version{site="NYC", instance="Test", id!=""} and
或用(
and ) * 0 + 1
.
我想有些人一定在“go_info”指标上遇到了同样的问题
我相信传统的智慧是使用像这样的查询go_build_info
,没有任何last_over_time
。这样,您将始终拥有实际数据,如果没有返回任何数据,则意味着出现了严重错误。