wireless: add new plugin to get info about OpenWRT's APs

Following info is returned, per AP:
- Signal strength (dBm)
- Number of associated clients
This commit is contained in:
Kim B. Heino 2020-10-07 13:16:35 +03:00
parent 710334b615
commit 4bc2b62610
3 changed files with 44 additions and 1 deletions

View file

@ -1,4 +1,4 @@
PLUGINS ?= df cpu if_ if_err_ load memory processes swap netstat uptime interrupts irqstats ntpdate plugindir_
PLUGINS ?= df cpu if_ if_err_ load memory processes swap netstat uptime interrupts irqstats ntpdate wireless plugindir_
CONFIGURATION_FILE ?= muninlite.conf
INPUT_FILE ?= muninlite.in
TARGET_FILE ?= muninlite

View file

@ -86,6 +86,11 @@ for PLUG in $PLUGINS; do
RES="$RES netstat"
fi
;;
wireless)
if iwinfo >/dev/null 2>&1; then
RES="${RES} ${PLUG}"
fi
;;
plugindir_)
for MYPLUGIN in $(if [ -d "$PLUGIN_DIRECTORY" ]; then find -L "$PLUGIN_DIRECTORY" -type f -name "$PLUGINPATTERN"; fi); do
if [ -f "$MYPLUGIN" ] && [ -x "$MYPLUGIN" ]; then

38
plugins/wireless Normal file
View file

@ -0,0 +1,38 @@
config_wireless() {
interfaces=$(iwinfo 2> /dev/null | sed '/^wlan/!d; s/ .*//g; /-/d')
for interface in ${interfaces}
do
echo "multigraph wireless_${interface}
graph_title WLAN ${interface} AP Statistics
graph_vlabel Strength (dBm)
graph_category network
graph_scale no
signal.label Signal
noise.label Noise"
done
interfaces=$(iwinfo 2> /dev/null | sed '/^wlan/!d; s/ .*//g')
for interface in ${interfaces}
do
echo "multigraph wireless_assoc_${interface/-/_}
graph_title WLAN ${interface} associations
graph_vlabel Clients
graph_args --lower-limit 0
graph_category network
graph_scale no
clients.label Clients"
done
}
fetch_wireless() {
interfaces=$(iwinfo 2> /dev/null | sed '/^wlan/!d; s/ .*//g; /-/d')
for interface in ${interfaces}
do
echo "multigraph wireless_${interface}"
iwinfo ${interface} info | sed -r 's/unknown/0 dBm/g; /Signal.*Noise/!d; s/^.* Signal: ([-0-9]+) dBm Noise: ([-0-9]+) dBm/signal.value \1\nnoise.value \2/'
done
interfaces=$(iwinfo 2> /dev/null | sed '/^wlan/!d; s/ .*//g')
for interface in ${interfaces}
do
echo "multigraph wireless_assoc_${interface/-/_}"
echo "clients.value $(iwinfo ${interface} assoc | grep -c SNR)"
done
}