node_exporter
node_exporter copied to clipboard
wifi collector not exposing all metrics on arm64 platform
Host operating system: output of uname -a
Linux veeve-id-v1-cid-beta-kroger-040101 4.9.140-tegra #1 SMP PREEMPT Thu Jun 25 21:22:12 PDT 2020 aarch64 aarch64 aarch64 GNU/Linux
node_exporter version: output of node_exporter --version
node_exporter, version 1.0.1 (branch: HEAD, revision: 3715be6ae899f2a9b9dbfd9c39f3e09a7bd4559f) build user: root@1f76dbbcfa55 build date: 20200616-12:46:57 go version: go1.14.4
node_exporter command line flags
node_exporter --collector.wifi --web.listen-address=":9101"
Are you running node_exporter in Docker?
No
What did you do that produced an error?
Just ran the command shared above on arm64 device (xavier-AGX actually)
What did you expect to see?
All the 11 metrics exposed by amd64 node exporter
What did you see instead?
Only the following two metrics
node_wifi_interface_frequency_hertz
node_wifi_station_info
Description
It seems that node exporter has a bug for arm64 devices where it can't expose all the wifi collector metrics. I am mainly looking for signal quality metric which is exposed by iwconfig
in both arm64 and amd64.
Anything in the logs?
Hi @discordianfish, sorry for the late reply. No, I don't see anything particular in logs. However, I think I found another clue. Problem is not with AMD64 or ARM64. The issue seems to be with wifi standard being used by wlan card. I have observed that
if IEEE 802.11AC
shows up in iwconfig
output, then wifi metrics are not exposed properly. However, if we only have IEEE 802.11
then the metrics do show up properly. So it seems to be an issue with network protocol.
Following is a sample iwconfig output where metrics show up properly
wlan0 IEEE 802.11 ESSID:"my_network"
Mode:Managed Frequency:2.462 GHz Access Point: C8:3A:38:57:86:21
Bit Rate=135 Mb/s Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:off
Link Quality=54/70 Signal level=-56 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:16 Missed beacon:0
In following output, they don't show up properly
wlan0 IEEE 802.11AC ESSID:"another_network" Nickname:"<WIFI@REALTEK>"
Mode:Managed Frequency:5.24 GHz Access Point: 38:94:EF:2B:DA:73
Bit Rate:867 Mb/s Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality=54/100 Signal level=39/100 Noise level=0/100
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Can you please look into that?
Yeah seems to be a 802.11ac specific issue. This should be probably raised/fixed in https://github.com/mdlayher/wifi
I was hoping to implement support for NL80211_AC
in the aforementioned repository, but looking at the NL80211
constants being used in https://github.com/mdlayher/wifi/blob/main/client_linux.go, it seems that sys/unix
does not expose the same set of information around NL80211_AC
yet?
In retrospect, it seems that the linux
-based APIs in https://github.com/mdlayher/wifi are built from the ground up around NL80211
only.