Prometheus/PromQL 减去两个仪表指标
Prometheus/PromQL subtract two gauge metrics
我有来自两个不同实例的这个量表指标 "metric_awesome"。
我想做的是从实例二中减去实例一,就像这样
metric_awesome{instance="one"} - metric_awesome{instance="two"}
很遗憾,结果集为空。有没有人经历过这个?
这里的问题是标签不匹配。你想要的是:
metric_awesome{instance="one"} - ignoring(instance) metric_awesome{instance="two"}
如果有人搜索这个想要执行此操作的一对多减法,请查看 group_right
除了之前写的内容。
metric_awesome{instance="one"} - ignoring(instance) group_right metric_awesome{job="compare-instances"}
默认情况下,Prometheus 按以下方式执行 a - b
:
- 为
a
查询选择所有时间序列。
- 为
b
查询选择所有时间序列。
- 它在
a
和 b
处搜索具有相同标签集的时间序列对。
- 它计算找到的具有相同标签集的对中时间序列之间的差异。
有关详细信息,请参阅 these docs。
metric_awesome{instance="one"} - metric_awesome{instance="two"}
returns 为空结果,因为 -
左侧的所有匹配时间序列都包含 instance="one"
标签,而 instance="one"
左侧的所有时间序列-
的右侧包含 instance="two"
标签。此处没有具有相同标签集的时间序列对。
可以使用 on()
、ignoring()
、group_left()
和 group_right()
修饰符更改此行为。
例如,metric_awesome{instance="one"} - ignoring(instance) metric_awesom{instance="two"}
指示在搜索具有相同标签的时间序列对时忽略 instance
标签。当 -
一侧的多个时间序列与另一侧的单个时间序列匹配时,这可能会导致 multiple-to-one 匹配。在这种情况下,默认情况下 Prometheus returns 错误。这可以通过向 -
运算符添加 group_left()
或 group_right()
修饰符来解决:
metric_awesome{instance="one"}
- ignoring(instance) group_left()
metric_awesome{instance="two"}
或
metric_awesome{instance="one"}
- ignoring(instance) group_right()
metric_awesome{instance="two"}
有关这些修饰符的更多详细信息,请参阅 these docs。
我有来自两个不同实例的这个量表指标 "metric_awesome"。 我想做的是从实例二中减去实例一,就像这样
metric_awesome{instance="one"} - metric_awesome{instance="two"}
很遗憾,结果集为空。有没有人经历过这个?
这里的问题是标签不匹配。你想要的是:
metric_awesome{instance="one"} - ignoring(instance) metric_awesome{instance="two"}
如果有人搜索这个想要执行此操作的一对多减法,请查看 group_right
除了之前写的内容。
metric_awesome{instance="one"} - ignoring(instance) group_right metric_awesome{job="compare-instances"}
默认情况下,Prometheus 按以下方式执行 a - b
:
- 为
a
查询选择所有时间序列。 - 为
b
查询选择所有时间序列。 - 它在
a
和b
处搜索具有相同标签集的时间序列对。 - 它计算找到的具有相同标签集的对中时间序列之间的差异。
有关详细信息,请参阅 these docs。
metric_awesome{instance="one"} - metric_awesome{instance="two"}
returns 为空结果,因为 -
左侧的所有匹配时间序列都包含 instance="one"
标签,而 instance="one"
左侧的所有时间序列-
的右侧包含 instance="two"
标签。此处没有具有相同标签集的时间序列对。
可以使用 on()
、ignoring()
、group_left()
和 group_right()
修饰符更改此行为。
例如,metric_awesome{instance="one"} - ignoring(instance) metric_awesom{instance="two"}
指示在搜索具有相同标签的时间序列对时忽略 instance
标签。当 -
一侧的多个时间序列与另一侧的单个时间序列匹配时,这可能会导致 multiple-to-one 匹配。在这种情况下,默认情况下 Prometheus returns 错误。这可以通过向 -
运算符添加 group_left()
或 group_right()
修饰符来解决:
metric_awesome{instance="one"}
- ignoring(instance) group_left()
metric_awesome{instance="two"}
或
metric_awesome{instance="one"}
- ignoring(instance) group_right()
metric_awesome{instance="two"}
有关这些修饰符的更多详细信息,请参阅 these docs。