LibreNMS – Una herramienta de monitoreo de red completamente equipada para Linux

LibreNMS es un sistema de monitoreo de red basado en PHP de código abierto, potente y rico en funciones que utiliza el protocolo SNMP. Admite una amplia gama de sistemas operativos, incluidos Linux, FreeBSD, así como dispositivos de red como Cisco, Juniper, Brocade, Foundry, HP y muchos más.

Características de LibreNMS:

  1. Descubre automáticamente toda una red utilizando estos protocolos: CDP, FDP, LLDP, OSPF, BGP, SNMP y ARP.
  2. Tiene una interfaz web amigable para dispositivos móviles, con paneles personalizables.
  3. Admite un agente Unix.
  4. Admite escalabilidad horizontal para expandirse con su red.
  5. Admite un sistema de alerta altamente flexible y personalizable; envía notificaciones a través de correo electrónico, IRC, Slack y más.
  6. Admite una API para gestionar, graficar y recuperar datos de su sistema.
  7. Ofrece un sistema de facturación de tráfico.
  8. También admite aplicaciones para Android e iOS que ofrecen funcionalidades básicas.
  9. Admite la integración con NfSen, collectd, SmokePing, RANCID y Oxidized.
  10. Admite múltiples métodos de autenticación como MySQL, HTTP, LDAP, Radius y Active Directory.
  11. Permite la actualización automática y muchas otras funciones.

Hay una demostración en línea disponible para probar antes de instalar LibreNMS en sistemas Linux.

Demo URL: https://demo.librenms.org/
Username: demo
Password: demo

Entorno de prueba:

  1. Ubuntu 16.04 con LEMP Stack
  2. CentOS 7 con LEMP Stack

En este tutorial aprenderemos cómo instalar la Herramienta de Monitoreo de Red LibreNMS en un sistema Ubuntu o CentOS Linux recién instalado (las mismas instrucciones también funcionan en distribuciones basadas en Debian y RHEL).

NOTA: Todas estas instrucciones en este artículo deben ejecutarse como usuario root. Si no lo eres, utiliza el comando sudo para obtener privilegios de usuario root.

Paso 1: Instalar Paquetes Requeridos

1. Comienza instalando todos los paquetes necesarios utilizando el gestor de paquetes predeterminado como se muestra a continuación.

En Ubuntu/Debian

$ sudo apt install composer fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap php7.0-cli php7.0-curl php7.0-fpm php7.0-gd php7.0-mcrypt php7.0-mysql php7.0-snmp php7.0-xml php7.0-zip python-memcache python-mysqldb rrdtool snmp snmpd whois

En CentOS/RHEL

# yum install epel-release
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install composer cronie fping git ImageMagick jwhois mariadb mariadb-server mtr MySQL-python net-snmp net-snmp-utils nginx nmap php72w php72w-cli php72w-common php72w-curl php72w-fpm php72w-gd php72w-mysql php72w-process php72w-snmp php72w-xml php72w-zip python-memcached rrdtool

2. Una vez que se instalen todos los paquetes, los servicios nginx, php-fpm, mariadb y snmp se iniciarán y se habilitarán para iniciarse automáticamente en el arranque (esto es normalmente el caso con Ubuntu), de lo contrario, puedes ejecutar los comandos a continuación para iniciarlos y habilitarlos.

------------ On Debian/Ubuntu ------------ 
$ sudo systemctl nginx start php7.0-fpm mysql snmp 
$ sudo systemctl enable nginx php7.0-fpm mysql snmp

------------ On CentOS/RHEL ------------ 
# systemctl nginx start php-fpm mariadb snmpd 
# systemctl enable nginx php-fpm mariadb snmpd

Paso 2: Instalar la Herramienta de Monitoreo LibreNMS

3. A continuación, crea un usuario del sistema llamado librenms, con el comando useradd; donde la bandera -M deshabilita la creación del directorio de inicio del usuario, y -r habilita la creación de una cuenta de sistema. Luego agrega al usuario librenms al grupo www-data (en Ubuntu) o nginx (en CentOS) de la siguiente manera.

------------ On Debian/Ubuntu ------------ 
$ sudo useradd librenms -d /opt/librenms -M -r
$ sudo usermod -a -G librenms www-data   

------------ On CentOS/RHEL ------------ 
# useradd librenms -d /opt/librenms -M -r
# usermod -a -G librenms nginx           

4. Luego instala LibreNMS mediante el comando composer como se muestra.

------------ On Debian/Ubuntu ------------ 
$ cd /opt
$ sudo composer create-project --no-dev --keep-vcs librenms/librenms librenms dev-master

------------ On CentOS/RHEL ------------ 
# cd /opt
# composer create-project --no-dev --keep-vcs librenms/librenms librenms dev-master

Paso 3: Crear la Base de Datos de LibreNMS

5. Antes de poder comenzar a usar el servidor MariaDB, necesitas asegurar tu instalación, ejecuta el script de seguridad proporcionado en el paquete binario. Te pedirá que establezcas una contraseña de root, elimines usuarios anónimos, deshabilites el inicio de sesión remoto de root y elimines la base de datos de prueba.

Puedes ejecutar el script emitiendo el siguiente comando y responder todas las preguntas con yes/y.

$ sudo mysql_secure_installation   [On Debian/Ubuntu]
# mysql_secure_installation        [On CentOS/RHEL]

6. Luego inicia sesión en la base de datos de MariaDB para crear una base de datos para LibreNMS (recuerda usar una contraseña fuerte/segura en un entorno de producción).

$ sudo mysql -u root -p
MariaDB [(none)]> CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
MariaDB [(none)]> CREATE USER 'librenms'@'localhost' IDENTIFIED BY '=@!#@%$libre';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

7. Después, deshabilita el modo estricto de MySQL por ahora (la compatibilidad con el modo estricto de MySQL aún no se ha agregado).

$ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf    [On Debian/Ubuntu]
# vi /etc/my.cnf        [On CentOS/RHEL]

Dentro de la sección [mysqld] por favor agrega.

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

Luego reinicia el servidor de la base de datos para que los cambios surtan efecto.

$ sudo systemctl restart mysql     [On Debian/Ubuntu]
# systemctl restart mariadb        [On CentOS/RHEL]

Paso 4: Configurar y Iniciar PHP-FPM

8. A continuación, establezca su date.timezone en el archivo php.ini a su zona horaria actual, por ejemplo, “Africa/Kampala”, como se muestra en la siguiente captura de pantalla.

------------ On Debian/Ubuntu ------------ 
$ sudo vim /etc/php/7.0/fpm/php.ini
$ sudo vim /etc/php/7.0/cli/php.ini

------------ On CentOS/RHEL ------------ 
# vi /etc/php.ini
Set Time Zone in PHP File

9. Luego, habilite el módulo mcrypt de PHP en Ubuntu y reinicie php-fpm como se muestra a continuación.

------------ On Debian/Ubuntu ------------ 
$ sudo phpenmod mcrypt
$ sudo systemctl restart php7.0-fpm

10. En CentOS/RHEL, necesita realizar los siguientes cambios en el archivo de configuración de php-fpm.

# vi /etc/php-fpm.d/www.conf

Haga los siguientes cambios.

;user = apache
user = nginx

group = apache   ; keep group as apache

;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php7.2-fpm.sock

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

11. Reinicie el servicio php-fpm como se muestra.

# systemctl restart php-fpm

Paso 5: Configure Nginx para LibreNMS

12. En este paso, necesita configurar un bloque de servidor Nginx para librenms para acceder a la interfaz web. Cree un archivo .conf para ello como se muestra.

$ sudo vim /etc/nginx/conf.d/librenms.conf     [On Debian/Ubuntu]
# vi /etc/nginx/conf.d/librenms.conf           [On CentOS/RHEL]         

Agregue la siguiente configuración, edite server_name según sea necesario.

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.0-fpm.sock;
 }
 location ~ /\.ht {
  deny all;
 }
}

13. Luego guarde y salga del archivo. También elimine la configuración del bloque de servidor predeterminado y reinicie el servidor Nginx.

------------ On Debian/Ubuntu ------------ 
$ sudo rm /etc/nginx/sites-enabled/default
$ sudo systemctl restart nginx

------------ On CentOS/RHEL ------------ 
# systemctl restart nginx

NOTA: En CentOS/RHEL, deberá desactivar la sección del sitio predeterminado, si este es el único sitio que está alojando. Elimine la sección del servidor del archivo /etc/nginx/nginx.conf.

14. También en CentOS/RHEL, necesitará instalar la herramienta de política para SELinux y configurar los contextos necesarios por LibreNMS utilizando los siguientes comandos.

------------ On CentOS/RHEL ------------ 
# yum install policycoreutils-python
# semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/logs(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/logs(/.*)?'
# restorecon -RFvv /opt/librenms/logs/
# semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/rrd(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/rrd(/.*)?'
# restorecon -RFvv /opt/librenms/rrd/
# setsebool -P httpd_can_sendmail=1
# setsebool -P httpd_execmem 1

15. Permitir fping creando el archivo http_fping.tt con el siguiente contenido.

On CentOS/RHEL
module http_fping 1.0;

require {
type httpd_t;
class capability net_raw;
class rawip_socket { getopt create setopt write read };
}

#============= httpd_t ==============
allow httpd_t self:capability net_raw;
allow httpd_t self:rawip_socket { getopt create setopt write read };

16. Luego ejecutar estos comandos.

------------ On CentOS/RHEL ------------ 
# checkmodule -M -m -o http_fping.mod http_fping.tt
# semodule_package -o http_fping.pp -m http_fping.mod
# semodule -i http_fping.pp

17. Si está utilizando Firewall en CentOS/RHEL, habilitar el acceso HTTP/HTTPS a través del firewall.

------------ On CentOS/RHEL ------------ 
# firewall-cmd --zone public --add-service http
# firewall-cmd --permanent --zone public --add-service http
# firewall-cmd --zone public --add-service https
# firewall-cmd --permanent --zone public --add-service https

Paso 6: Configurar SNMPD para LibreNMS

18. Ahora usar la configuración SNMP de muestra para crear su archivo de configuración y abrirlo para editarlo, como se muestra a continuación.

------------ On Debian/Ubuntu ------------ 
$ sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
$ sudo vim /etc/snmp/snmpd.conf

------------ On CentOS/RHEL ------------ 
# cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
# vi /etc/snmp/snmpd.conf

Encontrar la cadena RANDOMSTRINGGOESHERE y cambiarla por su propia cadena comunitaria como se muestra en la captura de pantalla.

Set SNMP String

19. A continuación, descargar un script de shell en su sistema, que ayuda a detectar qué sistema operativo y si es Linux, entonces detectará qué distribución de Linux está utilizando:

------------ On Debian/Ubuntu ------------ 
$ sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
$ sudo chmod +x /usr/bin/distro
$ sudo systemctl restart snmpd

------------ On CentOS/RHEL ------------ 
# curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
# chmod +x /usr/bin/distro
# systemctl restart snmpd

Paso 7: Crear Cron y Configurar Logrotate

20. Ahora ejecutar el siguiente comando para configurar una tarea cron para LibreNMS.

# cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms

21. A continuación, todos los registros de LibreNMS se registran en /opt/librenms/logs, es necesario configurar estos registros para que se roten automáticamente, utilizando el archivo de configuración de logrotate proporcionado, como se muestra a continuación.

# cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

Luego establecer los permisos apropiados en el directorio raíz de instalación de LibreNMS y en los archivos de registro.

------------ On Debian/Ubuntu ------------
$ sudo chown -R librenms:librenms  /opt/librenms
$ sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
$ sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs

------------ On CentOS/RHEL ------------ 
# chown -R librenms:librenms /opt/librenms
# setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
# setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs

Paso 8: Acceder al Instalador Web de LibreNMS

22. A continuación, utilizar la siguiente URL para acceder al instalador web y seguir las instrucciones en pantalla.

http://librenms.tecmint.lan/install.php

Para que esta dirección funcione en una máquina local, necesitas configurar un DNS local usando el archivo hosts (/etc/hosts), para resolución de dominios locales o propósitos de prueba antes de ir en vivo.

192.168.43.31 tecmint.lan
192.168.43.31 librenms.tecmint.lan
Setup Local DNS for Domain

23. Verás la página de bienvenida de la instalación como se muestra en la siguiente captura de pantalla, haz clic en Siguiente Etapa para continuar.

LibreNMS Web Installer

24. Luego ingresa la configuración (host de la base de datos, puerto, nombre de usuario y contraseña de usuario) para la base de datos de LibreNMS y haz clic en Siguiente Etapa para proceder.

LibreNMS Database Settings

25. El instalador web ahora comenzará a importar la base de datos de MySQL, esto tomará algún tiempo. Ten en cuenta que el proceso intentará pausar en ciertos puntos, simplemente haz clic en Reintentar para continuar con el proceso de importación.

LibreNMS Database Importing

26. Una vez que la importación de la base de datos esté completa, deberías ver el mensaje “¡La base de datos está actualizada!“, como se muestra en la captura de pantalla a continuación. Luego haz clic en Ir a Agregar Usuario para proceder.

LibreNMS Database Updated

27. A continuación, agrega un usuario LibreNMS, especifica nombre de usuario, contraseña y correo electrónico, luego haz clic en Agregar Usuario para efectuar los cambios.

Add LibreNMS User

28. Ahora haz clic en crear la configuración de LibreNMS para tu sistema, haciendo clic en Generar Configuración.

Generate Librenms Config
LibreNMS Configuration

29. Una vez que se genere la configuración, como se muestra en la captura de pantalla anterior, cópiala y guárdala en el directorio raíz de tu instalación, en un archivo llamado /opt/librenms/config.php.

# vi /opt/librenms/config.php
LibreNMS Configuration
<?php
## Have a look in defaults.inc.php for examples of settings you can set here. DO NOT EDIT defaults.inc.php!

### Database config
$config['db_host'] = 'localhost';
$config['db_port'] = '3306';
$config['db_user'] = 'librenms';
$config['db_pass'] = '=@!#@%$libre';
$config['db_name'] = 'librenms';
$config['db_socket'] = '';

// This is the user LibreNMS will run as
//Please ensure this user is created and has the correct permissions to your install
$config['user'] = 'librenms';

### Locations - it is recommended to keep the default
#$config['install_dir']  = "/opt/librenms";

### This should *only* be set if you want to *force* a particular hostname/port
### It will prevent the web interface being usable form any other hostname
#$config['base_url']        = "http://librenms.company.com";

### Enable this to use rrdcached. Be sure rrd_dir is within the rrdcached dir
### and that your web server has permission to talk to rrdcached.
#$config['rrdcached']    = "unix:/var/run/rrdcached.sock";

### Default community
$config['snmp']['community'] = array("public");

### Authentication Model
$config['auth_mechanism'] = "mysql"; # default, other options: ldap, http-auth
#$config['http_auth_guest'] = "guest"; # remember to configure this user if you use http-auth

### List of RFC1918 networks to allow scanning-based discovery
#$config['nets'][] = "10.0.0.0/8";
#$config['nets'][] = "172.16.0.0/12";
#$config['nets'][] = "192.168.0.0/16";

# Update configuration
#$config['update_channel'] = 'release';  # uncomment to follow the monthly release channel
#$config['update'] = 0;  # uncomment to completely disable updates

30. Guarda y cierra el archivo. Luego vuelve al instalador web para continuar con el proceso de instalación, haciendo clic en Finalizar instalación.

Finish LibreNMS Installation

31. Ahora que tu instalación de LibreNMS está completa, puedes hacer clic en “validar tu instalación y solucionar cualquier problema”, la página de inicio de sesión debería aparecer.

Validate LibreNMS Install

32. A continuación, ingresa tus credenciales de usuario para acceder a la página de validación.

LibreNMS Login Page

33. En el proceso de validación de la instalación, LibreNMS ha descubierto dos problemas, uno es que los dispositivos no se han agregado (esto es una advertencia por ahora), y en segundo lugar, no hemos establecido los permisos apropiados en el archivo de configuración (/opt/librenms/config.php) que fue agregado manualmente, como se muestra en la captura de pantalla a continuación.

LibreNMS Permission Issues

Ahora ejecuta el siguiente comando para establecer el permiso correcto en el archivo de configuración.

$ sudo chown -R librenms:librenms /opt/librenms/config.php 

34. Para agregar dispositivos, ve a: http://librenms.tecmint.lan/addhost. Después de agregar dispositivos, puedes ir a la página de inicio y agregar varios paneles de control.

LibreNMS Dashboard

¡Eso es todo! Puedes encontrar más información, incluida la instalación y configuración en la Documentación de LibreNMS en https://docs.librenms.org/.

LibreNMS es un sistema de monitoreo de red completamente funcional que admite una variedad de hardware de red. Esperamos que esta haya sido una guía de instalación clara, si tienes alguna pregunta, contáctanos a través del formulario de comentarios a continuación.

Source:
https://www.tecmint.com/install-librenms-monitoring-on-ubuntu-centos/