node_exporter icon indicating copy to clipboard operation
node_exporter copied to clipboard

Feature request: add `--collector.qdisc.device-exclude` option

Open Cougar opened this issue 3 years ago • 2 comments

This is a feature request for --collector.qdisc.device-exclude and corresponding --collector.qdisc.device-include or similar option for qdisc collector to skip interfaces that does not do any queueing or are dynamic interfaces (like docker veth) and increase Prometheus label cardinality.

node_exporter version: output of node_exporter --version

node_exporter, version 1.3.1 (branch: HEAD, revision: a2321e7b940ddcff26873612bccdf7cd4c42b6b6)
  build user:       root@243aafa5525c
  build date:       20211205-11:09:49
  go version:       go1.17.3
  platform:         linux/amd64

node_exporter command line flags

--collector.qdisc
--collector.netdev.device-exclude "^(lo|veth.*)$"
--collector.ethtool.device-exclude "^(lo|br-.*|docker0|flannel.*|veth.*)$"

Are you running node_exporter in Docker?

Yes, using --network host

What did you expect to see?

node_qdisc_backlog{device="ens192",kind="mq"} 0
node_qdisc_bytes_total{device="ens192",kind="mq"} 7.92579924231e+11
node_qdisc_current_queue_length{device="ens192",kind="mq"} 0
node_qdisc_drops_total{device="ens192",kind="mq"} 3
node_qdisc_overlimits_total{device="ens192",kind="mq"} 0
node_qdisc_packets_total{device="ens192",kind="mq"} 1.046679611e+09
node_qdisc_requeues_total{device="ens192",kind="mq"} 256

What did you see instead?

node_qdisc_backlog{device="br-2a579eb7af7b",kind="noqueue"} 0
node_qdisc_backlog{device="br-378437b24d0c",kind="noqueue"} 0
node_qdisc_backlog{device="br-6ffaa3375aeb",kind="noqueue"} 0
node_qdisc_backlog{device="docker0",kind="noqueue"} 0
node_qdisc_backlog{device="ens192",kind="mq"} 0
node_qdisc_backlog{device="flannel.106",kind="noqueue"} 0
node_qdisc_backlog{device="lo",kind="noqueue"} 0
node_qdisc_backlog{device="veth0a114b2",kind="noqueue"} 0
node_qdisc_backlog{device="veth1400987",kind="noqueue"} 0
node_qdisc_backlog{device="veth19fbf30",kind="noqueue"} 0
node_qdisc_backlog{device="veth1c0ea1c",kind="noqueue"} 0
node_qdisc_backlog{device="veth25c6ba9",kind="noqueue"} 0
node_qdisc_backlog{device="veth2b28382",kind="noqueue"} 0
node_qdisc_backlog{device="veth2dbded3",kind="noqueue"} 0
node_qdisc_backlog{device="veth4f62196",kind="noqueue"} 0
node_qdisc_backlog{device="veth8640bc8",kind="noqueue"} 0
node_qdisc_backlog{device="veth97445b7",kind="noqueue"} 0
node_qdisc_backlog{device="vetha453c1f",kind="noqueue"} 0
node_qdisc_backlog{device="vethad41228",kind="noqueue"} 0
node_qdisc_backlog{device="vethad4db00",kind="noqueue"} 0
node_qdisc_backlog{device="vethaead4c3",kind="noqueue"} 0
node_qdisc_backlog{device="vethaf349f0",kind="noqueue"} 0
node_qdisc_backlog{device="vethafca7d2",kind="noqueue"} 0
node_qdisc_backlog{device="vethb3201fd",kind="noqueue"} 0
node_qdisc_backlog{device="vethc46960c",kind="noqueue"} 0
node_qdisc_backlog{device="vethcb1529f",kind="noqueue"} 0
node_qdisc_backlog{device="vethd19c651",kind="noqueue"} 0
node_qdisc_backlog{device="vethd880002",kind="noqueue"} 0
node_qdisc_backlog{device="vethdb0462a",kind="noqueue"} 0
node_qdisc_backlog{device="vethe39e2ef",kind="noqueue"} 0
node_qdisc_backlog{device="vethf88a5fc",kind="noqueue"} 0
...

Cougar avatar Dec 09 '21 11:12 Cougar

That seems reasonable to me

discordianfish avatar Dec 09 '21 11:12 discordianfish

I think that these errors are also related with docker dynamic interfaces that may disappear during data collection

ts=2021-12-10T05:54:07.586Z caller=collector.go:169 level=error msg="collector failed" name=qdisc duration_seconds=1.290457509 err="route ip+net: no such network interface"
ts=2021-12-10T05:54:12.453Z caller=collector.go:169 level=error msg="collector failed" name=qdisc duration_seconds=0.422612352 err="route ip+net: no such network interface"

Cougar avatar Dec 10 '21 07:12 Cougar