diff --git a/README.md b/README.md index 3e4a65f..b00c26c 100644 --- a/README.md +++ b/README.md @@ -62,8 +62,10 @@ Telegraf is configured with basic host telemetry by default. You can add more fe - `telegraf_docker`: Set to `true`, if docker telemetry should be collected (uses file from `telegraf_docker_file`) - `telegraf_unifi_usg_ips`: Specify a list of USG IPs, if SNMP telemetry should be collected (uses file from `telegraf_unifi_file`) - `telegraf_unifi_ap_ips`: Specify a list of AP IPs, if SNMP telemetry should be collected (uses file from `telegraf_unifi_file`) +- `telegraf_ubnt_ns_ips`: Specify a list of Ubiquiti NanoStation IPs, if SNMP telemetry should be collected (uses file from `telegraf_airmax_file`) - `telegraf_docker_file`: filename of the docker telegraf config part in `{{role_path}}/templates` (default `telegraf-docker.conf`). -- `telegraf_unifi_file`: filename of the SNMP telegraf config part in `{{role_path}}/templates` (default `telegraf-UniFi.conf`). +- `telegraf_unifi_file`: filename of the SNMP telegraf config part in `{{role_path}}/templates` (default `telegraf-UniFi.conf.j2`). +- `telegraf_airmax_file`: filename of the SNMP telegraf config part in `{{role_path}}/templates` (default `telegraf-AirMAX.conf.j2`). Optional settings: - `telegraf_interval`: Data sampling interval (default `300s`) diff --git a/defaults/main.yml b/defaults/main.yml index 80b516f..a9ccf24 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -8,5 +8,6 @@ caddy_cachedir: "{{ ansible_user_dir }}/.ansbl-caddy-cache" telegraf_interval: "300s" telegraf_docker_file: "telegraf-docker.conf" telegraf_unifi_file: "telegraf-UniFi.conf.j2" +telegraf_airmax_file: "telegraf-AirMAX.conf.j2" dockercompose_use_pip: false diff --git a/files/UBNT-AirMAX-MIB.txt b/files/UBNT-AirMAX-MIB.txt new file mode 100755 index 0000000..9c68345 --- /dev/null +++ b/files/UBNT-AirMAX-MIB.txt @@ -0,0 +1,914 @@ +UBNT-AirMAX-MIB DEFINITIONS ::= BEGIN + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Gauge32, Counter64, + IpAddress, TimeTicks FROM SNMPv2-SMI + DisplayString, TruthValue, MacAddress FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE FROM SNMPv2-CONF + ubntAirosGroups, ubntMIB FROM UBNT-MIB; + + ubntAirMAX MODULE-IDENTITY + LAST-UPDATED "201710030000Z" + ORGANIZATION "Ubiquiti Networks, Inc." + CONTACT-INFO "support@ubnt.com" + DESCRIPTION "The AirMAX MIB module for Ubiquiti Networks, Inc. entities" + REVISION "201710030000Z" + DESCRIPTION "ubntAirMAX revision" + ::= { ubntMIB 4 } + + -- -------------------------------------------------------------------------------- + -- radio table + -- -------------------------------------------------------------------------------- + + ubntRadioTable OBJECT-TYPE + SYNTAX SEQUENCE OF UbntRadioEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Radio status & statistics" + ::= { ubntAirMAX 1 } + + ubntRadioEntry OBJECT-TYPE + SYNTAX UbntRadioEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the ubntRadioTable" + INDEX { ubntRadioIndex } + ::= { ubntRadioTable 1 } + + UbntRadioEntry ::= SEQUENCE { + ubntRadioIndex Integer32, + ubntRadioMode INTEGER, + ubntRadioCCode Integer32, + ubntRadioFreq Integer32, + ubntRadioDfsEnabled TruthValue, + ubntRadioTxPower Integer32, + ubntRadioDistance Integer32, + ubntRadioChainmask Integer32, + ubntRadioAntenna DisplayString + } + + ubntRadioIndex OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Index for the ubntRadioTable" + ::= { ubntRadioEntry 1 } + + ubntRadioMode OBJECT-TYPE + SYNTAX INTEGER { + sta(1), + ap(2), + aprepeater(3), + apwds(4) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Radio mode" + ::= { ubntRadioEntry 2 } + + ubntRadioCCode OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Country code" + ::= { ubntRadioEntry 3 } + + ubntRadioFreq OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Operating frequency" + ::= { ubntRadioEntry 4 } + + ubntRadioDfsEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "DFS status" + ::= { ubntRadioEntry 5 } + + ubntRadioTxPower OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Transmit power" + ::= { ubntRadioEntry 6 } + + ubntRadioDistance OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Distance" + ::= { ubntRadioEntry 7 } + + ubntRadioChainmask OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Chainmask" + ::= { ubntRadioEntry 8 } + + ubntRadioAntenna OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Antenna" + ::= { ubntRadioEntry 9 } + + ubntRadioRssiTable OBJECT-TYPE + SYNTAX SEQUENCE OF UbntRadioRssiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Radio RSSI per chain" + ::= { ubntAirMAX 2 } + + ubntRadioRssiEntry OBJECT-TYPE + SYNTAX UbntRadioRssiEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the ubntRadioRssiTable" + INDEX { ubntRadioIndex, ubntRadioRssiIndex } + ::= { ubntRadioRssiTable 1 } + + UbntRadioRssiEntry ::= SEQUENCE { + ubntRadioRssiIndex Integer32, + ubntRadioRssi Integer32, + ubntRadioRssiMgmt Integer32, + ubntRadioRssiExt Integer32 + } + + ubntRadioRssiIndex OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Index for the ubntRadioRssiTable" + ::= { ubntRadioRssiEntry 1 } + + ubntRadioRssi OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Data frames rssi per chain" + ::= { ubntRadioRssiEntry 2 } + + ubntRadioRssiMgmt OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Management frames rssi per chain" + ::= { ubntRadioRssiEntry 3 } + + ubntRadioRssiExt OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Extension channel rssi per chain" + ::= { ubntRadioRssiEntry 4 } + + -- -------------------------------------------------------------------------------- + -- airMAX table + -- -------------------------------------------------------------------------------- + + ubntAirMaxTable OBJECT-TYPE + SYNTAX SEQUENCE OF UbntAirMaxEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "airMAX protocol statistics" + ::= { ubntAirMAX 6 } + + ubntAirMaxEntry OBJECT-TYPE + SYNTAX UbntAirMaxEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the ubntAirMaxTable" + INDEX { ubntAirMaxIfIndex } + ::= { ubntAirMaxTable 1 } + + UbntAirMaxEntry ::= SEQUENCE { + ubntAirMaxIfIndex Integer32, + ubntAirMaxEnabled TruthValue, + ubntAirMaxQuality Integer32, + ubntAirMaxCapacity Integer32, + ubntAirMaxPriority INTEGER, + ubntAirMaxNoAck TruthValue, + ubntAirMaxAirtime Integer32, + ubntAirMaxGpsSync TruthValue, + ubntAirMaxTdd TruthValue + } + + ubntAirMaxIfIndex OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Index for the ubntAirMaxTable" + ::= { ubntAirMaxEntry 1 } + + ubntAirMaxEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airMAX status - on/off" + ::= { ubntAirMaxEntry 2 } + + ubntAirMaxQuality OBJECT-TYPE + SYNTAX Integer32 (0..100) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airMAX quality - percentage" + ::= { ubntAirMaxEntry 3 } + + ubntAirMaxCapacity OBJECT-TYPE + SYNTAX Integer32 (0..100) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airMAX capacity - percentage" + ::= { ubntAirMaxEntry 4 } + + ubntAirMaxPriority OBJECT-TYPE + SYNTAX INTEGER { + high(0), + medium(1), + low(2), + none(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airMAX priority - none/high/low/medium" + ::= { ubntAirMaxEntry 5 } + + ubntAirMaxNoAck OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airMAX NoACK mode - on/off" + ::= { ubntAirMaxEntry 6 } + + ubntAirMaxAirtime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airMAX Airtime in % multiplied by 10" + ::= { ubntAirMaxEntry 7 } + + ubntAirMaxGpsSync OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airMAX GPS sync - on/off" + ::= { ubntAirMaxEntry 8 } + + ubntAirMaxTdd OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airMAX TDD framing - on/off" + ::= { ubntAirMaxEntry 9 } + + -- -------------------------------------------------------------------------------- + -- airSync table + -- -------------------------------------------------------------------------------- + + ubntAirSyncTable OBJECT-TYPE + SYNTAX SEQUENCE OF UbntAirSyncEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "airSync protocol statistics" + ::= { ubntAirMAX 3 } + + ubntAirSyncEntry OBJECT-TYPE + SYNTAX UbntAirSyncEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the ubntAirSyncTable" + INDEX { ubntAirSyncIfIndex } + ::= { ubntAirSyncTable 1 } + + UbntAirSyncEntry ::= SEQUENCE { + ubntAirSyncIfIndex Integer32, + ubntAirSyncMode INTEGER, + ubntAirSyncCount Integer32, + ubntAirSyncDownUtil Integer32, + ubntAirSyncUpUtil Integer32 + } + + ubntAirSyncIfIndex OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Index for the ubntAirSyncTable" + ::= { ubntAirSyncEntry 1 } + + ubntAirSyncMode OBJECT-TYPE + SYNTAX INTEGER { + disabled(0), + master(1), + slave(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airSync mode - master/slave" + ::= { ubntAirSyncEntry 2 } + + ubntAirSyncCount OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airSync client count" + ::= { ubntAirSyncEntry 3 } + + ubntAirSyncDownUtil OBJECT-TYPE + SYNTAX Integer32 (0..100) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airSync down utilization" + ::= { ubntAirSyncEntry 4 } + + ubntAirSyncUpUtil OBJECT-TYPE + SYNTAX Integer32 (0..100) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airSync up utilization" + ::= { ubntAirSyncEntry 5 } + + -- -------------------------------------------------------------------------------- + -- airSelect table + -- -------------------------------------------------------------------------------- + + ubntAirSelTable OBJECT-TYPE + SYNTAX SEQUENCE OF UbntAirSelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "airSelect protocol statistics" + ::= { ubntAirMAX 4 } + + ubntAirSelEntry OBJECT-TYPE + SYNTAX UbntAirSelEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the ubntAirSelTable" + INDEX { ubntAirSelIfIndex } + ::= { ubntAirSelTable 1 } + + UbntAirSelEntry ::= SEQUENCE { + ubntAirSelIfIndex Integer32, + ubntAirSelEnabled TruthValue, + ubntAirSelInterval Integer32 + } + + ubntAirSelIfIndex OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Index for the ubntAirSelTable" + ::= { ubntAirSelEntry 1 } + + ubntAirSelEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airSelect status - on/off" + ::= { ubntAirSelEntry 2 } + + ubntAirSelInterval OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airSelect hop interval (miliseconds)" + ::= { ubntAirSelEntry 3 } + + -- -------------------------------------------------------------------------------- + -- wireless statistics table + -- -------------------------------------------------------------------------------- + + ubntWlStatTable OBJECT-TYPE + SYNTAX SEQUENCE OF UbntWlStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Wireless statistics" + ::= { ubntAirMAX 5 } + + ubntWlStatEntry OBJECT-TYPE + SYNTAX UbntWlStatEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the ubntWlStatTable" + INDEX { ubntWlStatIndex } + ::= { ubntWlStatTable 1 } + + UbntWlStatEntry ::= SEQUENCE { + ubntWlStatIndex Integer32, + ubntWlStatSsid DisplayString, + ubntWlStatHideSsid TruthValue, + ubntWlStatApMac MacAddress, + ubntWlStatSignal Integer32, + ubntWlStatRssi Integer32, + ubntWlStatCcq Integer32, + ubntWlStatNoiseFloor Integer32, + ubntWlStatTxRate Integer32, + ubntWlStatRxRate Integer32, + ubntWlStatSecurity DisplayString, + ubntWlStatWdsEnabled TruthValue, + ubntWlStatApRepeater TruthValue, + ubntWlStatChanWidth Integer32, + ubntWlStatStaCount Gauge32 + } + + ubntWlStatIndex OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Index for the ubntWlStatTable" + ::= { ubntWlStatEntry 1 } + + ubntWlStatSsid OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "SSID" + ::= { ubntWlStatEntry 2 } + + ubntWlStatHideSsid OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Hide SSID - on/off" + ::= { ubntWlStatEntry 3 } + + ubntWlStatApMac OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "AP MAC address" + ::= { ubntWlStatEntry 4 } + + ubntWlStatSignal OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Signal strength, dBm" + ::= { ubntWlStatEntry 5 } + + ubntWlStatRssi OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RSSI, dBm" + ::= { ubntWlStatEntry 6 } + + ubntWlStatCcq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CCQ in %" + ::= { ubntWlStatEntry 7 } + + ubntWlStatNoiseFloor OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Noise floor" + ::= { ubntWlStatEntry 8 } + + ubntWlStatTxRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX rate" + ::= { ubntWlStatEntry 9 } + + ubntWlStatRxRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX rate" + ::= { ubntWlStatEntry 10 } + + ubntWlStatSecurity OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Wireless security mode" + ::= { ubntWlStatEntry 11 } + + ubntWlStatWdsEnabled OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "WDS - on/off" + ::= { ubntWlStatEntry 12 } + + ubntWlStatApRepeater OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "AP repeater - on/off" + ::= { ubntWlStatEntry 13 } + + ubntWlStatChanWidth OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Channel Width" + ::= { ubntWlStatEntry 14 } + + ubntWlStatStaCount OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Station count" + ::= { ubntWlStatEntry 15 } + + -- -------------------------------------------------------------------------------- + -- station list table + -- -------------------------------------------------------------------------------- + + ubntStaTable OBJECT-TYPE + SYNTAX SEQUENCE OF UbntStaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Station list" + ::= { ubntAirMAX 7 } + + ubntStaEntry OBJECT-TYPE + SYNTAX UbntStaEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the ubntStaEntry" + INDEX { ubntWlStatIndex, ubntStaMac } + ::= { ubntStaTable 1 } + + UbntStaEntry ::= SEQUENCE { + ubntStaMac MacAddress, + ubntStaName DisplayString, + ubntStaSignal Integer32, + ubntStaNoiseFloor Integer32, + ubntStaDistance Integer32, + ubntStaCcq Integer32, + ubntStaAmp Integer32, + ubntStaAmq Integer32, + ubntStaAmc Integer32, + ubntStaLastIp IpAddress, + ubntStaTxRate Integer32, + ubntStaRxRate Integer32, + ubntStaTxBytes Counter64, + ubntStaRxBytes Counter64, + ubntStaConnTime TimeTicks, + ubntStaLocalCINR Integer32, + ubntStaTxCapacity Integer32, + ubntStaRxCapacity Integer32, + ubntStaTxAirtime Integer32, + ubntStaRxAirtime Integer32, + ubntStaTxLatency Integer32 + } + + ubntStaMac OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Station MAC address" + ::= { ubntStaEntry 1 } + + ubntStaName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Station name" + ::= { ubntStaEntry 2 } + + ubntStaSignal OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Signal strength, dBm" + ::= { ubntStaEntry 3 } + + ubntStaNoiseFloor OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Noise floor" + ::= { ubntStaEntry 4 } + + ubntStaDistance OBJECT-TYPE + SYNTAX Integer32 (1..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Distance" + ::= { ubntStaEntry 5 } + + ubntStaCcq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "CCQ in %" + ::= { ubntStaEntry 6 } + + + ubntStaAmp OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airMAX priority" + ::= { ubntStaEntry 7 } + + ubntStaAmq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airMAX quality" + ::= { ubntStaEntry 8 } + + ubntStaAmc OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "airMAX capacity" + ::= { ubntStaEntry 9 } + + ubntStaLastIp OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Last known IP address" + ::= { ubntStaEntry 10 } + + ubntStaTxRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX rate" + ::= { ubntStaEntry 11 } + + ubntStaRxRate OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "RX rate" + ::= { ubntStaEntry 12 } + + ubntStaTxBytes OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX bytes" + ::= { ubntStaEntry 13 } + + ubntStaRxBytes OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "TX rate" + ::= { ubntStaEntry 14 } + + ubntStaConnTime OBJECT-TYPE + SYNTAX TimeTicks + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Connection Time in seconds" + ::= { ubntStaEntry 15 } + + ubntStaLocalCINR OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Local CINR" + ::= { ubntStaEntry 16 } + + ubntStaTxCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Uplink Capacity in Kbps" + ::= { ubntStaEntry 17 } + + ubntStaRxCapacity OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Downlink Capacity in Kbps" + ::= { ubntStaEntry 18 } + + ubntStaTxAirtime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Uplink Airtime in % multiplied by 10" + ::= { ubntStaEntry 19 } + + ubntStaRxAirtime OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Downlink Airtime in % multiplied by 10" + ::= { ubntStaEntry 20 } + + ubntStaTxLatency OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Uplink Latency in milliseconds" + ::= { ubntStaEntry 21 } + + -- -------------------------------------------------------------------------------- + -- host stats table + -- -------------------------------------------------------------------------------- + + ubntHostInfo OBJECT IDENTIFIER ::= { ubntAirMAX 8 } + + ubntHostLocaltime OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Host local time" + ::= { ubntHostInfo 1 } + + ubntHostNetrole OBJECT-TYPE + SYNTAX INTEGER { + unknown(0), + bridge(1), + router(2), + soho(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Radio mode" + ::= { ubntHostInfo 2 } + + ubntHostCpuLoad OBJECT-TYPE + SYNTAX Integer32 (0..65535) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Host CPU load" + ::= { ubntHostInfo 3 } + + ubntHostTemperature OBJECT-TYPE + SYNTAX Integer32 (0..255) + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Host system temperature" + ::= { ubntHostInfo 4 } + + -- -------------------------------------------------------------------------------- + -- gps stats table + -- -------------------------------------------------------------------------------- + + ubntGpsInfo OBJECT IDENTIFIER ::= { ubntAirMAX 9 } + + ubntGpsStatus OBJECT-TYPE + SYNTAX INTEGER { + absent(0), + off(1), + on(2) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "GPS status" + ::= { ubntGpsInfo 1 } + + ubntGpsFix OBJECT-TYPE + SYNTAX INTEGER { + unknown(0), + nofix(1), + fix2d(2), + fix3d(3) + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION "GPS Fix Obtained" + ::= { ubntGpsInfo 2 } + + ubntGpsLat OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "GPS Latitude" + ::= { ubntGpsInfo 3 } + + ubntGpsLon OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "GPS Longitude" + ::= { ubntGpsInfo 4 } + + ubntGpsAltMeters OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "GPS Altitude (m)" + ::= { ubntGpsInfo 5 } + + ubntGpsAltFeet OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "GPS Altitude (ft)" + ::= { ubntGpsInfo 6 } + + ubntGpsSatsVisible OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "GPS Satellites Visible" + ::= { ubntGpsInfo 7 } + + ubntGpsSatsTracked OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "GPS Satellites Tracked" + ::= { ubntGpsInfo 8 } + + ubntGpsHDOP OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "GPS Horizontal Dilution of Precision" + ::= { ubntGpsInfo 9 } + + + ubntAirMAXStatusGroup OBJECT-GROUP OBJECTS { + ubntStaName, + ubntStaSignal, + ubntStaNoiseFloor, + ubntStaDistance, + ubntStaCcq, + ubntStaAmp, + ubntStaAmq, + ubntStaAmc, + ubntStaLastIp, + ubntStaTxRate, + ubntStaRxRate, + ubntStaTxBytes, + ubntStaRxBytes, + ubntStaConnTime, + ubntStaLocalCINR, + ubntStaTxCapacity, + ubntStaRxCapacity, + ubntStaTxAirtime, + ubntStaRxAirtime, + ubntStaTxLatency, + ubntRadioMode, + ubntRadioCCode, + ubntRadioFreq, + ubntRadioDfsEnabled, + ubntRadioTxPower, + ubntRadioDistance, + ubntRadioChainmask, + ubntRadioAntenna, + ubntRadioRssi, + ubntRadioRssiMgmt, + ubntRadioRssiExt, + ubntAirMaxEnabled, + ubntAirMaxQuality, + ubntAirMaxCapacity, + ubntAirMaxPriority, + ubntAirMaxNoAck, + ubntAirMaxAirtime, + ubntAirMaxGpsSync, + ubntAirMaxTdd, + ubntAirSyncMode, + ubntAirSyncCount, + ubntAirSyncDownUtil, + ubntAirSyncUpUtil, + ubntAirSelEnabled, + ubntAirSelInterval, + ubntWlStatSsid, + ubntWlStatHideSsid, + ubntWlStatApMac, + ubntWlStatSignal, + ubntWlStatRssi, + ubntWlStatCcq, + ubntWlStatNoiseFloor, + ubntWlStatTxRate, + ubntWlStatRxRate, + ubntWlStatSecurity, + ubntWlStatWdsEnabled, + ubntWlStatApRepeater, + ubntWlStatChanWidth, + ubntWlStatStaCount, + ubntHostLocaltime, + ubntHostNetrole, + ubntHostCpuLoad, + ubntHostTemperature, + ubntGpsStatus, + ubntGpsFix, + ubntGpsLat, + ubntGpsLon, + ubntGpsAltMeters, + ubntGpsAltFeet, + ubntGpsSatsVisible, + ubntGpsSatsTracked, + ubntGpsHDOP} + STATUS current + DESCRIPTION "Status and statistics for AirMax monitoring" + ::= { ubntAirosGroups 1 } + + ubntAirMAXStatusCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for Ubiquiti AirMax entities." + MODULE + GROUP ubntAirMAXStatusGroup + DESCRIPTION "This group is for Ubiquiti systems." + ::= { ubntAirosGroups 2 } + +END diff --git a/files/UBNT-MIB.txt b/files/UBNT-MIB.txt new file mode 100755 index 0000000..cebcbdd --- /dev/null +++ b/files/UBNT-MIB.txt @@ -0,0 +1,108 @@ +UBNT-MIB DEFINITIONS ::= BEGIN + IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, enterprises FROM SNMPv2-SMI + DisplayString FROM SNMPv2-TC + OBJECT-GROUP, MODULE-COMPLIANCE FROM SNMPv2-CONF; + + ubntMIB MODULE-IDENTITY + LAST-UPDATED "201402270000Z" + ORGANIZATION "Ubiquiti Networks, Inc." + CONTACT-INFO "support@ubnt.com" + DESCRIPTION "The MIB module for Ubiquiti Networks, Inc. entities" + REVISION "201402270000Z" + DESCRIPTION "Split revision" + ::= { ubnt 1 } + + -- -------------------------------------------------------------------------------- + -- Ubiquiti Networks Root + -- -------------------------------------------------------------------------------- + + ubnt OBJECT IDENTIFIER ::= { enterprises 41112 } + + -- -------------------------------------------------------------------------------- + -- Ubiquiti Networks SNMP Information + -- -------------------------------------------------------------------------------- + + ubntSnmpInfo OBJECT IDENTIFIER ::= { ubntMIB 2 } + ubntSnmpGroups OBJECT IDENTIFIER ::= { ubntSnmpInfo 1} + ubntAirosGroups OBJECT IDENTIFIER ::= { ubntSnmpInfo 2} + ubntAirFiberGroups OBJECT IDENTIFIER ::= { ubntSnmpInfo 3} + ubntEdgeMaxGroups OBJECT IDENTIFIER ::= { ubntSnmpInfo 4} + ubntUniFiGroups OBJECT IDENTIFIER ::= { ubntSnmpInfo 5} + ubntAirVisionGroups OBJECT IDENTIFIER ::= { ubntSnmpInfo 6} + ubntMFiGroups OBJECT IDENTIFIER ::= { ubntSnmpInfo 7} + ubntUniTelGroups OBJECT IDENTIFIER ::= { ubntSnmpInfo 8} + + -- -------------------------------------------------------------------------------- + -- Ubiquiti Networks Products + -- -------------------------------------------------------------------------------- + + ubntAirFIBER OBJECT IDENTIFIER ::= { ubntMIB 3 } + ubntEdgeMax OBJECT IDENTIFIER ::= { ubntMIB 5 } + ubntUniFi OBJECT IDENTIFIER ::= { ubntMIB 6 } + ubntAirVision OBJECT IDENTIFIER ::= { ubntMIB 7 } + ubntMFi OBJECT IDENTIFIER ::= { ubntMIB 8 } + ubntUniTel OBJECT IDENTIFIER ::= { ubntMIB 9 } + + -- -------------------------------------------------------------------------------- + -- Ubiquiti Networks OR table + -- -------------------------------------------------------------------------------- + + ubntORTable OBJECT-TYPE + SYNTAX SEQUENCE OF UbntOREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Capabilities" + ::= { ubntMIB 1 } + + ubntOREntry OBJECT-TYPE + SYNTAX UbntOREntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "An entry in the ubntORTable" + INDEX { ubntORIndex } + ::= { ubntORTable 1 } + + UbntOREntry ::= SEQUENCE { + ubntORIndex Integer32, + ubntORID OBJECT IDENTIFIER, + ubntORDescr DisplayString + } + + ubntORIndex OBJECT-TYPE + SYNTAX Integer32 (1..255) + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Index for the ubntORTable" + ::= { ubntOREntry 1 } + + ubntORID OBJECT-TYPE + SYNTAX OBJECT IDENTIFIER + MAX-ACCESS read-only + STATUS current + DESCRIPTION "OR ID" + ::= { ubntOREntry 2 } + + ubntORDescr OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "Description of idenfifier" + ::= { ubntOREntry 3 } + + ubntORInfoGroup OBJECT-GROUP + OBJECTS { ubntORID, + ubntORDescr } + STATUS current + DESCRIPTION "Collection of related objects" + ::= { ubntSnmpGroups 1 } + + ubntORCompliance MODULE-COMPLIANCE + STATUS current + DESCRIPTION "The compliance statement for Ubiquiti entities." + MODULE + GROUP ubntORInfoGroup + DESCRIPTION "This group is for Ubiquiti systems." + ::= { ubntSnmpGroups 2 } + +END diff --git a/files/UBNT-UniFi-MIB.txt b/files/UBNT-UniFi-MIB.txt new file mode 100644 index 0000000..77633f3 --- /dev/null +++ b/files/UBNT-UniFi-MIB.txt @@ -0,0 +1,606 @@ +UBNT-UniFi-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Unsigned32, Counter32, Gauge32, IpAddress, enterprises + FROM SNMPv2-SMI + TEXTUAL-CONVENTION, DisplayString, MacAddress, DateAndTime, TruthValue + FROM SNMPv2-TC + MODULE-COMPLIANCE, OBJECT-GROUP + FROM SNMPv2-CONF + ubntMIB, ubntUniFi, ubntUniFiGroups + FROM UBNT-MIB; + +ubntUniFi MODULE-IDENTITY + LAST-UPDATED "201606250000Z" + ORGANIZATION "Ubiquiti Networks, Inc." + CONTACT-INFO "support@ubnt.com" + DESCRIPTION "The UniFi MIB module for Ubiquiti Networks, Inc. entities" + REVISION "201606250000Z" + DESCRIPTION "Initial Revision." + ::= { ubntMIB 6 } + +unifiApWireless OBJECT IDENTIFIER ::= { ubntUniFi 1 } +unifiApIf OBJECT IDENTIFIER ::= { ubntUniFi 2 } +unifiApSystem OBJECT IDENTIFIER ::= { ubntUniFi 3 } + + +TableIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d" + STATUS current + DESCRIPTION + "A unique value, greater than zero. It is recommended + that values are assigned contiguously starting from 1." + SYNTAX Integer32 (1..2147483647) + + +ObjectIndex ::= TEXTUAL-CONVENTION + DISPLAY-HINT "x" + STATUS current + DESCRIPTION "Internal " + SYNTAX Integer32 (0..2147483647) +-- SYNTAX Integer32 (-2147483648..2147483647) +-- SYNTAX Unsigned32 (0..4294967295) + +Voltage ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-2" + STATUS current + DESCRIPTION "" + SYNTAX Integer32 (-2147483648..2147483647) + +Temperature ::= TEXTUAL-CONVENTION + DISPLAY-HINT "d-1" + STATUS current + DESCRIPTION "" + SYNTAX Integer32 (-2147483648..2147483647) + +unifiIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF UbntIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "" + ::= { unifiApIf 1 } + +unifiIfEntry OBJECT-TYPE + SYNTAX UbntIfEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Ethernet interface" + INDEX { unifiIfIndex } + ::= { unifiIfTable 1 } + +UbntIfEntry ::= SEQUENCE { + unifiIfIndex ObjectIndex, + unifiIfFullDuplex TruthValue, + unifiIfIp IpAddress, + unifiIfMac MacAddress, + unifiIfName DisplayString, + unifiIfRxBytes Counter32, + unifiIfRxDropped Counter32, + unifiIfRxError Counter32, + unifiIfRxMulticast Counter32, + unifiIfRxPackets Counter32, + unifiIfSpeed Integer32, + unifiIfTxBytes Counter32, + unifiIfTxDropped Counter32, + unifiIfTxError Counter32, + unifiIfTxPackets Counter32, + unifiIfUp TruthValue +} + +unifiIfIndex OBJECT-TYPE + SYNTAX ObjectIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 1 } + +unifiIfFullDuplex OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 2 } + +unifiIfIp OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 3 } + +unifiIfMac OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 4 } + +unifiIfName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 5 } + +unifiIfRxBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 6 } + +unifiIfRxDropped OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 7 } + +unifiIfRxError OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 8 } + +unifiIfRxMulticast OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 9 } + +unifiIfRxPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 10 } + +unifiIfSpeed OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 11 } + +unifiIfTxBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 12 } + +unifiIfTxDropped OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 13 } + +unifiIfTxError OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 14 } + +unifiIfTxPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 15 } + +unifiIfUp OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiIfEntry 16 } + +unifiRadioTable OBJECT-TYPE + SYNTAX SEQUENCE OF UbntRadioEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "" + ::= { unifiApWireless 1 } + +unifiRadioEntry OBJECT-TYPE + SYNTAX UbntRadioEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "Wireless interface" + INDEX { unifiRadioIndex } + ::= { unifiRadioTable 1 } + +UbntRadioEntry ::= SEQUENCE { + unifiRadioIndex ObjectIndex, + unifiRadioName DisplayString, + unifiRadioRadio DisplayString, + unifiRadioRxPackets Counter32, + unifiRadioTxPackets Counter32, + unifiRadioCuTotal Integer32, + unifiRadioCuSelfRx Integer32, + unifiRadioCuSelfTx Integer32, + unifiRadioOtherBss Integer32 +} + +unifiRadioIndex OBJECT-TYPE + SYNTAX ObjectIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "" + ::= { unifiRadioEntry 1 } + +unifiRadioName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiRadioEntry 2 } + +unifiRadioRadio OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiRadioEntry 3 } + +unifiRadioRxPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiRadioEntry 4 } + +unifiRadioTxPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiRadioEntry 5 } + +unifiRadioCuTotal OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiRadioEntry 6 } + +unifiRadioCuSelfRx OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiRadioEntry 7 } + +unifiRadioCuSelfTx OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiRadioEntry 8 } + +unifiRadioOtherBss OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiRadioEntry 9 } + +unifiVapTable OBJECT-TYPE + SYNTAX SEQUENCE OF UbntVapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "" + ::= { unifiApWireless 2 } + +unifiVapEntry OBJECT-TYPE + SYNTAX UbntVapEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "BSS" + INDEX { unifiVapIndex } + ::= { unifiVapTable 1 } + +UbntVapEntry ::= SEQUENCE { + unifiVapIndex ObjectIndex, + unifiVapBssId MacAddress, + unifiVapCcq Integer32, + unifiVapChannel Integer32, + unifiVapExtChannel Integer32, + unifiVapEssId DisplayString, + unifiVapName DisplayString, + unifiVapNumStations Integer32, + unifiVapRadio DisplayString, + unifiVapRxBytes Counter32, + unifiVapRxCrypts Counter32, + unifiVapRxDropped Counter32, + unifiVapRxErrors Counter32, + unifiVapRxFrags Counter32, + unifiVapRxPackets Counter32, + unifiVapTxBytes Counter32, + unifiVapTxDropped Counter32, + unifiVapTxErrors Counter32, + unifiVapTxPackets Counter32, + unifiVapTxRetries Counter32, + unifiVapTxPower Integer32, + unifiVapUp TruthValue, + unifiVapUsage DisplayString +} + +unifiVapIndex OBJECT-TYPE + SYNTAX ObjectIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 1 } + +unifiVapBssId OBJECT-TYPE + SYNTAX MacAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 2 } + +unifiVapCcq OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 3 } + +unifiVapChannel OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 4 } + +unifiVapExtChannel OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 5 } + +unifiVapEssId OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 6 } + +unifiVapName OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 7 } + +unifiVapNumStations OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 8 } + +unifiVapRadio OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 9 } + +unifiVapRxBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 10 } + +unifiVapRxCrypts OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 11 } + +unifiVapRxDropped OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 12 } + +unifiVapRxErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 13 } + +unifiVapRxFrags OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 14 } + +unifiVapRxPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 15 } + +unifiVapTxBytes OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 16 } + +unifiVapTxDropped OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 17 } + +unifiVapTxErrors OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 18 } + +unifiVapTxPackets OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 19 } + +unifiVapTxRetries OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 20 } + +unifiVapTxPower OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 21 } + +unifiVapUp OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiVapEntry 22 } + +unifiVapUsage OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "guest or regular user" + ::= { unifiVapEntry 23 } + +unifiApSystemIp OBJECT-TYPE + SYNTAX IpAddress + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiApSystem 1 } + +unifiApSystemIsolated OBJECT-TYPE + SYNTAX TruthValue + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiApSystem 2 } + +unifiApSystemModel OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiApSystem 3 } + +unifiApSystemUplink OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiApSystem 4 } + +unifiApSystemUptime OBJECT-TYPE + SYNTAX Counter32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiApSystem 5 } + +unifiApSystemVersion OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-only + STATUS current + DESCRIPTION "" + ::= { unifiApSystem 6 } + +unifiIfGroup OBJECT-GROUP OBJECTS { + unifiIfFullDuplex, + unifiIfIp, + unifiIfMac, + unifiIfName, + unifiIfRxBytes, + unifiIfRxDropped, + unifiIfRxError, + unifiIfRxMulticast, + unifiIfRxPackets, + unifiIfSpeed, + unifiIfTxBytes, + unifiIfTxDropped, + unifiIfTxError, + unifiIfTxPackets, + unifiIfUp + } + STATUS current + DESCRIPTION "" + ::= { ubntUniFiGroups 1 } + +unifiRadioGroups OBJECT-GROUP OBJECTS { + unifiRadioName, + unifiRadioRadio, + unifiRadioRxPackets, + unifiRadioTxPackets, + unifiRadioCuTotal, + unifiRadioCuSelfRx, + unifiRadioCuSelfTx, + unifiRadioOtherBss + } + STATUS current + DESCRIPTION "" + ::= { ubntUniFiGroups 2 } + +unifiVapGroups OBJECT-GROUP OBJECTS { + unifiVapBssId, + unifiVapCcq, + unifiVapChannel, + unifiVapExtChannel, + unifiVapEssId, + unifiVapName, + unifiVapNumStations, + unifiVapRadio, + unifiVapRxBytes, + unifiVapRxCrypts, + unifiVapRxDropped, + unifiVapRxErrors, + unifiVapRxFrags, + unifiVapRxPackets, + unifiVapTxBytes, + unifiVapTxDropped, + unifiVapTxErrors, + unifiVapTxPackets, + unifiVapTxRetries, + unifiVapTxPower, + unifiVapUp, + unifiVapUsage + } + STATUS current + DESCRIPTION "" + ::= { ubntUniFiGroups 3 } + +unifiApSystemGroup OBJECT-GROUP OBJECTS { + unifiApSystemIp, unifiApSystemIsolated, unifiApSystemModel, unifiApSystemUplink, unifiApSystemUptime, unifiApSystemVersion + } + STATUS current + DESCRIPTION "" + ::= { ubntUniFiGroups 4 } + +END diff --git a/tasks/telegraf-Debian.yml b/tasks/telegraf-Debian.yml index dc0bccd..a7b22ad 100644 --- a/tasks/telegraf-Debian.yml +++ b/tasks/telegraf-Debian.yml @@ -23,3 +23,15 @@ state: latest update_cache: yes cache_valid_time: 3600 + +# Install SNMP utilities for telegraf monitoring +- name: telegraf - Install SNMP utilities + become: yes + apt: + name: "{{ packages }}" + state: present + vars: + packages: + - snmp + - snmp-mibs-downloader + when: telegraf_ubnt_ns_ips is defined diff --git a/tasks/telegraf.yml b/tasks/telegraf.yml index cf98f9b..29fb3a2 100644 --- a/tasks/telegraf.yml +++ b/tasks/telegraf.yml @@ -9,11 +9,34 @@ - "telegraf-{{ ansible_distribution }}.yml" - "telegraf-{{ (override_os_family is defined) | ternary(override_os_family,ansible_os_family) }}.yml" +# Install SNMP MIBs +- name: telegraf - Install SNMP MIBs + become: yes + block: + - name: SNMP - Download and install Ubiquiti MIB + copy: + src: "{{ role_path }}/files/UBNT-MIB.txt" + dest: /usr/share/snmp/mibs/UBNT-MIB + - name: SNMP - Download and install Ubiquiti MIB + copy: + src: "{{ role_path }}/files/UBNT-AirMAX-MIB.txt" + dest: /usr/share/snmp/mibs/UBNT-AirMAX-MIB + - name: SNMP - Download and install UniFi MIB + copy: + src: "{{ role_path }}/files/UBNT-UniFi-MIB.txt" + dest: /usr/share/snmp/mibs/UBNT-UniFi-MIB + - name: SNMP - Setup snmp.conf + lineinfile: + name: /etc/snmp/snmp.conf + line: mibs +ALL + create: yes + when: telegraf_ubnt_ns_ips is defined + # Configure - name: telegraf - Copy telegraf config become: yes template: - src: "{{ role_path }}/templates/telegraf.conf" + src: "{{ role_path }}/templates/telegraf.conf.j2" dest: /etc/telegraf/telegraf.conf notify: - Enable and restart telegraf diff --git a/templates/telegraf-AirMAX.conf.j2 b/templates/telegraf-AirMAX.conf.j2 new file mode 100644 index 0000000..9b88a9c --- /dev/null +++ b/templates/telegraf-AirMAX.conf.j2 @@ -0,0 +1,78 @@ +{# Telegraf config snippet for Ubiquiti AirMAX devices (NanoStation) #} +{# Variables: #} +{# - telegraf_ubnt_ns_ips: List of IPs of NanoStation #} + +{% if telegraf_ubnt_ns_ips is defined %} +## +## SNMP Input For Ubiquiti AirMAX Devices +## +[[inputs.snmp]] +agents = [ "{{ telegraf_ubnt_ns_ips | join('", "') }}" ] + interval = "5m" + timeout = "10s" + retries = 3 + version = 1 + community = "public" + max_repetitions = 10 + name = "snmp.AirMAX" + + ## + ## System Details + ## + # System name (hostname) + [[inputs.snmp.field]] + is_tag = true + name = "sysName" + oid = "RFC1213-MIB::sysName.0" + # System vendor OID + [[inputs.snmp.field]] + name = "sysObjectID" + oid = "RFC1213-MIB::sysObjectID.0" + # System description + [[inputs.snmp.field]] + name = "sysDescr" + oid = "RFC1213-MIB::sysDescr.0" + # System contact + [[inputs.snmp.field]] + name = "sysContact" + oid = "RFC1213-MIB::sysContact.0" + # System location + [[inputs.snmp.field]] + name = "sysLocation" + oid = "RFC1213-MIB::sysLocation.0" + # System uptime + [[inputs.snmp.field]] + name = "sysUpTime" + oid = "RFC1213-MIB::sysUpTime.0" + + ## + ## Interface Details & Metrics + ## + # Radio TX power + [[inputs.snmp.table]] + oid = "UBNT-AirMAX-MIB::ubntRadioTable" + [[inputs.snmp.table.field]] + is_tag = true + oid = "UBNT-AirMAX-MIB::ubntRadioAntenna" + # RSSI + [[inputs.snmp.table]] + oid = "UBNT-AirMAX-MIB::ubntRadioRssiTable" + [[inputs.snmp.table.field]] + is_tag = true + oid = "UBNT-AirMAX-MIB::ubntRadioRssiIndex" + # Wireless link stats + [[inputs.snmp.table]] + oid = "UBNT-AirMAX-MIB::ubntWlStatTable" + [[inputs.snmp.table.field]] + is_tag = true + oid = "UBNT-AirMAX-MIB::ubntWlStatIndex" + [[inputs.snmp.table.field]] + is_tag = true + oid = "UBNT-AirMAX-MIB::ubntWlStatSsid" + # Remote station info + [[inputs.snmp.table]] + oid = "UBNT-AirMAX-MIB::ubntStaTable" + [[inputs.snmp.table.field]] + is_tag = true + oid = "UBNT-AirMAX-MIB::ubntStaName" +{% endif %} diff --git a/templates/telegraf.conf b/templates/telegraf.conf.j2 similarity index 98% rename from templates/telegraf.conf rename to templates/telegraf.conf.j2 index ab3296c..fd15136 100644 --- a/templates/telegraf.conf +++ b/templates/telegraf.conf.j2 @@ -66,6 +66,8 @@ {% include telegraf_unifi_file %} +{% include telegraf_airmax_file %} + # # Monitor sensors, requires lm-sensors package # [[inputs.sensors]]