aboutsummaryrefslogtreecommitdiff
path: root/ansible
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2020-10-01 10:35:02 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2020-10-01 10:35:02 +0200
commita85a827ff03e08e6de20dc8134e3974c87a8186b (patch)
treef3694ad8d559bf6fcad663e5e40a77e5b071d4f5 /ansible
parentf0eb5c33f944e520ad1d7cc4f82b5ef7f984ec71 (diff)
downloadinfra-a85a827ff03e08e6de20dc8134e3974c87a8186b.tar.gz
infra-a85a827ff03e08e6de20dc8134e3974c87a8186b.tar.bz2
infra-a85a827ff03e08e6de20dc8134e3974c87a8186b.tar.xz
infra-a85a827ff03e08e6de20dc8134e3974c87a8186b.zip
unifi: SNMP setup.
Diffstat (limited to 'ansible')
-rw-r--r--ansible/host_vars/birgitte/ops-server-secrets.yml8
-rw-r--r--ansible/plays/ops-server-generate-telegraf-config.yml15
-rw-r--r--ansible/plays/ops-server.yml16
-rw-r--r--ansible/plays/templates/ops-server/docker-compose.yml3
-rw-r--r--ansible/plays/templates/ops-server/telegraf.conf495
-rw-r--r--ansible/plays/templates/ops-server/telegraf.conf.j296
-rw-r--r--ansible/plays/templates/ops-server/unifi/UBNT-MIB108
-rw-r--r--ansible/plays/templates/ops-server/unifi/UBNT-UniFi-MIB606
8 files changed, 1178 insertions, 169 deletions
diff --git a/ansible/host_vars/birgitte/ops-server-secrets.yml b/ansible/host_vars/birgitte/ops-server-secrets.yml
new file mode 100644
index 0000000..3a4faf3
--- /dev/null
+++ b/ansible/host_vars/birgitte/ops-server-secrets.yml
@@ -0,0 +1,8 @@
+$ANSIBLE_VAULT;1.1;AES256
+37396161393962653630306339333930336562346333303162303365343837383836613064366533
+3161613437376366356434616264343737613261616461610a663437613530666630323330396635
+39633932616138373231393361366463613162393561366165326465373337366335353939363561
+3539636131623930390a336639616332653634343632313534653363353332396566303835373838
+33613634626135653465323864393939363861363430663563386663323364623364653561353232
+65373364373139626462623739306462653264306464333839643866626338393038366332393266
+353661346435616532323264613465666263
diff --git a/ansible/plays/ops-server-generate-telegraf-config.yml b/ansible/plays/ops-server-generate-telegraf-config.yml
index 9bafd2a..4e662c4 100644
--- a/ansible/plays/ops-server-generate-telegraf-config.yml
+++ b/ansible/plays/ops-server-generate-telegraf-config.yml
@@ -5,10 +5,23 @@
src: ops-server/telegraf.conf.j2
dest: templates/ops-server/telegraf.conf
vars:
- - aps:
+ - devices:
+ - name: SW oppe
+ ip: 192.168.10.10
+ type: switch
+ - name: SW nede
+ ip: 192.168.10.11
+ type: switch
+ - name: SW cloud
+ ip: 192.168.10.12
+ type: switch
+
- name: Over stue
ip: 192.168.10.20
+ type: ap
- name: Over kjøkken
ip: 192.168.10.21
+ type: ap
- name: Kontor
ip: 192.168.10.22
+ type: ap
diff --git a/ansible/plays/ops-server.yml b/ansible/plays/ops-server.yml
index 543b547..74c0cff 100644
--- a/ansible/plays/ops-server.yml
+++ b/ansible/plays/ops-server.yml
@@ -1,3 +1,4 @@
+- import_playbook: ops-server-generate-telegraf-config.yml
- hosts:
- birgitte
vars:
@@ -5,13 +6,16 @@
etc_dir: /etc/docker-service/ops-server
tasks:
- become: yes
- name: mkdir /etc/docker-service/ops-server
+ name: mkdirs /etc/docker-service/ops-server
file:
- dest: /etc/docker-service/ops-server
+ dest: "/etc/docker-service/ops-server/{{ item }}"
state: directory
owner: root
group: root
mode: u=rx
+ loop:
+ - ""
+ - unifi
- become: yes
template:
src: "templates/ops-server/influxdb.conf"
@@ -21,6 +25,13 @@
template:
src: "templates/ops-server/telegraf.conf"
dest: "{{ etc_dir }}/telegraf.conf"
+ - become: yes
+ template:
+ src: "templates/ops-server/unifi/{{ item }}"
+ dest: "{{ etc_dir }}/unifi/{{ item }}"
+ loop:
+ - UBNT-MIB
+ - UBNT-UniFi-MIB
- become: yes
name: permissions
@@ -37,4 +48,3 @@
template: templates/ops-server/docker-compose.yml
# systemd_enabled: no
# systemd_state: stopped
-
diff --git a/ansible/plays/templates/ops-server/docker-compose.yml b/ansible/plays/templates/ops-server/docker-compose.yml
index c459401..48a6e4c 100644
--- a/ansible/plays/templates/ops-server/docker-compose.yml
+++ b/ansible/plays/templates/ops-server/docker-compose.yml
@@ -27,6 +27,9 @@ services:
- influx
volumes:
- {{ etc_dir }}/telegraf.conf:/etc/telegraf/telegraf.conf:ro
+ - {{ etc_dir }}/unifi/UBNT-MIB:/root/.snmp/mibs/UBNT-MIB:ro
+ - {{ etc_dir }}/unifi/UBNT-UniFi-MIB:/root/.snmp/mibs/UBNT-UniFi-MIB:ro
+
environment:
INFLUX_URL: "http://idb:8086"
command:
diff --git a/ansible/plays/templates/ops-server/telegraf.conf b/ansible/plays/templates/ops-server/telegraf.conf
index 18a858b..4567e34 100644
--- a/ansible/plays/templates/ops-server/telegraf.conf
+++ b/ansible/plays/templates/ops-server/telegraf.conf
@@ -2,237 +2,506 @@
urls = ["$INFLUX_URL"]
skip_database_creation = false
-# Access point: Over stue
+# snmpget -v 3 -u $username -a SHA -A $password -l authPriv -x AES -X $password 192.168.10.21 RFC1213-MIB::sysName.0
+
+# Device: SW oppe, type: switch
[[inputs.snmp]]
- agents = [ "192.168.10.20" ]
+ agents = [ "192.168.10.10" ]
version = 2
community = "public"
- interval = "60s"
- timeout = "30s"
-# meta information
-# this will be added automatically as a tag to the next snmp.table
[[inputs.snmp.field]]
oid = "RFC1213-MIB::sysName.0"
- name = "ap_name"
+ name = "name"
is_tag = true
[[inputs.snmp.field]]
oid = "RFC1213-MIB::sysLocation.0"
- name = "ap_location"
+ name = "location"
is_tag = true
-# table
[[inputs.snmp.table]]
-# Using the oid here will query all fields automatically!
-# Be careful when using the oid on inputs.snmp.table as this will
-# produce a lot of information
-# oid = "IF-MIB::ifXTable"
- name = "unifi_ap_if"
- inherit_tags = ["ap_name", "ap_location"]
+ oid = "IF-MIB::ifXTable"
+ name = "snmp_if_iftable"
+ inherit_tags = ["name", "location"]
-# fields
+
+# SNMP Fields that should be tags
[[inputs.snmp.table.field]]
oid = "IF-MIB::ifName"
- name = "name"
is_tag = true
-
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifOperStatus"
- name = "status"
+ oid = "IF-MIB::ifLinkUpDownTrapEnable"
is_tag = true
-
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifAlias"
- name = "ifAlias"
+ oid = "IF-MIB::ifHighSpeed"
is_tag = true
-
[[inputs.snmp.table.field]]
oid = "IF-MIB::ifPromiscuousMode"
- name = "promiscuous_mode"
is_tag = true
-
[[inputs.snmp.table.field]]
oid = "IF-MIB::ifConnectorPresent"
- name = "has_connector"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifAlias"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifCounterDiscontinuityTime"
is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifPhysAddress"
- name = "mac"
- conversion = "hwaddr"
+ oid = "UBNT-UniFi-MIB::unifiRadioName"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiRadioRadio"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiRadioOtherBss"
is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCInOctets"
- name = "rx_bytes"
+ oid = "UBNT-UniFi-MIB::unifiVapBssId"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapCcq"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapEssId"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapName"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapRadio"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapUp"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapUsage"
+ is_tag = true
+
+# Device: SW nede, type: switch
+[[inputs.snmp]]
+ agents = [ "192.168.10.11" ]
+ version = 2
+ community = "public"
+
+[[inputs.snmp.field]]
+ oid = "RFC1213-MIB::sysName.0"
+ name = "name"
+ is_tag = true
+
+[[inputs.snmp.field]]
+ oid = "RFC1213-MIB::sysLocation.0"
+ name = "location"
+ is_tag = true
+
+[[inputs.snmp.table]]
+ oid = "IF-MIB::ifXTable"
+ name = "snmp_if_iftable"
+ inherit_tags = ["name", "location"]
+
+
+# SNMP Fields that should be tags
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifName"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifLinkUpDownTrapEnable"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifHighSpeed"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifPromiscuousMode"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifConnectorPresent"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifAlias"
+ is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCInUcastPkts"
- name = "rx_ucast_pkt"
+ oid = "IF-MIB::ifCounterDiscontinuityTime"
+ is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCOutOctets"
- name = "tx_bytes"
+ oid = "UBNT-UniFi-MIB::unifiRadioName"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiRadioRadio"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiRadioOtherBss"
+ is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCOutUcastPkts"
- name = "tx_ucast_pkt"
+ oid = "UBNT-UniFi-MIB::unifiVapBssId"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapCcq"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapEssId"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapName"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapRadio"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapUp"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapUsage"
+ is_tag = true
-# Access point: Over kjøkken
+# Device: SW cloud, type: switch
[[inputs.snmp]]
- agents = [ "192.168.10.21" ]
+ agents = [ "192.168.10.12" ]
version = 2
community = "public"
- interval = "60s"
- timeout = "30s"
-# meta information
-# this will be added automatically as a tag to the next snmp.table
[[inputs.snmp.field]]
oid = "RFC1213-MIB::sysName.0"
- name = "ap_name"
+ name = "name"
is_tag = true
[[inputs.snmp.field]]
oid = "RFC1213-MIB::sysLocation.0"
- name = "ap_location"
+ name = "location"
is_tag = true
-# table
[[inputs.snmp.table]]
-# Using the oid here will query all fields automatically!
-# Be careful when using the oid on inputs.snmp.table as this will
-# produce a lot of information
-# oid = "IF-MIB::ifXTable"
- name = "unifi_ap_if"
- inherit_tags = ["ap_name", "ap_location"]
+ oid = "IF-MIB::ifXTable"
+ name = "snmp_if_iftable"
+ inherit_tags = ["name", "location"]
-# fields
+
+# SNMP Fields that should be tags
[[inputs.snmp.table.field]]
oid = "IF-MIB::ifName"
- name = "name"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifLinkUpDownTrapEnable"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifHighSpeed"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifPromiscuousMode"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifConnectorPresent"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifAlias"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifCounterDiscontinuityTime"
is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifOperStatus"
- name = "status"
+ oid = "UBNT-UniFi-MIB::unifiRadioName"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiRadioRadio"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiRadioOtherBss"
is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifAlias"
- name = "ifAlias"
+ oid = "UBNT-UniFi-MIB::unifiVapBssId"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapCcq"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapEssId"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapName"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapRadio"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapUp"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapUsage"
+ is_tag = true
+
+# Device: Over stue, type: ap
+
+[[inputs.snmp]]
+ agents = [ "192.168.10.20" ]
+ version = 2
+ community = "public"
+
+[[inputs.snmp.field]]
+ oid = "RFC1213-MIB::sysName.0"
+ name = "name"
+ is_tag = true
+
+[[inputs.snmp.field]]
+ oid = "RFC1213-MIB::sysLocation.0"
+ name = "location"
is_tag = true
+[[inputs.snmp.table]]
+ oid = "IF-MIB::ifXTable"
+ name = "snmp_if_iftable"
+ inherit_tags = ["name", "location"]
+
+[[inputs.snmp.table]]
+ oid = "UBNT-UniFi-MIB::unifiRadioTable"
+ name = "unifi_radio"
+ index_as_tag = true
+ inherit_tags = ["name", "location"]
+
+[[inputs.snmp.table]]
+ oid = "UBNT-UniFi-MIB::unifiVapTable"
+ name = "unifi_vap"
+ index_as_tag = true
+ inherit_tags = ["name", "location"]
+
+# SNMP Fields that should be tags
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifName"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifLinkUpDownTrapEnable"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifHighSpeed"
+ is_tag = true
[[inputs.snmp.table.field]]
oid = "IF-MIB::ifPromiscuousMode"
- name = "promiscuous_mode"
is_tag = true
-
[[inputs.snmp.table.field]]
oid = "IF-MIB::ifConnectorPresent"
- name = "has_connector"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifAlias"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifCounterDiscontinuityTime"
is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifPhysAddress"
- name = "mac"
- conversion = "hwaddr"
+ oid = "UBNT-UniFi-MIB::unifiRadioName"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiRadioRadio"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiRadioOtherBss"
is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCInOctets"
- name = "rx_bytes"
+ oid = "UBNT-UniFi-MIB::unifiVapBssId"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapCcq"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapEssId"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapName"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapRadio"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapUp"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapUsage"
+ is_tag = true
+
+# Device: Over kjøkken, type: ap
+
+[[inputs.snmp]]
+ agents = [ "192.168.10.21" ]
+ version = 2
+ community = "public"
+
+[[inputs.snmp.field]]
+ oid = "RFC1213-MIB::sysName.0"
+ name = "name"
+ is_tag = true
+
+[[inputs.snmp.field]]
+ oid = "RFC1213-MIB::sysLocation.0"
+ name = "location"
+ is_tag = true
+
+[[inputs.snmp.table]]
+ oid = "IF-MIB::ifXTable"
+ name = "snmp_if_iftable"
+ inherit_tags = ["name", "location"]
+
+[[inputs.snmp.table]]
+ oid = "UBNT-UniFi-MIB::unifiRadioTable"
+ name = "unifi_radio"
+ index_as_tag = true
+ inherit_tags = ["name", "location"]
+
+[[inputs.snmp.table]]
+ oid = "UBNT-UniFi-MIB::unifiVapTable"
+ name = "unifi_vap"
+ index_as_tag = true
+ inherit_tags = ["name", "location"]
+# SNMP Fields that should be tags
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifName"
+ is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCInUcastPkts"
- name = "rx_ucast_pkt"
+ oid = "IF-MIB::ifLinkUpDownTrapEnable"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifHighSpeed"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifPromiscuousMode"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifConnectorPresent"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifAlias"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "IF-MIB::ifCounterDiscontinuityTime"
+ is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCOutOctets"
- name = "tx_bytes"
+ oid = "UBNT-UniFi-MIB::unifiRadioName"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiRadioRadio"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiRadioOtherBss"
+ is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCOutUcastPkts"
- name = "tx_ucast_pkt"
+ oid = "UBNT-UniFi-MIB::unifiVapBssId"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapCcq"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapEssId"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapName"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapRadio"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapUp"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapUsage"
+ is_tag = true
-# Access point: Kontor
+# Device: Kontor, type: ap
[[inputs.snmp]]
agents = [ "192.168.10.22" ]
version = 2
community = "public"
- interval = "60s"
- timeout = "30s"
-# meta information
-# this will be added automatically as a tag to the next snmp.table
[[inputs.snmp.field]]
oid = "RFC1213-MIB::sysName.0"
- name = "ap_name"
+ name = "name"
is_tag = true
[[inputs.snmp.field]]
oid = "RFC1213-MIB::sysLocation.0"
- name = "ap_location"
+ name = "location"
is_tag = true
-# table
[[inputs.snmp.table]]
-# Using the oid here will query all fields automatically!
-# Be careful when using the oid on inputs.snmp.table as this will
-# produce a lot of information
-# oid = "IF-MIB::ifXTable"
- name = "unifi_ap_if"
- inherit_tags = ["ap_name", "ap_location"]
+ oid = "IF-MIB::ifXTable"
+ name = "snmp_if_iftable"
+ inherit_tags = ["name", "location"]
-# fields
+[[inputs.snmp.table]]
+ oid = "UBNT-UniFi-MIB::unifiRadioTable"
+ name = "unifi_radio"
+ index_as_tag = true
+ inherit_tags = ["name", "location"]
+
+[[inputs.snmp.table]]
+ oid = "UBNT-UniFi-MIB::unifiVapTable"
+ name = "unifi_vap"
+ index_as_tag = true
+ inherit_tags = ["name", "location"]
+
+# SNMP Fields that should be tags
[[inputs.snmp.table.field]]
oid = "IF-MIB::ifName"
- name = "name"
is_tag = true
-
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifOperStatus"
- name = "status"
+ oid = "IF-MIB::ifLinkUpDownTrapEnable"
is_tag = true
-
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifAlias"
- name = "ifAlias"
+ oid = "IF-MIB::ifHighSpeed"
is_tag = true
-
[[inputs.snmp.table.field]]
oid = "IF-MIB::ifPromiscuousMode"
- name = "promiscuous_mode"
is_tag = true
-
[[inputs.snmp.table.field]]
oid = "IF-MIB::ifConnectorPresent"
- name = "has_connector"
is_tag = true
-
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifPhysAddress"
- name = "mac"
- conversion = "hwaddr"
+ oid = "IF-MIB::ifAlias"
is_tag = true
-
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCInOctets"
- name = "rx_bytes"
+ oid = "IF-MIB::ifCounterDiscontinuityTime"
+ is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCInUcastPkts"
- name = "rx_ucast_pkt"
-
+ oid = "UBNT-UniFi-MIB::unifiRadioName"
+ is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCOutOctets"
- name = "tx_bytes"
+ oid = "UBNT-UniFi-MIB::unifiRadioRadio"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiRadioOtherBss"
+ is_tag = true
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCOutUcastPkts"
- name = "tx_ucast_pkt"
+ oid = "UBNT-UniFi-MIB::unifiVapBssId"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapCcq"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapEssId"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapName"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapRadio"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapUp"
+ is_tag = true
+[[inputs.snmp.table.field]]
+ oid = "UBNT-UniFi-MIB::unifiVapUsage"
+ is_tag = true
diff --git a/ansible/plays/templates/ops-server/telegraf.conf.j2 b/ansible/plays/templates/ops-server/telegraf.conf.j2
index e973358..61f9279 100644
--- a/ansible/plays/templates/ops-server/telegraf.conf.j2
+++ b/ansible/plays/templates/ops-server/telegraf.conf.j2
@@ -2,83 +2,75 @@
urls = ["$INFLUX_URL"]
skip_database_creation = false
-{% for ap in aps %}
-# Access point: {{ ap.name }}
+# snmpget -v 3 -u $username -a SHA -A $password -l authPriv -x AES -X $password 192.168.10.21 RFC1213-MIB::sysName.0
+
+{% for device in devices %}
+# Device: {{ device.name }}, type: {{ device.type }}
[[inputs.snmp]]
- agents = [ "{{ ap.ip }}" ]
+ agents = [ "{{ device.ip }}" ]
+{# Some MIBs are missing over v3 #}
+{% if true %}
version = 2
community = "public"
+{% else %}
+ version = 3
+ sec_name = "{{ '{{' }} unifi_snmp_username }}"
+ auth_protocol = "SHA"
+ auth_password = "{{ '{{' }} unifi_snmp_password }}"
+ sec_level = "authPriv"
+ priv_protocol = "AES"
+ priv_password = "{{ '{{' }} unifi_snmp_password }}"
interval = "60s"
timeout = "30s"
+{% endif %}
-# meta information
-# this will be added automatically as a tag to the next snmp.table
[[inputs.snmp.field]]
oid = "RFC1213-MIB::sysName.0"
- name = "ap_name"
+ name = "name"
is_tag = true
[[inputs.snmp.field]]
oid = "RFC1213-MIB::sysLocation.0"
- name = "ap_location"
+ name = "location"
is_tag = true
-# table
[[inputs.snmp.table]]
-# Using the oid here will query all fields automatically!
-# Be careful when using the oid on inputs.snmp.table as this will
-# produce a lot of information
-# oid = "IF-MIB::ifXTable"
- name = "unifi_ap_if"
- inherit_tags = ["ap_name", "ap_location"]
-
-# fields
-[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifName"
- name = "name"
- is_tag = true
+ oid = "IF-MIB::ifXTable"
+ name = "snmp_if_iftable"
+ inherit_tags = ["name", "location"]
-[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifOperStatus"
- name = "status"
- is_tag = true
-
-[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifAlias"
- name = "ifAlias"
- is_tag = true
+{% if device.type == "ap" %}
+[[inputs.snmp.table]]
+ oid = "UBNT-UniFi-MIB::unifiRadioTable"
+ name = "unifi_radio"
+ index_as_tag = true
+ inherit_tags = ["name", "location"]
+[[inputs.snmp.table]]
+ oid = "UBNT-UniFi-MIB::unifiVapTable"
+ name = "unifi_vap"
+ index_as_tag = true
+ inherit_tags = ["name", "location"]
+{% endif %}
+
+# SNMP Fields that should be tags
+{% for f in [ "ifName", "ifLinkUpDownTrapEnable", "ifHighSpeed", "ifPromiscuousMode", "ifConnectorPresent", "ifAlias", "ifCounterDiscontinuityTime" ] %}
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifPromiscuousMode"
- name = "promiscuous_mode"
+ oid = "IF-MIB::{{ f }}"
is_tag = true
+{% endfor %}
+{% for f in [ "unifiRadioName", "unifiRadioRadio", "unifiRadioOtherBss" ] %}
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifConnectorPresent"
- name = "has_connector"
+ oid = "UBNT-UniFi-MIB::{{ f }}"
is_tag = true
+{% endfor %}
+{% for f in [ "unifiVapBssId", "unifiVapCcq", "unifiVapEssId", "unifiVapName", "unifiVapRadio", "unifiVapUp", "unifiVapUsage" ] %}
[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifPhysAddress"
- name = "mac"
- conversion = "hwaddr"
+ oid = "UBNT-UniFi-MIB::{{ f }}"
is_tag = true
-
-[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCInOctets"
- name = "rx_bytes"
-
-[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCInUcastPkts"
- name = "rx_ucast_pkt"
-
-[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCOutOctets"
- name = "tx_bytes"
-
-[[inputs.snmp.table.field]]
- oid = "IF-MIB::ifHCOutUcastPkts"
- name = "tx_ucast_pkt"
+{% endfor %}
{% endfor %}
diff --git a/ansible/plays/templates/ops-server/unifi/UBNT-MIB b/ansible/plays/templates/ops-server/unifi/UBNT-MIB
new file mode 100644
index 0000000..cebcbdd
--- /dev/null
+++ b/ansible/plays/templates/ops-server/unifi/UBNT-MIB
@@ -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/ansible/plays/templates/ops-server/unifi/UBNT-UniFi-MIB b/ansible/plays/templates/ops-server/unifi/UBNT-UniFi-MIB
new file mode 100644
index 0000000..b064a77
--- /dev/null
+++ b/ansible/plays/templates/ops-server/unifi/UBNT-UniFi-MIB
@@ -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