我正在尝试连接两个指标(
build_status
和build_timestamp
),然后根据特定标签过滤掉重复项(service
和timestamp
)。max by (service, timestamp) (
build_status{stage="$stage", envId="$env"} * on(stage, env, service, status)
group_left(timestamp) build_timestamp{stage="$stage", env="$env"}
)
这效果很好,除了
status
标签随后丢失,如果我将其添加到max by
(即:max by (service, timestamp, status)
),我可以将其恢复,但随后我会得到重复项,例如:
服务1时间戳1状态1
服务1 时间戳1 状态2
如何最大化服务和时间戳但保留状态标签?
谢谢!
来自普罗米修斯原始文档:
topk 和 Bottomk 与其他聚合器的不同之处在于,它的子集 输入样本(包括原始标签)返回 结果向量。 by 和 without 仅用于对输入进行存储 矢量。
所以你可以在你的情况下使用topk:
topk by(service, timestamp) (1,
build_status{stage="$stage", envId="$env"} * on(stage, env, service, status)
group_left(timestamp) build_timestamp{stage="$stage", env="$env"}
)