忽略 PromQL 中非重要标签的影响

Ignoring effect of non-significant labels in PromQL

我有一个带有单个标签 device_id 的普罗米修斯指标 upload_latency。在普罗米修斯网络 UI 中,查询 'upload_latency' 我看到每个 device_id.

的不同行

现在为了加强调试,我添加了另一个标签 msg_type。如果我现在查询 'upload_latency',它会为 device_id 和 msg_type 的每个组合绘制单独的行。当我想可视化延迟 w.r.t 时,它会有所帮助。 msg_type 但不是当我真的只想可视化每个 device_id.

的集体延迟时

我正在寻找的是一种忽略标签 msg_type 的方法,这样我就可以在需要时像之前一样按 device_id 绘制线条。

任何评论都适用。提前致谢!

您可以尝试结合使用聚合 without

类似于sum without (msg_type) upload_latency

是否使用 sum 或 max 或其他聚合器函数取决于具有相同设备 ID 和不同消息类型的数据点是否可以同时发生。但无论如何,without 应该会有帮助。

Link 到相关文档: https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators

如果事先不知道 non-essential 个标签,而所有基本标签都事先知道,那么最好使用 avg(...) by (essential_labels) 而不是 avg(...) without (non_essential_labels)。例如,以下查询 returns 每个 device_id 的平均上传延迟,这不取决于 upload_latency 时间序列中额外 non-essential 标签的数量:

avg(upload_latency) by (device_id)

参见 docs about aggregate functions in PromQL and docs about avg()

附加说明:non-essential 标签可以在使用 label_keep and label_del functions when using Prometheus-compatible query engine such as VictoriaMetrics 查询期间从时间序列中删除。