Cómo configurar la herramienta de monitorización LibreNMS con Nginx en Ubuntu 20.04

LibreNMS es una herramienta de monitorización de red gratuita y de código abierto para el sistema operativo Linux. Puedes supervisar distintos sistemas operativos como Linux, Windows, FreeBSD y varios dispositivos de red como Cisco, Juniper, Foundry, FreeBSD, Brocade y muchos más con LibreNMS. Utiliza los protocolos SNMP, ARP, CDP, FDP, LLDP, OSPF y BGP para autodescubrir toda la red. Tiene una interfaz web sencilla y fácil de usar que te ayuda a supervisar todos los dispositivos desde el navegador web. Tiene un rico conjunto de funciones que incluyen, descubrimiento automático, alertas personalizables, acceso a la API, actualizaciones automáticas y muchas más.

En este tutorial, te mostraremos paso a paso cómo instalar LibreNMS en Ubuntu 20.04.

Requisitos previos

  • Un servidor que ejecute Ubuntu 20.04.
  • Una contraseña de root configurada.

Cómo empezar

En primer lugar, se recomienda actualizar los paquetes de tu sistema a la última versión. Puedes hacerlo con el siguiente comando:

apt-get update -y

Tras actualizar todos los paquetes, instala todas las dependencias necesarias para LibreNMS con el siguiente comando:

apt-get install rrdtool whois fping imagemagick graphviz mtr-tiny nmap python3-mysqldb snmp snmpd python3-pip python3-memcache mtr-tiny acl unzip git curl wget -y

Una vez instaladas todas las dependencias, puedes pasar al siguiente paso.

Instalar el servidor LEMP

A continuación, tendrás que instalar el servidor web Nginx, el servidor MariaDB, PHP y otras extensiones PHP en tu servidor. Puedes instalarlos todos ejecutando el siguiente comando:

apt-get install nginx mariadb-server php php-pear php-cgi php-common php-curl php-mbstring php-gd php-mysql php-bcmath php-imap php-json php-xml php-snmp php-fpm php-zip -y

Después de instalar todos los paquetes, tendrás que establecer la zona horaria en tu archivo php.ini.

Primero, busca la zona horaria de tu sistema con el siguiente comando:

cat /etc/timezone

Deberías ver el siguiente resultado:

Etc/UTC

A continuación, edita ambos archivos php.ini con el siguiente comando:

nano /etc/php/7.4/fpm/php.ini
nano /etc/php/7.4/cli/php.ini

Define la zona horaria de tu sistema como se muestra a continuación:

date.timezone = Etc/UTC

Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio PHP-FPM para aplicar los cambios:

systemctl restart php7.4-fpm

Cuando hayas terminado, puedes pasar al siguiente paso.

Configurar la base de datos MariaDB

A continuación, tendrás que crear una base de datos y un usuario para LibreNMS.

En primer lugar, inicia sesión en el shell de MariaDB con el siguiente comando:

mysql

Una vez iniciada la sesión, crea una base de datos y un usuario con el siguiente comando:

MariaDB [(none)]> create database librenmsdb CHARACTER SET utf8 COLLATE utf8_unicode_ci;
MariaDB [(none)]> grant all privileges on librenmsdb.* to librenms@localhost IDENTIFIED by "password";

A continuación, vacía los privilegios y sal del shell MariaDB con el siguiente comando:

MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

A continuación, edita el archivo de configuración de MariaDB y añade algunos ajustes deseados:

nano /etc/mysql/mariadb.conf.d/50-server.cnf

Añade las siguientes líneas dentro de la sección [mysqld]:

innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0

Guarda y cierra el archivo y reinicia el servicio MariaDB para aplicar los cambios:

systemctl restart mariadb

En este punto, tu MariaDB está configurada. Ahora puedes pasar al siguiente paso.

Instalar y configurar LibreNMS

En primer lugar, tendrás que crear un usuario independiente para ejecutar LibreNMS. Puedes añadirlo con el siguiente comando:

useradd -r -M -d /opt/librenms librenms

A continuación, añade el usuario librenms al grupo www-data con el siguiente comando:

usermod -a -G librenms www-data

A continuación, cambia el directorio a /opt y descarga la última versión de LibreNMS con el siguiente comando:

cd /opt
git clone https://github.com/librenms/librenms.git librenms

A continuación, crea un archivo de registro para LibreNMS con el siguiente comando:

touch /opt/librenms/logs/librenms.log

A continuación, copia el archivo de configuración SNMP de ejemplo con el siguiente comando:

cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf

A continuación, edita el archivo snmpd.conf:

nano /etc/snmp/snmpd.conf

Busca la siguiente línea:

com2sec readonly  default RANDOMSTRINGGOESHERE

Y, sustitúyela por la siguiente línea

com2sec readonly  default mysnmpserverkey        

Guarda y cierra el archivo y, a continuación, descarga el binario de la distro SNMP y cópialo en la ubicación deseada:

curl -o distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x distro
mv distro /usr/bin/distro

A continuación, reinicia el servicio SNMP para aplicar los cambios:

systemctl restart snmpd

A continuación, también tendrás que copiar el archivo cron y logrotate de LibreNMS a la ubicación deseada. Puedes copiarlos con el siguiente comando:

cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

A continuación, cambia el directorio a librenms e instala las depemdencias necesarias con el siguiente comando:

cd /opt/librenms
./scripts/composer_wrapper.php install --no-dev

Una vez instaladas todas las dependencias, cambia la propiedad del directorio librenms y dale los permisos necesarios con el siguiente comando:

chown -R www-data:librenms /opt/librenms
chmod -R 775 /opt/librenms
setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/

Cuando hayas terminado, puedes pasar al siguiente paso.

Configurar Nginx para LibreNMS

A continuación, tendrás que crear un archivo de configuración del host virtual Nginx para LibreNMS. Puedes crearlo con el siguiente comando:

nano /etc/nginx/conf.d/librenms.conf

Añade las siguientes líneas:

server {
 listen      80;
 server_name librenms.example.com;
 root        /opt/librenms/html;
 index       index.php;

 charset utf-8;
 gzip on;
 gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
 location / {
  try_files $uri $uri/ /index.php?$query_string;
 }
 location /api/v0 {
  try_files $uri $uri/ /api_v0.php?$query_string;
 }
 location ~ \.php {
  include fastcgi.conf;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
 }
 location ~ /\.ht {
  deny all;
 }
}

Guarda y cierra el archivo y luego comprueba si Nginx tiene algún error de sintaxis con el siguiente comando:

nginx -t

Deberías ver la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, reinicia el servicio Nginx para aplicar los cambios:

systemctl restart nginx

También puedes comprobar el estado del servicio Nginx con el siguiente comando:

systemctl status nginx

Deberías obtener la siguiente salida:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-09-05 06:15:20 UTC; 4min 5s ago
       Docs: man:nginx(8)
    Process: 28239 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 28250 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 28253 (nginx)
      Tasks: 3 (limit: 2353)
     Memory: 3.4M
     CGroup: /system.slice/nginx.service
             ??28253 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??28254 nginx: worker process
             ??28255 nginx: worker process

Sep 05 06:15:20 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 05 06:15:20 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Una vez que hayas terminado, puedes continuar con el siguiente paso.

Accede a la interfaz web de LibreNMS

Ahora, abre tu navegador web y accede a LibreNMS utilizando la URL http://librenms.example.com. Se te redirigirá a la página de comprobación previa a la instalación:

Comprobación previa a la instalación

Asegúrate de que todas las extensiones necesarias están instaladas y luego haz clic en Configuración de la base de datos. Deberías ver la siguiente página:

Configura la base de datos

Proporciona tu nombre de usuario de la base de datos, el nombre de la base de datos, la contraseña y haz clic en el botón Comprobar credenciales. Cuando lo hayas hecho correctamente, verás la siguiente página:

Construye la base de datos

Ahora, haz clic en el botón Crear base de datos. Deberías ver la siguiente página:

Configurar la base de datos

A continuación, haz clic en el botón Crear usuario administrador. Deberías ver la siguiente página:

Crear usuario administrador

Proporciona tu nombre de usuario, correo electrónico y contraseña de administrador y haz clic en el botón Añadir usuario. Deberías ver la siguiente página:

Instalación completa

A continuación, haz clic en el botón Finalizar la instalación. Deberías ver la siguiente página:

Termina la instalación

A continuación, haz clic en el botón«Validar la instalación». Deberías ver la página de inicio de sesión de LibreNMS:

Inicio de sesión en LibreNMS

Proporciona tu nombre de usuario y contraseña de administrador de LibreNMS y haz clic en el botón Iniciar sesión. Deberías ver el panel de control de LibreNMS:

Configuración de LibreNMS

Conclusión

Enhorabuena! has instalado y configurado correctamente la herramienta de monitorización de red LibreNMS en el servidor Ubuntu 20.04. Ahora puedes añadir un dispositivo o host y empezar a monitorizar desde el panel de control de LibreNMS. No dudes en preguntarme si tienes alguna duda.

Scroll al inicio