UniFi AP Dashboard

Dashboard

UBNT UniFi AP Templated Dashboard
Last updated: 2 months ago

Downloads: 174

  • Snap1.png
    Snap1.png
  • Snap4.png
    Snap4.png
  • Snap3.png
    Snap3.png
  • Snap2.png
    Snap2.png

Overview

Detailed dashboard for monitoring of Ubiquiti UniFi Access Points.

Please Note that the collector configuration has been updated to support the current dashboard. If you are updating a previous revision of the dashboard please check the collector configuration as well to ensure it is current. The configuration is now dated for comparison.

This dashboard works with Gen2 and later APs. Gen1 APs do support monitoring via SNMP, however they provide very little instrumentation due to the lack of support for the IF-MIB and UBNT-UniFi-MIB mibs.

The Telegraf collector configuration is MIB-based so all of the required MIBs will need to be available for the collector to perform the needed translations. Most SNMP distributions available on most platforms already provide these with one exception (see below). This configuration uses the "new" SNMP plugin for Telegraf, so SNMP monitoring must be enabled in the UniFi controller. The 'agents' list in the configuration is of the actual APs themselves, however, and not the controller.

This dashboard does display the SNMP contact and location detail, but there is currently no method to configure these via the UniFi controller. Instead, these may be set (optionally, as desired) using the method described in UniFi - How to make persistent changes to UAP(s) system.cfg. Two simple additions to the config.properties file apply this to all APs in a given site (adjust the item number and values as appropriate):

config.system_cfg.1=snmp.contact=admin@mydomain.com
config.system_cfg.2=snmp.location=somewhere

Notes

The CCQ & Stations graphs may need to be adjusted if there are more than than two total vAPs (multiple SSIDs per radio) selected, as the legend may grow too large with the graphs configured as-is. This would be a matter of preference. The template does allow a selection of vAPs to display as an option.

The Unifi MIB locations may be found in the UniFi Updates Blog announcements for UniFi releases. These should be downloaded and placed in the default SNMP MIBs location on the server where the Telegraf instance is running.

The FROGFOOT-RESOURCES-MIB will also be needed, but a simple web search should provide many references to sources if needed. Some SNMP distributions already include this, but not all.

Change history

11 April 2017 (v4): Added selector for radio; Updated channel/power panels to properly reflect both radios when multiple SSIDs are configured. This change requires an updated Telegraf collector configuration dated no earlier than this same date.

References

This dashboard and dependent configurations may also be found at https://github.com/WaterByWind/grafana-dashboards

License

This dashboard is distributed under The MIT License (MIT)

Collector Configuration Details

Telegraf SNMP plugin configuration (add to telegraf.conf).

Note: You will need to change/set these in the configuration below:

  • SNMP community string for input plugin
  • URL to your InfluxDB instance for output plugin
  • InfluxDB username & password for output plugin
##
## SNMP Input Plugin
##
## UniFi APs (Gen 2/Gen 3)
## Last update:  11 April 2017
##
 [[inputs.snmp]]
   # List of agents to poll
   agents = [ "uap1", "uap2" ]
   # Polling interval
   interval = "60s"
   # Timeout for each SNMP query.
   timeout = "10s"
   # Number of retries to attempt within timeout.
   retries = 3
   # SNMP version, UAP only supports v1
   version = 1
   # SNMP community string.
   community = "public"
   # The GETBULK max-repetitions parameter
   max_repetitions = 10
   # Measurement name
   name = "snmp.UAP"
   ##
   ## 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"
   #  UAP model
   [[inputs.snmp.field]]
     name = "unifiApSystemModel"
     oid = "UBNT-UniFi-MIB::unifiApSystemModel"
   #  UAP firmware version
   [[inputs.snmp.field]]
     name = "unifiApSystemVersion"
     oid = "UBNT-UniFi-MIB::unifiApSystemVersion"
   ##
   ## Host Resources
   ##
   #  Total memory
   [[inputs.snmp.field]]
     name = "memTotal"
     oid = "FROGFOOT-RESOURCES-MIB::memTotal.0"
   #  Free memory
   [[inputs.snmp.field]]
     name = "memFree"
     oid = "FROGFOOT-RESOURCES-MIB::memFree.0"
   #  Buffer memory
   [[inputs.snmp.field]]
     name = "memBuffer"
     oid = "FROGFOOT-RESOURCES-MIB::memBuffer.0"
   #  Cache memory
   [[inputs.snmp.field]]
     name = "memCache"
     oid = "FROGFOOT-RESOURCES-MIB::memCache.0"
   #  Per-interface traffic, errors, drops
   [[inputs.snmp.table]]
     oid = "IF-MIB::ifTable"
     [[inputs.snmp.table.field]]
       is_tag = true
       oid = "IF-MIB::ifDescr"
   ##
   ## Interface Details & Metrics
   ##
   #  Wireless interfaces
   [[inputs.snmp.table]]
     oid = "UBNT-UniFi-MIB::unifiRadioTable"
     [[inputs.snmp.table.field]]
       is_tag = true
       oid = "UBNT-UniFi-MIB::unifiRadioName"
     [[inputs.snmp.table.field]]
       is_tag = true
       oid = "UBNT-UniFi-MIB::unifiRadioRadio"
   #  BSS instances
   [[inputs.snmp.table]]
     oid = "UBNT-UniFi-MIB::unifiVapTable"
     [[inputs.snmp.table.field]]
       is_tag = true
       oid = "UBNT-UniFi-MIB::unifiVapName"
     [[inputs.snmp.table.field]]
       is_tag = true
       oid = "UBNT-UniFi-MIB::unifiVapRadio"
   #  Ethernet interfaces
   [[inputs.snmp.table]]
     oid = "UBNT-UniFi-MIB::unifiIfTable"
     [[inputs.snmp.table.field]]
       is_tag = true
       oid = "UBNT-UniFi-MIB::unifiIfName"
   ##
   ## System Performance
   ##
   #  System load averages
   [[inputs.snmp.table]]
     oid = "FROGFOOT-RESOURCES-MIB::loadTable"
     [[inputs.snmp.table.field]]
       is_tag = true
       oid = "FROGFOOT-RESOURCES-MIB::loadDescr"
   ##
   ## SNMP metrics
   ##
   #  Number of SNMP messages received
   [[inputs.snmp.field]]
     name = "snmpInPkts"
     oid = "SNMPv2-MIB::snmpInPkts.0"
   #  Number of SNMP Get-Request received
   [[inputs.snmp.field]]
     name = "snmpInGetRequests"
     oid = "SNMPv2-MIB::snmpInGetRequests.0"
   #  Number of SNMP Get-Next received
   [[inputs.snmp.field]]
     name = "snmpInGetNexts"
     oid = "SNMPv2-MIB::snmpInGetNexts.0"
   #  Number of SNMP objects requested
   [[inputs.snmp.field]]
     name = "snmpInTotalReqVars"
     oid = "SNMPv2-MIB::snmpInTotalReqVars.0"
   #  Number of SNMP Get-Response received
   [[inputs.snmp.field]]
     name = "snmpInGetResponses"
     oid = "SNMPv2-MIB::snmpInGetResponses.0"
   #  Number of SNMP messages sent
   [[inputs.snmp.field]]
     name = "snmpOutPkts"
     oid = "SNMPv2-MIB::snmpOutPkts.0"
   #  Number of SNMP Get-Request sent
   [[inputs.snmp.field]]
     name = "snmpOutGetRequests"
     oid = "SNMPv2-MIB::snmpOutGetRequests.0"
   #  Number of SNMP Get-Next sent
   [[inputs.snmp.field]]
     name = "snmpOutGetNexts"
     oid = "SNMPv2-MIB::snmpOutGetNexts.0"
   #  Number of SNMP Get-Response sent
   [[inputs.snmp.field]]
     name = "snmpOutGetResponses"
     oid = "SNMPv2-MIB::snmpOutGetResponses.0"
##
## InfluxDB Output Plugin
##
[[outputs.influxdb]]
  urls = ["http://localhost:8086"] # required
  database = "telegraf" # required
  retention_policy = ""
  write_consistency = "any"
  timeout = "5s"
  username = "username"
  password = "password"
  user_agent = "telegraf"
#