- Notifications
You must be signed in to change notification settings - Fork4
ajanis/ansible-unifi
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This role makes use ofThis Docker Role to deploy the Ubiquiti Unifi Admin service along with a Prometheus metrics exporter container and the Telegraf metrics collector along with required SNMP MIBS/configurations.
This is an example of how to use this role to deploy the Ubiquiti Unifi Admin controller and a Prometheus metrics collector for Unifi Admin
Calls the docker role with the following group_vars to build a docker image from the specified git repo and deploy the containerized service and systemd configs.
---data_mount_root:/dataconfigs_directory:configsunms_version:1.1.5unms_config_directory:"{{ data_mount_root }}/{{ configs_directory }}/unms"unms_data_directory:"{{ unms_config_directory }}/data"unms_app_directory:"{{ unms_config_directory }}/app"unms_pgconf_directory:"{{ unms_app_directory }}/conf/postgres"unms_yarn_directory:"{{ unms_app_directory }}/.yarn"unms_log_directory:"{{ unms_data_directory }}/logs"unms_redis_directory:"{{ unms_data_directory }}/redis"unms_postgres_directory:"{{ unms_data_directory }}/postgres"unms_rabbitmq_directory:"{{ unms_data_directory }}/rabbitmq"unms_ucrm_directory:"{{ unms_data_directory }}/ucrm"unms_firmware_directory:"{{ unms_data_directory }}/firmwares"unms_cert_directory:"{{ unms_data_directory }}/cert"unms_enable_ssl:Falseunms_user_id:"1000"unms_postgres_host:"unms-postgres"unms_admin_postgres_user:"root"unms_admin_postgres_password:"jh6UE6RI5xtPqtHbs1WQkZepftu4IH9NX2SgnkQIbBxXFCXP"unms_unms_postgres_db:"unms"unms_unms_postgres_schema:"unms"unms_unms_postgres_user:"unms"unms_unms_postgres_password:"h6AP3aPIkuDlj8iyDuh9mv3S5yul2HupLLLZIH39MuXJC8gf"unms_ucrm_postgres_db:"unms"unms_ucrm_postgres_schema:"ucrm"unms_ucrm_postgres_user:"ucrm"unms_ucrm_postgres_password:"ypELME0RTpkwi045ELL8sHGF6ZAJE4TEPbu5hmnqIXpzdjMF"unms_pgdata:"/var/lib/postgresql/data/pgdata"unms_demo:"false"unms_node_env:"production"unms_http_port:"8081"unms_ws_port:"8082"unms_ws_shell_port:"8083"unms_ws_api_port:"8084"unms_netflow_port:"2055"unms_public_https_port:"443"unms_public_ws_port:""unms_nginx_https_port:"443"unms_nginx_http_port:"80"unms_ssl_cert:"localhost.crt"unms_ssl_cert_key:"localhost.key"unms_ssl_cert_ca:""unms_ip_whitelist:""unms_suspend_port:"81"unms_host_tag:""unms_branch:"master"unms_http_proxy:""unms_https_proxy:""unms_no_proxy:""unms_secure_link_secret:"3p8Vkj5FK8fgZI7k0NdiXze5XDQgCoil2wrFoASaHymMbx0TS1sAcJxmpl342s3ZgQbfKSJHsZym1pZSui558rHiBwxSB09A89MA"unms_cluster_size:"auto"unms_token:"oMoPnh7RUabnFmRuwBcIdmACGeKYsPI6qw69qAro3Njv62vw"unms_deployment:""unms_features:""unms_use_local_discovery:"true"unms_mailer_address:"127.1.0.1"unms_mailer_address_username:"username"unms_mailer_address_password:"password"unms_secret:"BPee0eCuyJqmcpqCDA2WjzKtCXP1b2k7aerqdDV0QxOvAvoe"unms_ucrm_user:"unms"unms_host:"unms"unms_base_url:"/v2.1"unms_fluentd_port:"24224"unms_rabbitmq_server_additional_erl_args:"-rabbit channel_max 4096"docker_unifi_container_name:unifiunifi_admin_host:"unifi.{{ www_domain | default('example.com') }}"unifi_admin_url:"https://{{ unifi_admin_host }}:8443"unifi_config_directory:"{{ data_mount_root }}/{{ configs_directory }}/unifi"unifi_data_directory:'{{ unifi_config_directory }}/data'unifi_container_data_directory:/config/dataunifi_container_java_directory:/usr/lib/jvm/java-1.8.0-openjdk-amd64unifi_enable_ssl:Falseunifi_snmp_v3_password:"{{ vault_unifi_snmp_v3_password | default('') }}"unifi_snmp_v3_username:telegrafunifi_exporter_config_directory:"{{ data_mount_root }}/{{ configs_directory }}/unifi_exporter"unifi_admin_site:defaultssl_privkey:ssl_certchain:ssl_certpath:ssl_keypath:
---unms_version:1.2.1docker_containers:unifi:description:"Unifi Admin Controller"image:linuxserver/unifi-controller:latestrestart_policy:unless-stoppednetwork_mode:hostpull:"true"ports:[]volumes: -"/etc/localtime:/etc/localtime:ro" -"{{ unifi_config_directory }}:/config"environment:PUID:"0"PGID:"0"log-driver:"journald"log_options:tag:unifi-admin/unifi-adminunifi_exporter:description:"Prometheus Metrics Collector Unifi"image:unifi_exporterrestart_policy:unless-stoppeddepends_on: -unificommand:"-config.file /etc/unifi_exporter/config.yml"volumes: -"{{ unifi_exporter_config_directory }}:/etc/unifi_exporter"log-driver:"journald"log_options:tag:unifi-exporter/unifi-exporterunifi-poller:description:"Unifi-Poller Utility"image:golift/unifi-poller:latestrestart_policy:unless-stoppeddepends_on: -unifivolumes: -"{{ unifi_poller_config_directory }}:/config"log-driver:"journald"log_options:tag:unifi-poller/unifi-pollernetwork_mode:hostdocker_compose_projects: -project_name:unmspull:yesdefinition:version:'3.5'x-logging:&default-loggingdriver:fluentdnetworks:internal:name:unms-internaldriver:bridgepublic:name:unms-publicdriver:bridgeservices:fluentd:container_name:unms-fluentdimage:"ubnt/unms-fluentd:{{ unms_version }}"tty:truenetworks:public:aliases: -fluentdports: -"127.0.0.1:{{ unms_fluentd_port }}:{{ unms_fluentd_port }}"volumes: -"{{ unms_log_directory }}:/fluentd/log"environment:FLUENTD_UID:"{{ unms_user_id }}"redis:container_name:unms-redisimage:"redis:5.0.5-alpine"restart:alwaysuser:"{{ unms_user_id }}"depends_on: -fluentdnetworks:internal:aliases: -redisvolumes: -"{{ unms_redis_directory }}:/data/db"logging:<<:*default-loggingoptions:fluentd-async-connect:"true"tag:unms-redistty:truecommand:"redis-server --appendonly yes --dir /data/db/"siridb:container_name:unms-siridbimage:"ubnt/unms-siridb:{{ unms_version }}"user:"{{ unms_user_id }}"restart:alwaysdepends_on: -fluentdnetworks:internal:aliases: -siridbvolumes: -"{{ unms_siridb_directory }}:/var/lib/siridb"logging:<<:*default-loggingoptions:fluentd-async-connect:"true"tag:unms-siridbpostgres:container_name:unms-postgresimage:"postgres:9.6.12-alpine"restart:alwaystty:true#user: "{{ unms_user_id }}"command:postgres -c log_min_duration_statement=500 -c deadlock_timeout=5000depends_on: -fluentdnetworks:internal:aliases: -postgresvolumes: -"{{ unms_pgconf_directory }}:/docker-entrypoint-initdb.d" -"{{ unms_postgres_directory }}:{{ unms_pgdata }}"logging:<<:*default-loggingoptions:fluentd-async-connect:"true"tag:unms-postgresenvironment:POSTGRES_USER:"{{ unms_admin_postgres_user }}"POSTGRES_PASSWORD:"{{ unms_admin_postgres_password }}"UNMS_POSTGRES_DB:"{{ unms_unms_postgres_db }}"UNMS_POSTGRES_SCHEMA:"{{ unms_unms_postgres_schema }}"UNMS_POSTGRES_USER:"{{ unms_unms_postgres_user }}"UNMS_POSTGRES_PASSWORD:"{{ unms_unms_postgres_password }}"UCRM_POSTGRES_DB:"{{ unms_ucrm_postgres_db }}"UCRM_POSTGRES_SCHEMA:"{{ unms_ucrm_postgres_schema }}"UCRM_POSTGRES_USER:"{{ unms_ucrm_postgres_user }}"UCRM_POSTGRES_PASSWORD:"{{ unms_ucrm_postgres_password }}"PGDATA:"{{ unms_pgdata }}"rabbitmq:container_name:unms-rabbitmqimage:"rabbitmq:3.7.14-alpine"restart:alwaysuser:"{{ unms_user_id }}"tty:truedepends_on: -fluentdnetworks:internal:aliases: -rabbitmqhostname:unms-rabbitmqvolumes: -"{{ unms_rabbitmq_directory }}:/var/lib/rabbitmq"logging:<<:*default-loggingoptions:fluentd-async-connect:"true"tag:unms-rabbitmqenvironment:RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS:"{{ unms_rabbitmq_server_additional_erl_args }}"unms:container_name:unmsimage:"ubnt/unms:{{ unms_version }}"restart:alwaystty:truedepends_on: -fluentd -redis -postgres -rabbitmq -nginx -ucrmnetworks: -public -internalvolumes: -"{{ unms_data_directory }}/:/home/app/unms/data" -"{{ unms_yarn_directory }}:/home/app/.yarn"logging:<<:*default-loggingoptions:fluentd-async-connect:"true"tag:unmsenvironment:UNMS_USER_ID:"{{ unms_user_id }}"DEMO:"{{ unms_demo }}"NODE_ENV:"{{ unms_node_env }}"HTTP_PORT:"{{ unms_http_port }}"WS_PORT:"{{ unms_ws_port }}"WS_SHELL_PORT:"{{ unms_ws_shell_port }}"UNMS_WS_API_PORT:"{{ unms_ws_api_port }}"UNMS_NETFLOW_PORT:"{{ unms_netflow_port }}"SSL_CERT:"{{ unms_ssl_cert }}"PUBLIC_HTTPS_PORT:"{{ unms_public_https_port }}"PUBLIC_WS_PORT:"{{ unms_public_ws_port }}"NGINX_HTTPS_PORT:"{{ unms_nginx_https_port }}"NGINX_WS_PORT:"{{ unms_public_ws_port }}"SUSPEND_PORT:"{{ unms_suspend_port }}"HOST_TAG:"{{ unms_host_tag }}"BRANCH:"{{ unms_branch }}"HTTP_PROXY:"{{ unms_http_proxy }}"HTTPS_PROXY:"{{ unms_https_proxy }}"NO_PROXY:"{{ unms_no_proxy }}"http_proxy:"{{ unms_http_proxy }}"https_proxy:"{{ unms_https_proxy }}"no_proxy:"{{ unms_no_proxy }}"SECURE_LINK_SECRET:"{{ unms_secure_link_secret }}"CLUSTER_SIZE:"{{ unms_cluster_size }}"UNMS_PG_PASSWORD:"{{ unms_unms_postgres_password }}"UNMS_PG_USER:"{{ unms_unms_postgres_user }}"UNMS_PG_DB:"{{ unms_unms_postgres_db }}"UNMS_PG_SCHEMA:"{{ unms_unms_postgres_schema }}"UNMS_TOKEN:"{{ unms_token }}"UNMS_DEPLOYMENT:"{{ unms_deployment }}"UNMS_FEATURES:"{{ unms_features }}"USE_LOCAL_DISCOVERY:"{{ unms_use_local_discovery }}"cap_add: -NET_ADMINucrm:container_name:ucrmimage:"ubnt/unms-crm:3.1.2"restart:alwaystty:truevolumes: -"{{ unms_ucrm_directory }}:/data"command:server_with_migratedepends_on: -fluentd -postgres -rabbitmq -nginxnetworks: -public -internallogging:<<:*default-loggingoptions:fluentd-async-connect:"true"tag:ucrmenvironment:POSTGRES_HOST:"{{ unms_postgres_host }}"POSTGRES_PASSWORD:"{{ unms_ucrm_postgres_password }}"POSTGRES_SCHEMA:"{{ unms_ucrm_postgres_schema }}"POSTGRES_USER:"{{ unms_ucrm_postgres_user }}"POSTGRES_DB:"{{ unms_ucrm_postgres_db }}"MAILER_ADDRESS:"{{ unms_mailer_address }}"MAILER_ADDRESS_USERNAME:"{{ unms_mailer_address_username }}"MAILER_ADDRESS_PASSWORD:"{{ unms_mailer_address_password }}"SECRET:"{{ unms_secret }}"SUSPEND_PORT:"{{ unms_suspend_port }}"PUBLIC_HTTPS_PORT:"{{ unms_public_https_port }}"UCRM_USER:"{{ unms_ucrm_user }}"UNMS_VERSION:"{{ unms_version }}"UNMS_HOST:"{{ unms_host }}"UNMS_PORT:"{{ unms_http_port }}"UNMS_TOKEN:"{{ unms_token }}"UNMS_BASE_URL:"{{ unms_base_url }}"UNMS_POSTGRES_SCHEMA:"{{ unms_unms_postgres_schema }}"nginx:container_name:unms-nginximage:"ubnt/unms-nginx:{{ unms_version }}"restart:alwaystty:trueports: -"{{ unms_nginx_http_port }}:{{ unms_nginx_http_port }}" -"{{ unms_nginx_https_port }}:{{ unms_nginx_https_port }}" -"{{ unms_suspend_port }}:{{ unms_suspend_port }}"networks:public:aliases: -nginxinternal:aliases: -nginxvolumes: -"{{ unms_cert_directory }}:/cert" -"{{ unms_firmware_directory }}:/www/firmwares"depends_on: -fluentdlogging:<<:*default-loggingoptions:fluentd-async-connect:"true"tag:unms-nginxenvironment:NGINX_UID:"{{ unms_user_id }}"SSL_CERT:"{{ unms_ssl_cert }}"SSL_CERT_KEY:"{{ unms_ssl_cert_key }}"SSL_CERT_CA:"{{ unms_ssl_cert_ca }}"HTTP_PORT:"{{ unms_nginx_http_port }}"HTTPS_PORT:"{{ unms_nginx_https_port }}"SUSPEND_PORT:"{{ unms_suspend_port }}"WS_PORT:"{{ unms_public_ws_port }}"UNMS_HTTP_PORT:"{{ unms_http_port }}"UNMS_WS_PORT:"{{ unms_ws_port }}"UNMS_WS_SHELL_PORT:"{{ unms_ws_shell_port }}"UNMS_WS_API_PORT:"{{ unms_ws_api_port }}"UNMS_IP_WHITELIST:"{{ unms_ip_whitelist }}"PUBLIC_HTTPS_PORT:"{{ unms_public_https_port }}"SECURE_LINK_SECRET:"{{ unms_secure_link_secret }}"netflow:container_name:unms-netflowimage:"ubnt/unms-netflow:{{ unms_version }}"restart:alwaystty:trueuser:"{{ unms_user_id }}"ports: -"{{ unms_netflow_port }}:{{ unms_netflow_port }}/udp"volumes: -"/etc/localtime:/etc/localtime:ro"networks:internal:aliases: -netflowpublic:aliases: -netflowdepends_on: -fluentd -postgres -rabbitmq -redislogging:<<:*default-loggingoptions:fluentd-async-connect:"true"tag:unms-netflowenvironment:UNMS_NETFLOW_PORT:"{{ unms_netflow_port }}"UNMS_PG_PASSWORD:"{{ unms_unms_postgres_password}}"UNMS_PG_USER:"{{ unms_unms_postgres_user }}"UNMS_PG_DB:"{{ unms_unms_postgres_db }}"UNMS_PG_SCHEMA:"{{ unms_unms_postgres_schema }}"docker_build_images:unifi_exporter:repo:"https://github.com/ajanis/unifi_exporter.git"telegraf_plugins_extra: -name:dockeroptions:endpoint:"unix:///var/run/docker.sock"timeout:"5s"perdevice:"true"total:"true" -name:syslogoptions:server:"tcp://:6514"unifi_accesspoints: -"192.168.0.200" -"192.168.0.202" -"192.168.0.203" -"192.168.0.205"unifi_switches: -"192.168.0.209" -"192.168.0.211"rsyslog_config:true# defines if rsyslog should be configured to listen on tcp/514rsyslog_allow_tcp:true# sets the TCP port rsyslog should listen on if TCP is enabled. 514 is the IANA assigned portrsyslog_tcp_port:"514"# defines if rsyslog should be configured to listen on udp/514rsyslog_allow_udp:true# sets the UDP port rsyslog should listen on if UDP is enabled. 514 is the IANA assigned portrsyslog_udp_port:"514"# remote rsyslog server configsrsyslog_servers: -name:(o)127.0.0.1proto:tcpport:"6514"format:"RSYSLOG_SyslogProtocol23Format"selectors: -"*.*"telegraf_plugins_extra: -name:dockeroptions:endpoint:"unix:///var/run/docker.sock"timeout:"5s"perdevice:"true"total:"true" -name:syslogoptions:server:"tcp4://:6514"## EdgeSwitch CPU Utilization -name:execoptions:commands: -"/usr/local/bin/edgeswitch_load.sh 192.168.0.5" -"/usr/local/bin/edgeswitch_load.sh 192.168.0.6" -"/usr/local/bin/edgeswitch_load.sh 192.168.0.7"timeout:"1s"interval:"5s"data_format:"influx"## Unifi Switch Metrics## Ubiquiti AP Devices -name:snmpoptions:name:"snmp.UAP"agents:"{{ unifi_accesspoints }}"interval:"10s"timeout:"10s"retries:3version:2community:"public"max_repetitions:1 -name:snmp.fieldoptions:is_tag:"true"name:"sysName"oid:"RFC1213-MIB::sysName.0" -name:snmp.fieldoptions:name:"sysObjectID"oid:"RFC1213-MIB::sysObjectID.0" -name:snmp.fieldoptions:name:"sysDescr"oid:"RFC1213-MIB::sysDescr.0" -name:snmp.fieldoptions:name:"sysContact"oid:"RFC1213-MIB::sysContact.0" -name:snmp.fieldoptions:name:"sysLocation"oid:"RFC1213-MIB::sysLocation.0" -name:snmp.fieldoptions:name:"sysUpTime"oid:"RFC1213-MIB::sysUpTime.0" -name:snmp.fieldoptions:name:"unifiApSystemModel"oid:"UBNT-UniFi-MIB::unifiApSystemModel" -name:snmp.fieldoptions:name:"unifiApSystemVersion"oid:"UBNT-UniFi-MIB::unifiApSystemVersion" -name:snmp.fieldoptions:name:"memTotal"oid:"FROGFOOT-RESOURCES-MIB::memTotal.0" -name:snmp.fieldoptions:name:"memFree"oid:"FROGFOOT-RESOURCES-MIB::memFree.0" -name:snmp.fieldoptions:name:"memBuffer"oid:"FROGFOOT-RESOURCES-MIB::memBuffer.0" -name:snmp.fieldoptions:name:"memCache"oid:"FROGFOOT-RESOURCES-MIB::memCache.0" -name:snmp.tableoptions:oid:"IF-MIB::ifTable" -name:snmp.table.fieldoptions:is_tag:"true"oid:"IF-MIB::ifDescr" -name:snmp.tableoptions:oid:"UBNT-UniFi-MIB::unifiRadioTable" -name:snmp.table.fieldoptions:is_tag:"true"oid:"UBNT-UniFi-MIB::unifiRadioName" -name:snmp.table.fieldoptions:is_tag:"true"oid:"UBNT-UniFi-MIB::unifiRadioRadio" -name:snmp.tableoptions:oid:"UBNT-UniFi-MIB::unifiVapTable" -name:snmp.table.fieldoptions:is_tag:"true"oid:"UBNT-UniFi-MIB::unifiVapName" -name:snmp.table.fieldoptions:is_tag:"true"oid:"UBNT-UniFi-MIB::unifiVapRadio" -name:snmp.tableoptions:oid:"UBNT-UniFi-MIB::unifiIfTable" -name:snmp.table.fieldoptions:is_tag:"true"oid:"UBNT-UniFi-MIB::unifiIfName" -name:snmp.tableoptions:oid:"FROGFOOT-RESOURCES-MIB::loadTable" -name:snmp.table.fieldoptions:is_tag:"true"oid:"FROGFOOT-RESOURCES-MIB::loadDescr" -name:snmp.fieldoptions:name:"snmpInPkts"oid:"SNMPv2-MIB::snmpInPkts.0" -name:snmp.fieldoptions:name:"snmpInGetRequests"oid:"SNMPv2-MIB::snmpInGetRequests.0" -name:snmp.fieldoptions:name:"snmpInGetNexts"oid:"SNMPv2-MIB::snmpInGetNexts.0" -name:snmp.fieldoptions:name:"snmpInTotalReqVars"oid:"SNMPv2-MIB::snmpInTotalReqVars.0" -name:snmp.fieldoptions:name:"snmpInGetResponses"oid:"SNMPv2-MIB::snmpInGetResponses.0" -name:snmp.fieldoptions:name:"snmpOutPkts"oid:"SNMPv2-MIB::snmpOutPkts.0" -name:snmp.fieldoptions:name:"snmpOutGetRequests"oid:"SNMPv2-MIB::snmpOutGetRequests.0" -name:snmp.fieldoptions:name:"snmpOutGetNexts"oid:"SNMPv2-MIB::snmpOutGetNexts.0" -name:snmp.fieldoptions:name:"snmpOutGetResponses"oid:"SNMPv2-MIB::snmpOutGetResponses.0"## EdgeRouter devices -name:snmpoptions:name:"snmp.EdgeOS"agents: -"192.168.0.5" -"192.168.0.6" -"192.168.0.7"interval:"30s"timeout:"15s"retries:3version:2community:"public"max_repetitions:1fielddrop: -"laErrorFlag" -"laErrMessage"# tagdrop:# diskIODevice:# - "loop*"# - "ram*" -name:snmp.fieldoptions:name:"sysName"oid:"SNMPv2-MIB::sysName.0"is_tag:"true"# System vendor OID -name:snmp.fieldoptions:name:"sysObjectID"oid:"SNMPv2-MIB::sysObjectID.0"# System description -name:snmp.fieldoptions:name:"sysDescr"oid:"ENTITY-MIB::entPhysicalModelName.2"# System Firmware -name:snmp.fieldoptions:name:"emSoftwareRev"oid:"ENTITY-MIB::entPhysicalSoftwareRev.1"# System Serial -name:snmp.fieldoptions:name:"emSerialNum"oid:"ENTITY-MIB::entPhysicalSerialNum.1"## Host/System Resources# System uptime -name:snmp.fieldoptions:name:"sysUpTime"oid:"iso.3.6.1.2.1.1.3.0"## System Memory (physical/virtual)# Total Mem -name:snmp.fieldoptions:name:"fpMemAvailable"oid:"1.3.6.1.4.1.4413.1.1.1.1.4.2.0"# Free Mem -name:snmp.fieldoptions:name:"fpMemFree"oid:"1.3.6.1.4.1.4413.1.1.1.1.4.1.0"## Interface metrics# Per-interface traffic, errors, drops -name:snmp.tableoptions:oid:"IF-MIB::ifTable" -name:snmp.table.fieldoptions:oid:"IF-MIB::ifName"is_tag:"true" -name:snmp.tableoptions:oid:"IF-MIB::ifXTable" -name:snmp.table.fieldoptions:oid:"IF-MIB::ifAlias"is_tag:"true" -name:snmp.table.fieldoptions:oid:"IF-MIB::ifName"is_tag:"true"## SNMP metrics# Number of SNMP messages received -name:snmp.fieldoptions:name:"snmpInPkts"oid:"SNMPv2-MIB::snmpInPkts.0"# Number of SNMP Get-Request received -name:snmp.fieldoptions:name:"snmpInGetRequests"oid:"SNMPv2-MIB::snmpInGetRequests.0"# Number of SNMP Get-Next received -name:snmp.fieldoptions:name:"snmpInGetNexts"oid:"SNMPv2-MIB::snmpInGetNexts.0"# Number of SNMP objects requested -name:snmp.fieldoptions:name:"snmpInTotalReqVars"oid:"SNMPv2-MIB::snmpInTotalReqVars.0"# Number of SNMP Get-Response received -name:snmp.fieldoptions:name:"snmpInGetResponses"oid:"SNMPv2-MIB::snmpInGetResponses.0"# Number of SNMP messages sent -name:snmp.fieldoptions:name:"snmpOutPkts"oid:"SNMPv2-MIB::snmpOutPkts.0"# Number of SNMP Get-Request sent -name:snmp.fieldoptions:name:"snmpOutGetRequests"oid:"SNMPv2-MIB::snmpOutGetRequests.0"# Number of SNMP Get-Next sent -name:snmp.fieldoptions:name:"snmpOutGetNexts"oid:"SNMPv2-MIB::snmpOutGetNexts.0"# Number of SNMP Get-Response sent -name:snmp.fieldoptions:name:"snmpOutGetResponses"oid:"SNMPv2-MIB::snmpOutGetResponses.0"## Unifi Switch devices -name:snmpoptions:name:"snmp.USW"agents:"{{ unifi_switches }}"interval:"30s"timeout:"15s"retries:3version:2community:"public"max_repetitions:1fielddrop: -"laErrorFlag" -"laErrMessage"# tagdrop:# diskIODevice:# - "loop*"# - "ram*" -name:snmp.fieldoptions:name:"sysName"oid:"SNMPv2-MIB::sysName.0"is_tag:"true"# System vendor OID -name:snmp.fieldoptions:name:"sysObjectID"oid:"SNMPv2-MIB::sysObjectID.0"# System description -name:snmp.fieldoptions:name:"sysDescr"oid:"ENTITY-MIB::entPhysicalModelName.2"# System Firmware -name:snmp.fieldoptions:name:"emSoftwareRev"oid:"ENTITY-MIB::entPhysicalSoftwareRev.1"# System Serial -name:snmp.fieldoptions:name:"emSerialNum"oid:"ENTITY-MIB::entPhysicalSerialNum.1"## Host/System Resources# System uptime -name:snmp.fieldoptions:name:"sysUpTime"oid:"iso.3.6.1.2.1.1.3.0"## System Memory (physical/virtual)# Total Mem -name:snmp.fieldoptions:name:"fpMemAvailable"oid:"1.3.6.1.4.1.4413.1.1.1.1.4.2.0"# Free Mem -name:snmp.fieldoptions:name:"fpMemFree"oid:"1.3.6.1.4.1.4413.1.1.1.1.4.1.0"## Interface metrics# Per-interface traffic, errors, drops -name:snmp.tableoptions:oid:"IF-MIB::ifTable" -name:snmp.table.fieldoptions:oid:"IF-MIB::ifName"is_tag:"true" -name:snmp.tableoptions:oid:"IF-MIB::ifXTable" -name:snmp.table.fieldoptions:oid:"IF-MIB::ifAlias"is_tag:"true" -name:snmp.table.fieldoptions:oid:"IF-MIB::ifName"is_tag:"true"## SNMP metrics# Number of SNMP messages received -name:snmp.fieldoptions:name:"snmpInPkts"oid:"SNMPv2-MIB::snmpInPkts.0"# Number of SNMP Get-Request received -name:snmp.fieldoptions:name:"snmpInGetRequests"oid:"SNMPv2-MIB::snmpInGetRequests.0"# Number of SNMP Get-Next received -name:snmp.fieldoptions:name:"snmpInGetNexts"oid:"SNMPv2-MIB::snmpInGetNexts.0"# Number of SNMP objects requested -name:snmp.fieldoptions:name:"snmpInTotalReqVars"oid:"SNMPv2-MIB::snmpInTotalReqVars.0"# Number of SNMP Get-Response received -name:snmp.fieldoptions:name:"snmpInGetResponses"oid:"SNMPv2-MIB::snmpInGetResponses.0"# Number of SNMP messages sent -name:snmp.fieldoptions:name:"snmpOutPkts"oid:"SNMPv2-MIB::snmpOutPkts.0"# Number of SNMP Get-Request sent -name:snmp.fieldoptions:name:"snmpOutGetRequests"oid:"SNMPv2-MIB::snmpOutGetRequests.0"# Number of SNMP Get-Next sent -name:snmp.fieldoptions:name:"snmpOutGetNexts"oid:"SNMPv2-MIB::snmpOutGetNexts.0"# Number of SNMP Get-Response sent -name:snmp.fieldoptions:name:"snmpOutGetResponses"oid:"SNMPv2-MIB::snmpOutGetResponses.0"
You will need Prometheus set up somewhere to use the Unifi-Exporter. You may want to look atThis InfluxDB Role for deploying InfluxDB + Prometheus, which also includes the required Prometheus configuration for the Unifi-Exporter.
You may also wish to include thisTelegraf role, which will configure the Telegraf service along with the SNMP MIBS + Telegraf config needed for polling Unifi access point metrics.
NOTE: You will need InfluxDB set up somewhere to use the Telegraf + SNMP exporter. You may want to look atThis InfluxDB Role for deploying InfluxDB + Prometheus.
----name:Deploy containerized Ubiquiti UNMS Stack and Unifi-Admin Serverhosts: -unifi -unmsremote_user:rootgather_facts:yesvars_files: -vault.ymltasks: -import_role:name:common -import_role:name:openldapwhen:openldap_server_ip is defined and openldap_server_ip != None -import_role:name:ceph-fswhen: -shared_storage -storage_backend == "cephfs" -import_role:name:unifi -import_role:name:dockertags: -docker -import_role:name:unifitasks_from:unifi_admin_ssl -import_role:name:telegrafwhen:"'telegraf' in group_names" -setup:
telegraf_plugins_extra: -name:dockeroptions:endpoint:"unix:///var/run/docker.sock"timeout:"5s"perdevice:"true"total:"true"## EdgeSwitch CPU Utilization -name:execoptions:commands: -"/etc/telegraf/telegraf.d/scripts/edgeswitch_load.sh 192.168.0.5" -"/etc/telegraf/telegraf.d/scripts/edgeswitch_load.sh 192.168.0.6" -"/etc/telegraf/telegraf.d/scripts/edgeswitch_load.sh 192.168.0.7"timeout:"1s"interval:"5s"data_format:"influx"## Ubiquiti AP Devices -name:snmpoptions:name:"snmp.UAP"agents: -"192.168.0.101" -"192.168.0.102" -"192.168.0.104"interval:"10s"timeout:"10s"retries:3version:2community:"public"max_repetitions:1 -name:snmp.fieldoptions:is_tag:"true"name:"sysName"oid:"RFC1213-MIB::sysName.0" -name:snmp.fieldoptions:name:"sysObjectID"oid:"RFC1213-MIB::sysObjectID.0" -name:snmp.fieldoptions:name:"sysDescr"oid:"RFC1213-MIB::sysDescr.0" -name:snmp.fieldoptions:name:"sysContact"oid:"RFC1213-MIB::sysContact.0" -name:snmp.fieldoptions:name:"sysLocation"oid:"RFC1213-MIB::sysLocation.0" -name:snmp.fieldoptions:name:"sysUpTime"oid:"RFC1213-MIB::sysUpTime.0" -name:snmp.fieldoptions:name:"unifiApSystemModel"oid:"UBNT-UniFi-MIB::unifiApSystemModel" -name:snmp.fieldoptions:name:"unifiApSystemVersion"oid:"UBNT-UniFi-MIB::unifiApSystemVersion" -name:snmp.fieldoptions:name:"memTotal"oid:"FROGFOOT-RESOURCES-MIB::memTotal.0" -name:snmp.fieldoptions:name:"memFree"oid:"FROGFOOT-RESOURCES-MIB::memFree.0" -name:snmp.fieldoptions:name:"memBuffer"oid:"FROGFOOT-RESOURCES-MIB::memBuffer.0" -name:snmp.fieldoptions:name:"memCache"oid:"FROGFOOT-RESOURCES-MIB::memCache.0" -name:snmp.tableoptions:oid:"IF-MIB::ifTable" -name:snmp.table.fieldoptions:is_tag:"true"oid:"IF-MIB::ifDescr" -name:snmp.tableoptions:oid:"UBNT-UniFi-MIB::unifiRadioTable" -name:snmp.table.fieldoptions:is_tag:"true"oid:"UBNT-UniFi-MIB::unifiRadioName" -name:snmp.table.fieldoptions:is_tag:"true"oid:"UBNT-UniFi-MIB::unifiRadioRadio" -name:snmp.tableoptions:oid:"UBNT-UniFi-MIB::unifiVapTable" -name:snmp.table.fieldoptions:is_tag:"true"oid:"UBNT-UniFi-MIB::unifiVapName" -name:snmp.table.fieldoptions:is_tag:"true"oid:"UBNT-UniFi-MIB::unifiVapRadio" -name:snmp.tableoptions:oid:"UBNT-UniFi-MIB::unifiIfTable" -name:snmp.table.fieldoptions:is_tag:"true"oid:"UBNT-UniFi-MIB::unifiIfName" -name:snmp.tableoptions:oid:"FROGFOOT-RESOURCES-MIB::loadTable" -name:snmp.table.fieldoptions:is_tag:"true"oid:"FROGFOOT-RESOURCES-MIB::loadDescr" -name:snmp.fieldoptions:name:"snmpInPkts"oid:"SNMPv2-MIB::snmpInPkts.0" -name:snmp.fieldoptions:name:"snmpInGetRequests"oid:"SNMPv2-MIB::snmpInGetRequests.0" -name:snmp.fieldoptions:name:"snmpInGetNexts"oid:"SNMPv2-MIB::snmpInGetNexts.0" -name:snmp.fieldoptions:name:"snmpInTotalReqVars"oid:"SNMPv2-MIB::snmpInTotalReqVars.0" -name:snmp.fieldoptions:name:"snmpInGetResponses"oid:"SNMPv2-MIB::snmpInGetResponses.0" -name:snmp.fieldoptions:name:"snmpOutPkts"oid:"SNMPv2-MIB::snmpOutPkts.0" -name:snmp.fieldoptions:name:"snmpOutGetRequests"oid:"SNMPv2-MIB::snmpOutGetRequests.0" -name:snmp.fieldoptions:name:"snmpOutGetNexts"oid:"SNMPv2-MIB::snmpOutGetNexts.0" -name:snmp.fieldoptions:name:"snmpOutGetResponses"oid:"SNMPv2-MIB::snmpOutGetResponses.0"## EdgeRouter devices -name:snmpoptions:name:"snmp.EdgeOS"agents: -"192.168.0.5" -"192.168.0.6" -"192.168.0.7"interval:"30s"timeout:"15s"retries:3version:2community:"public"max_repetitions:1fielddrop: -"laErrorFlag" -"laErrMessage"# tagdrop:# diskIODevice:# - "loop*"# - "ram*" -name:snmp.fieldoptions:name:"sysName"oid:"SNMPv2-MIB::sysName.0"is_tag:"true"# System vendor OID -name:snmp.fieldoptions:name:"sysObjectID"oid:"SNMPv2-MIB::sysObjectID.0"# System description -name:snmp.fieldoptions:name:"sysDescr"oid:"ENTITY-MIB::entPhysicalModelName.2"# System Firmware -name:snmp.fieldoptions:name:"emSoftwareRev"oid:"ENTITY-MIB::entPhysicalSoftwareRev.1"# System Serial -name:snmp.fieldoptions:name:"emSerialNum"oid:"ENTITY-MIB::entPhysicalSerialNum.1"## Host/System Resources# System uptime -name:snmp.fieldoptions:name:"sysUpTime"oid:"iso.3.6.1.2.1.1.3.0"## System Memory (physical/virtual)# Total Mem -name:snmp.fieldoptions:name:"fpMemAvailable"oid:"1.3.6.1.4.1.4413.1.1.1.1.4.2.0"# Free Mem -name:snmp.fieldoptions:name:"fpMemFree"oid:"1.3.6.1.4.1.4413.1.1.1.1.4.1.0"## Interface metrics# Per-interface traffic, errors, drops -name:snmp.tableoptions:oid:"IF-MIB::ifTable" -name:snmp.table.fieldoptions:oid:"IF-MIB::ifName"is_tag:"true" -name:snmp.tableoptions:oid:"IF-MIB::ifXTable" -name:snmp.table.fieldoptions:oid:"IF-MIB::ifAlias"is_tag:"true" -name:snmp.table.fieldoptions:oid:"IF-MIB::ifName"is_tag:"true"## SNMP metrics# Number of SNMP messages received -name:snmp.fieldoptions:name:"snmpInPkts"oid:"SNMPv2-MIB::snmpInPkts.0"# Number of SNMP Get-Request received -name:snmp.fieldoptions:name:"snmpInGetRequests"oid:"SNMPv2-MIB::snmpInGetRequests.0"# Number of SNMP Get-Next received -name:snmp.fieldoptions:name:"snmpInGetNexts"oid:"SNMPv2-MIB::snmpInGetNexts.0"# Number of SNMP objects requested -name:snmp.fieldoptions:name:"snmpInTotalReqVars"oid:"SNMPv2-MIB::snmpInTotalReqVars.0"# Number of SNMP Get-Response received -name:snmp.fieldoptions:name:"snmpInGetResponses"oid:"SNMPv2-MIB::snmpInGetResponses.0"# Number of SNMP messages sent -name:snmp.fieldoptions:name:"snmpOutPkts"oid:"SNMPv2-MIB::snmpOutPkts.0"# Number of SNMP Get-Request sent -name:snmp.fieldoptions:name:"snmpOutGetRequests"oid:"SNMPv2-MIB::snmpOutGetRequests.0"# Number of SNMP Get-Next sent -name:snmp.fieldoptions:name:"snmpOutGetNexts"oid:"SNMPv2-MIB::snmpOutGetNexts.0"# Number of SNMP Get-Response sent -name:snmp.fieldoptions:name:"snmpOutGetResponses"oid:"SNMPv2-MIB::snmpOutGetResponses.0"