1

我有一个关于 promql 级数乘法的问题。我有 2 个时间序列,它们有不同的采样(5 分钟和 15 分钟)。我需要以相同的分辨率将它们相乘并求和

就像是:

WITH (
  filter1= {testID=~"test2"},
  metric0 = myMetric1{filter1},
  metric1 = myMetric2{filter1}
)
sum_over_time(metric0[15m]*metric0[15m])&step=1h

这不起作用,但输出将是:

  • 使 metric1 和 metric2 具有相同的分辨率(15 分钟)
  • 逐个样本相乘
  • 1h 时的合计(总和)

这可能吗?

谢谢!

4

1 回答 1

0

尝试以下MetricSQL查询:

with (
  filter = {testID=~"test2"},
  metric1 = myMetric1{filter},
  metric2 = myMetric2{filter},
)
sum_over_time((metric1 * metric2)[1h:15m])

此查询依赖Prometheus 子查询将 metric1 和 metric2 带到相同的分辨率 - 15 分钟,然后将它们在过去一小时的乘法相加。

请注意,预计与 metric1 和 metric2 匹配的时间序列具有相同的标签集。否则将返回空结果。如果不是这种情况,则乘法可能需要额外的修饰符,例如 on、ignoring、group_left 或 group_right - 请参阅https://prometheus.io/docs/prometheus/latest/querying/operators/#vector-matching了解详细信息.

于 2020-11-25T00:00:02.643 回答