Ubiquiti – ziskavani informaci pres SNMP a logovani do syslogu

Mam 802.11an 5GHz WiFi spoj mezi dvema domy. Na jedne strane je UBNT NanoBeam M5 16 (AP) a na druhe UBNT NanoBridge M5 (klient).

Obcas se stava, ze TX/RX Rate spadne ze 130/130Mbps na 54/54Mbps. Pomuze jenom restart zarizeni (asi problem nejnovejsiho firmware). Proto jsem chtel logovat aktualni hodnoty TX/RX Rate do syslogu na linuxovem serveru.

Z UBNT zarizeni se daji skvele tahat data pres SNMP v1. SNMP se zapina na zalozce Services:

V linuxu (aktualni Debian 8.2) pouzivam na ziskavani informaci program snmpwalk.

Zde je airMAX MIB tabulka pro Ubiquity zarizeni (pro pripad, ze by tabulka zanikla jsem 19.1.2016 vygeneroval PDF).

Syntaxe je nasledujici:

snmpwalk -c public -v 1 10.123.66.4 .1.3.6.1.4.1.41112.1.4

SNMP komunita public, SNMP verze 1, IP a OID. Vystup pro NanoBeam M5 vypada nasledovne:

root@server:/# snmpwalk -c public -v 1 10.123.66.4 .1.3.6.1.4.1.41112.1.4
iso.3.6.1.4.1.41112.1.4.1.1.1.1 = INTEGER: 5
iso.3.6.1.4.1.41112.1.4.1.1.2.1 = INTEGER: 1
iso.3.6.1.4.1.41112.1.4.1.1.3.1 = INTEGER: 203
iso.3.6.1.4.1.41112.1.4.1.1.4.1 = INTEGER: 5520
iso.3.6.1.4.1.41112.1.4.1.1.5.1 = INTEGER: 1
iso.3.6.1.4.1.41112.1.4.1.1.6.1 = INTEGER: 5
iso.3.6.1.4.1.41112.1.4.1.1.7.1 = INTEGER: 150
iso.3.6.1.4.1.41112.1.4.1.1.8.1 = INTEGER: 3
iso.3.6.1.4.1.41112.1.4.1.1.9.1 = STRING: "300 - 22 dBi"
iso.3.6.1.4.1.41112.1.4.2.1.1.1.1 = INTEGER: 1
iso.3.6.1.4.1.41112.1.4.2.1.1.1.2 = INTEGER: 2
iso.3.6.1.4.1.41112.1.4.2.1.2.1.1 = INTEGER: 46
iso.3.6.1.4.1.41112.1.4.2.1.2.1.2 = INTEGER: 47
iso.3.6.1.4.1.41112.1.4.2.1.3.1.1 = INTEGER: 47
iso.3.6.1.4.1.41112.1.4.2.1.3.1.2 = INTEGER: 47
iso.3.6.1.4.1.41112.1.4.2.1.4.1.1 = INTEGER: 46
iso.3.6.1.4.1.41112.1.4.2.1.4.1.2 = INTEGER: 47
iso.3.6.1.4.1.41112.1.4.3.1.1.1 = INTEGER: 5
iso.3.6.1.4.1.41112.1.4.3.1.2.1 = INTEGER: 0
iso.3.6.1.4.1.41112.1.4.3.1.3.1 = INTEGER: 0
iso.3.6.1.4.1.41112.1.4.3.1.4.1 = INTEGER: 0
iso.3.6.1.4.1.41112.1.4.3.1.5.1 = INTEGER: 0
iso.3.6.1.4.1.41112.1.4.4.1.1.1 = INTEGER: 5
iso.3.6.1.4.1.41112.1.4.4.1.2.1 = INTEGER: 2
iso.3.6.1.4.1.41112.1.4.4.1.3.1 = INTEGER: 1000
iso.3.6.1.4.1.41112.1.4.5.1.1.1 = INTEGER: 5
iso.3.6.1.4.1.41112.1.4.5.1.2.1 = STRING: "MV_1"
iso.3.6.1.4.1.41112.1.4.5.1.3.1 = INTEGER: 2
iso.3.6.1.4.1.41112.1.4.5.1.4.1 = Hex-STRING: 44 D9 E7 5C 52 FE
iso.3.6.1.4.1.41112.1.4.5.1.5.1 = INTEGER: -47
iso.3.6.1.4.1.41112.1.4.5.1.6.1 = INTEGER: 49
iso.3.6.1.4.1.41112.1.4.5.1.7.1 = INTEGER: 98
iso.3.6.1.4.1.41112.1.4.5.1.8.1 = INTEGER: -88
iso.3.6.1.4.1.41112.1.4.5.1.9.1 = INTEGER: 130000000
iso.3.6.1.4.1.41112.1.4.5.1.10.1 = INTEGER: 130000000
iso.3.6.1.4.1.41112.1.4.5.1.11.1 = STRING: "WPA2"
iso.3.6.1.4.1.41112.1.4.5.1.12.1 = INTEGER: 1
iso.3.6.1.4.1.41112.1.4.5.1.13.1 = INTEGER: 2
iso.3.6.1.4.1.41112.1.4.5.1.14.1 = INTEGER: 20
iso.3.6.1.4.1.41112.1.4.5.1.15.1 = Gauge32: 1
iso.3.6.1.4.1.41112.1.4.6.1.1.1 = INTEGER: 5
iso.3.6.1.4.1.41112.1.4.6.1.2.1 = INTEGER: 1
iso.3.6.1.4.1.41112.1.4.6.1.3.1 = INTEGER: 98
iso.3.6.1.4.1.41112.1.4.6.1.4.1 = INTEGER: 94
iso.3.6.1.4.1.41112.1.4.6.1.5.1 = INTEGER: 0
iso.3.6.1.4.1.41112.1.4.6.1.6.1 = INTEGER: 2
iso.3.6.1.4.1.41112.1.4.7.1.1.1.68.217.231.92.82.254 = Hex-STRING: 44 D9 E7 5C 52 FE
iso.3.6.1.4.1.41112.1.4.7.1.2.1.68.217.231.92.82.254 = STRING: "ubnt1082"
iso.3.6.1.4.1.41112.1.4.7.1.3.1.68.217.231.92.82.254 = INTEGER: -47
iso.3.6.1.4.1.41112.1.4.7.1.4.1.68.217.231.92.82.254 = INTEGER: -88
iso.3.6.1.4.1.41112.1.4.7.1.5.1.68.217.231.92.82.254 = INTEGER: 150
iso.3.6.1.4.1.41112.1.4.7.1.6.1.68.217.231.92.82.254 = INTEGER: 98
iso.3.6.1.4.1.41112.1.4.7.1.7.1.68.217.231.92.82.254 = INTEGER: 3
iso.3.6.1.4.1.41112.1.4.7.1.8.1.68.217.231.92.82.254 = INTEGER: 0
iso.3.6.1.4.1.41112.1.4.7.1.9.1.68.217.231.92.82.254 = INTEGER: 0
iso.3.6.1.4.1.41112.1.4.7.1.10.1.68.217.231.92.82.254 = IpAddress: 10.123.66.3
iso.3.6.1.4.1.41112.1.4.7.1.11.1.68.217.231.92.82.254 = INTEGER: 130000000
iso.3.6.1.4.1.41112.1.4.7.1.12.1.68.217.231.92.82.254 = INTEGER: 130000000
iso.3.6.1.4.1.41112.1.4.7.1.13.1.68.217.231.92.82.254 = Counter64: 3370352
iso.3.6.1.4.1.41112.1.4.7.1.14.1.68.217.231.92.82.254 = Counter64: 1422660
iso.3.6.1.4.1.41112.1.4.7.1.15.1.68.217.231.92.82.254 = Timeticks: (208300) 0:34:43.00
End of MIB
root@server:/#

Je take mozne se dotazat pouze na jednu hodnotu (ubntWlStatSsid = .1.3.6.1.4.1.41112.1.4.5.1.2):

martin@server:~$ snmpwalk -c public -v1 10.123.66.4 .1.3.6.1.4.1.41112.1.4.5.1.2
iso.3.6.1.4.1.41112.1.4.5.1.2.1 = STRING: "MV_1"
martin@server:~$

Na serveru s Debianem ziskavam data a posilam je do syslogu pomoci skriptu /usr/local/bin/ubnt_snmp:

#!/bin/bash

UBNT1082_TX=`snmpwalk -c public -v 1 10.123.66.3 .1.3.6.1.4.1.41112.1.4.5.1.9  | cut -c44- # ubntWlStatTxRate`
UBNT1082_RX=`snmpwalk -c public -v 1 10.123.66.3 .1.3.6.1.4.1.41112.1.4.5.1.10 | cut -c45- # ubntWlStatRxRate`
UBNT1082_UPTIME=`snmpwalk -c public -v 1 10.123.66.3 1.3.6.1.2.1.1.3.0 | cut -c43- # sysUpTime`
UBNT66_TX=`snmpwalk -c public -v 1 10.123.66.4 .1.3.6.1.4.1.41112.1.4.5.1.9  | cut -c44- # ubntWlStatTxRate`
UBNT66_RX=`snmpwalk -c public -v 1 10.123.66.4 .1.3.6.1.4.1.41112.1.4.5.1.10 | cut -c45- # ubntWlStatRxRate`
UBNT66_UPTIME=`snmpwalk -c public -v 1 10.123.66.4 1.3.6.1.2.1.1.3.0 | cut -c43- # sysUpTime`

logger "UBNT_RXTX UBNT66: TX: $UBNT66_TX, RX: $UBNT66_RX, UPTIME: $UBNT66_UPTIME"
logger "UBNT_RXTX UBNT1082: TX: $UBNT1082_TX, RX: $UBNT1082_RX, UPTIME: $UBNT1082_UPTIME"

automaticke spousteni kazdou minutu resim cronem:

root@server:/# crontab -l
# Edit this file to introduce tasks to be run by cron.
# m h  dom mon dow   command
*/1 * * * * /usr/local/bin/ubnt_snmp > /dev/null 2>&1
root@server:/# 

vystup se posila do /var/log/syslog. Pro prehlednost loguji jeste do samostatneho souboru pomoci pravidla pro rsyslog v souboru /etc/rsyslog.d/99-ubnt.conf (nazev libovolny, jenom musi byt pripona .conf) s obsahem:

:msg,contains,"UBNT_RXTX " /var/log/ubnt.log

v aktualnim case se da log sledovat pomoci tailu s follow parametrem:

root@server:/# tail -f /var/log/ubnt.log
Jan 16 17:15:01 server root: UBNT_RXTX UBNT66: TX: 117000000, RX: 130000000, UPTIME: 0:50:35.00
Jan 16 17:15:01 server root: UBNT_RXTX UBNT1082: TX: 130000000, RX: 117000000, UPTIME: 0:50:24.00
Jan 16 17:16:01 server root: UBNT_RXTX UBNT66: TX: 117000000, RX: 130000000, UPTIME: 0:51:35.00
Jan 16 17:16:01 server root: UBNT_RXTX UBNT1082: TX: 130000000, RX: 117000000, UPTIME: 0:51:25.00
Jan 16 17:17:02 server root: UBNT_RXTX UBNT66: TX: 130000000, RX: 130000000, UPTIME: 0:52:36.00
Jan 16 17:17:02 server root: UBNT_RXTX UBNT1082: TX: 130000000, RX: 130000000, UPTIME: 0:52:25.00

Na vse jsem vytvoril GIST, ve kterem budu pripadne i delat aktualizace.

 

 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *