2

有一个网络传输指标,例如node_network_transmit_bytes_totalnodeexporter我想得到一个接口的传输速率(enp3s0在我的例子中)和所有网桥接口传输速率的总和之间的差异。

我有这样的事情:

irate(node_network_transmit_bytes_total{device="enp3s0"}[1m]) -  irate(node_network_transmit_bytes_total{device=~"br.*"}[1m])

但这没有给我任何数据点。

编辑

我已经尝试过Prometheus/PromQL 减去两个规格指标所建议的方法,但我的情况有点不同,因为在右侧我有超过 1 个系列。

所以这:

node_network_transmit_bytes_total{device="enp3s0"} - ignoring(device) node_network_transmit_bytes_total{device=~"br.*"}

产量:

执行查询时出错:在操作右侧找到匹配组 {instance="192.168.XZ:9100", job="nodeexporter"} 的重复系列:[{ name ="node_network_transmit_bytes_total", device="br -XXXX", instance="192.168.XZ:9100", job="nodeexporter"}, { name ="node_network_transmit_bytes_total", device="br-5d6dce95c2b0", instance="192.168.XZ:9100", job="nodeexporter "}]; 不允许多对多匹配:匹配的标签在一侧必须是唯一的

我试过使用sum()

node_network_transmit_bytes_total{device="enp3s0"} - ignoring(device) sum(node_network_transmit_bytes_total{device=~"br.*"})

但这又没有结果。

编辑2

我已经设法弄清楚如何通过

sum(node_network_transmit_bytes_total{device="enp3s0"}) by (instance) - sum (node_network_transmit_bytes_total{device=~"br.*"}) by (instance)

但我不能使用irate它:

irate(sum(node_network_transmit_bytes_total{device="enp3s0"}) by (instance) - sum (node_network_transmit_bytes_total{device=~"br.*"}) by (instance))[5m]

执行查询时出错:1:149:解析错误:范围只允许用于向量选择器

4

1 回答 1

2

好的,这似乎是解决方案:

(sum(irate(node_network_receive_bytes_total{device="enp3s0"}[1m])) by (instance))
 -
(sum(irate(node_network_receive_bytes_total{device=~"br.*"}[1m])) by (instance))
于 2020-05-11T18:13:58.353 回答