Monitorizando Ubiquiti UniFi en Centreon

¡Y llega la hora de gobernar los APs y los switches de Ubiquiti! Así que si tienes algún dispositivo de este tipo en tu organización… es hora de centralizarlo y controlarlo desde Centreon. Con el mero hecho de tener todo supervisado y anticipándonos a posibles problemas, ¡empezamos! 😛

 

Bueno, para muchos de los servicios que vamos a monitorizar nos apoyaremos en el maravilloso script check_unifi.php de Jörg Hörter; así que descárgalo y como siempre guardarlo en el directorio de los scripts de Centreon. Con este script vamos a poder sacar un montón de información de la parte UniFi de Ubiquiti, lo que es la salud de cada AP, sus tráficos, clientes, conexiones, consumos de recursos… lo mismo para los switch’es, y a la controladora lo mismo, disponibilidad, versionado, número de APs/SWs..

Necesitamos disponer de php instalado en la máquina y de ‘php-curl’, una vez instalador los requisitos probamos a ejecutarlo:

yum install php-curl
/usr/bin/php check_unifi.php

 

 

Este script si le pasamos ‘-h’ nos dará información con todas sus posibilidades de uso:

Usage: /usr/bin/php check_unifi.php -H [controller] -u [controlleruser] -p [controllerpassword] -P [controllerport] -m [mode] -a [Accesspoint] -w [Warning] -c [Critical] (-S [site] -s =https -C [configfile]) -d =debug)

mode - controller                                = Controller Version, warning if there is an update
       site                                      = list all Site ID and Name
       clients                                   = list all clients (only use in console)
       clients_wifi ( + Accesspoints)            = list all wifi clients with connection speed, optional for one accesspoint (only use in console)
       clients_name + Accesspoint                = list all clients of an accesspoint
       clients_name_guest + Accesspoint          = list all clients and guests of an accesspoint
       clients_count + Accesspoint               = count clients of an accesspoint
       clients_count_guest + Accesspoint         = count clients and guests of an accesspoint
       channels + Accesspoint                    = channels 2GHz/5GHz of an accesspoint
       transfer + Accesspoint                    = rx/tx transfer of an accesspoint (KBit/MBit)
       transfer+ + Accesspoint                   = rx/tx transfer of an accesspoint (KByte/MByte)
       uptime + Accesspoint/Switch               = uptime and firmware of an accesspoint/switch
       update + Accesspoint/Switch               = update firmware is available of an accesspoint/switch and warn/critical (point release, major version, minor version)
       uplink + Accesspoint warn crit            = uplink of an accesspoint (wireless: with connection speed and warn/critical)
       experience + Accesspoint warn crit        = wireless experience of an accesspoint with warn/critical
       utilisation + Accesspoint warn crit       = wireless utilisation of an accesspoint with warn/critical (2GHz,5GHz)
       mem + Accesspoint warn crit               = memory usage output Mb of an accesspoint or a switch with warn/critical percent
       mem% + Accesspoint warn crit              = memory usage output percent of an accesspoint or a switch with warn/critical percent
       cpu + Accesspoint/Switch warn crit        = cpu and load combination usage of an accesspoint or a switch with warn/critical percent
       cpu% + Accesspoint/Switch warn crit       = cpu usage of an accesspoint or a switch with warn/critical percent
       load + Accesspoint/Switch warn crit       = linux load usage of an accesspoint or a switch with warn/critical 1,5,15
       temperature + Switch                      = temperature of a switch with warn/critical
       ap warn crit                              = count Accesspoint (Online and Offline) with warn and critical offline Accesspoints
       switch warn crit                          = count Switch (Online and Offline) with warn and critical offline Switch


-C   - config file (default=unifi.php) instead of the controller parameters -H,-u,-p,-P,-s -S (you can specify any file with path)
       example:

       <?php
       $host='192.168.2.213';    # IP or Hostname unifi controller Server
       $prot='https';            # Value http or https
       $port='8443';             # Controller Port
       $user='nagios';           # Loginuser Controller
       $pass='nagios';           # Password Loginuser
       $siteid='default';        # Site ID
       $dir_unifi_client='';     # Directory unifi_client.php
       ?>

 

Bueno, si queréis cacharrear en shell y ver cómo va/probarlo, os dejo unos ejemplos, no son todas las posibilidades, pero sí los que consideré más útiles (para mí):

Comprobar versión del Controller y da Warning si hay update:

/usr/bin/php /usr/lib/centreon/plugins/check_unifi.php/check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m controller -s https

 

Clientes por cada AP:

/usr/bin/php ./check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m clients_count -a NOMBRE_AP -s https

 

Canales 2GHz/5GHz de cada AP:

/usr/bin/php ./check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m channels -a NOMBRE_AP -s https

 

Comprobar versión de firmware de los AP/SW:

/usr/bin/php ./check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m update -a NOMBRE_AP -s https

 

Calidad de la experiencia del AP:

/usr/bin/php ./check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m experience -a NOMBRE_AP -w 90: -c 80: -s https

 

CPU del AP/SW

/usr/bin/php ./check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m cpu% -a NOMBRE_AP -w 80 -c 90 -s https

 

Memoria del AP/SW

/usr/bin/php ./check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m mem% -a NOMBRE_AP -w 80 -c 90 -s https

 

Carga del AP/SW

/usr/bin/php ./check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m load -a NOMBRE_AP -w 4,3,2 -c 6,5,4 -s https

 

Temperatura del SW

/usr/bin/php ./check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m temperature -a NOMBRE_SWITCH -w 40 -c 50 -s https

 

Uptime del SW o del AP

/usr/bin/php ./check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m uptime -a NOMBRE_SWITCH -w 80 -c 90 -s https

 

Número de APs

/usr/bin/php ./check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m ap -w 1 -c 0 -s https

 

Número de SWs
/usr/bin/php ./check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m switch -w 1 -c 0 -s https

 

Ahora, una vez que hayas cacharreado y probado, es hora de llevarlo como siempre a Centreon, como siempre, inicialmente definiremos los Comandos que necesitaremos para crear luego los Servicios que nos interesen. En mi caso he creado estos 4 Comandos, os los dejo por si queréis copiarlos, unos van con más o menos argumentos y la posibilidad de meterle Warning / Critical si nos interesase. Vamos a “Configuration” > “Commands” > “Checks” > “Add…”

  • Nombre del comando: check_unifi.php
  • Línea de comandos: /usr/bin/php $CENTREONPLUGINS$/check_unifi.php/check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m $ARG1$ -s https

 

  • Nombre del comando: check_unifi.php_wc
  • Línea de comandos: /usr/bin/php /usr/lib/centreon/plugins/check_unifi.php/check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m $ARG1$ -w $ARG2$ -c $ARG3$ -s https

 

  • Nombre del comando: check_unifi.php_a
  • Línea de comandos: /usr/bin/php /usr/lib/centreon/plugins/check_unifi.php/check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m $ARG1$ -a $ARG2$ -s https

 

  • Nombre del comando: check_unifi.php_a_wc
  • Línea de comandos: /usr/bin/php /usr/lib/centreon/plugins/check_unifi.php/check_unifi.php -H DIRECCION_IP_CONTROLLER -P 8443 -u USUARIO -p CONTRASEÑA -m $ARG1$ -a $ARG2$ -w $ARG3$ -c $ARG4$ -s https

 

Y luego ya desde “Configuration” > “Hosts” > “Add…” deberemos dar de alta como es habitual las APs, los SW, la máquina con el Controller… con el objetivo final de añadirle los servicios que nos interesen monitorizar a cada Host.

Así que finalmente desde “Configuration” > “Services” > “Services by Host” vamos añadiendo los Servicios, y les vamos asociando a cada uno el Comando que debe llevar y le alimentamos con los Argumentos correspondientes.

Si queremos meter el estado del Hardware a los Switches, utilizaremos el maravilloso pack de plugins de Centreon llamado ‘centreon-plugins’, que ya vimos cómo usarlo y utilizarlo en este post. Y este script sí utiliza SNMP, por lo que tendrás que habilitarlo previamente en la consola de ‘UniFi Network’, desde “Settings” > “Advanced Features” > “Advanced Gateway Settings” > “SNMP” y configurar una Comunidad para v2 o si queremos v3 unos credenciales. Y con el siguiente Comando lo tendríamos chupado:

perl $CENTREONPLUGINS$/centreon-plugins/centreon_plugins.pl --plugin=network::ubiquiti::edge::snmp::plugin --hostname $HOSTADDRESS$ --snmp-community=$_HOSTSNMPCOMMUNITY$ --mode hardware

 

Como siempre, grabar y exportar la configuración.

 

Sí hemos seguido todos los pasos tendremos algo como esto de arriba, disculparme pero sabéis que es una locura si hago uno a uno. Si tienes dudas del uso de Centreon es mejor que vayas a documentos iniciales donde daba más detalle de cómo crear un Servicio, un Comando… Así que listo! Tenemos las CPU, Interfaces de red/puertos, Memorias, Cargas, Canales Wifi, Versionado y firmwares, Experiencias, Temperaturas, Estado del Hardware… de nuestros Access Point y Switches de Ubiquiti controlados!

 

Y si tenemos un Grafana pues podemos hacer unas visualizaciones chulas, el mio un poco cutre, pero aceptable, es que este le tengo diseñado para una pantalla pequeñita 😉 Así que más no le podía meter.