Búsqueda de sitios web

Instale LibreNMS en CentOS 7 con Let's Encrypt y Nginx


En esta guía, cubriremos la instalación y configuración de LibreNMS en el servidor CentOS 7 con Nginx y el certificado SSL Letsencrypt opcional por seguridad.

¿Qué es LibreNMS?

LibreNMS es una herramienta de monitoreo de red de descubrimiento automático con licencia GPL basada en PHP, MySQL y SNMP. LibreNMS incluye soporte para una amplia gama de hardware de red y sistemas operativos, incluidos Juniper, Cisco, Linux, Foundry, FreeBSD, Brocade, HP, Windows y muchos más. Es una bifurcación de la herramienta de monitoreo "Observium".

Características de LibreNMS

A continuación se muestran las características principales de la herramienta de monitoreo de redes LibreNMS

  • Tiene detección automática : descubrirá automáticamente toda su red mediante CDP, FDP, LLDP, OSPF, BGP, SNMP y ARP.
  • Acceso a API : LibreNMS proporciona una API completa para administrar, representar gráficamente y recuperar datos de su instalación.
  • Actualizaciones automáticas : Con LibreNMS puedes mantenerte actualizado automáticamente con nuevas funciones y correcciones de errores.
  • Alertas personalizables : sistema de alertas altamente flexible, notificaciones por correo electrónico, IRC, slack y más.
  • Compatibilidad con encuestas distribuidas a través de escalamiento horizontal que crece con su red
  • Sistema de facturación : genere fácilmente facturas de ancho de banda para los puertos de su red según el uso o la transferencia.
  • Aplicación para Android e iOS : hay una aplicación nativa para iPhone/Android disponible que proporciona funciones básicas.
  • Múltiples métodos de autenticación: MySQL, HTTP, LDAP, Radius, Active Directory
  • Soporte de integración para NfSen, collectd, SmokePing, RANCID, Oxidized

Instale LibreNMS en CentOS 7 con Let's Encrypt y Nginx

Siga los pasos que se proporcionan aquí para ejecutar la herramienta de monitoreo LibreNMS en su servidor CentOS 7. Asegúrese de que su sistema esté actualizado y reiniciado:

sudo yum -y update
sudo reboot

Después de reiniciar, configure la zona horaria y chronyd:

sudo yum -y install chrony
sudo timedatectl set-timezone Africa/Nairobi
sudo timedatectl set-ntp yes
sudo chronyc sources

Ponga SELinux en modo permisivo

Ejecute los siguientes comandos para poner SELinux en modo permisivo:

sudo setenforce 0

Para persistir el cambio, edite el archivo de configuración de SELinux

sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
cat /etc/selinux/config | grep SELINUX=

Agregar el repositorio EPEL al sistema

Habilite el repositorio EPEL en su sistema

sudo yum -y install vim epel-release yum-utils

Instalar las dependencias requeridas

Instale todas las dependencias necesarias para instalar y ejecutar LibreNMS en CentOS 7:

sudo yum -y install zip unzip git cronie wget fping net-snmp net-snmp-utils ImageMagick jwhois mtr rrdtool MySQL-python nmap  python-memcached  python3 python3-pip python3-devel

Instalar PHP y Nginx

PHP se instalará desde el repositorio REMI, agréguelo al sistema como se muestra a continuación:

sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Deshabilite el repositorio remi-php54 que está habilitado de forma predeterminada y habilite el repositorio para PHP 7.2

sudo yum-config-manager --disable remi-php54
sudo yum-config-manager --enable remi-php74

Luego, finalmente instale los módulos php necesarios

sudo yum -y install php php-{cli,mbstring,process,fpm,mysqlnd,zip,snmp,devel,gd,mcrypt,mbstring,curl,xml,pear,bcmath}

Configurar PHP

Edite el archivo de configuración PHP-FPM:

sudo vim /etc/php-fpm.d/www.conf

Establecer debajo de las variables

user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Establecer zona horaria PHP

$ sudo vim /etc/php.ini
date.timezone = Africa/Nairobi

Instalar el servidor web nginx

Instale el servidor web Nginx en CentOS 7:

sudo yum -y install nginx

Inicie el servicio nginx y php-fpm

for i in nginx php-fpm; do
   sudo systemctl enable $i
   sudo systemctl restart $i
done

Instalar y configurar el servidor de base de datos

Instale la base de datos MariaDB en su servidor CentOS 7.

curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
sudo bash mariadb_repo_setup
sudo yum install MariaDB-server MariaDB-client MariaDB-backup
sudo systemctl enable --now mariadb
sudo mariadb-secure-installation

Edite el archivo my.cnf y agregue las siguientes líneas dentro de la sección [mysqld] :

$ sudo vim /etc/my.cnf.d/server.cnf
[mysqld]
innodb_file_per_table=1
lower_case_table_names=0

Reinicie el servidor MariaDB después de realizar los cambios.

sudo systemctl restart mariadb

Una vez que el servidor de la base de datos esté instalado y ejecutándose, inicie sesión como usuario root:

$ sudo mysql -u root -p

Crear una base de datos y un usuario:

CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms_user'@'localhost' IDENTIFIED BY "Password1234!";
FLUSH PRIVILEGES;
EXIT;

Instalar y configurar LibreNMS en CentOS 7

Si desea utilizar el certificado SSL de Letsencrypt, primero debe solicitarlo. Ejecute los siguientes comandos como usuario root

sudo yum -y install certbot python2-certbot-nginx

Habilite el puerto http en el firewall si tiene el servicio firewalld ejecutándose

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Ahora obtenga el certificado para usar.

export DOMAIN='librenms.example.com'
export EMAIL="[email "
sudo certbot certonly --standalone -d $DOMAIN --preferred-challenges http --agree-tos -n -m $EMAIL --keep-until-expiring

El certificado se colocará en el directorio /etc/letsencrypt/live/librenms.example.com/ .

Clonar proyecto LibreNMS desde Github

Agregar usuario de librenms:

sudo useradd librenms -d /opt/librenms -M -r
sudo usermod -aG librenms nginx

Clonar proyecto LibreNMS desde Github:

cd /opt
sudo git clone https://github.com/librenms/librenms.git
sudo chown librenms:librenms -R /opt/librenms

Instalar dependencias de PHP

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

Una instalación exitosa debería tener un resultado similar al siguiente:

....
Requirement already satisfied: typing-extensions>=3.6.4; python_version < "3.8" in /root/.local/lib/python3.6/site-packages (from importlib-metadata>=1.0; python_version < "3.8"->redis>=3.0->-r requirements.txt (line 3))
Installing collected packages: psutil, command-runner
  Running setup.py install for psutil: started
    Running setup.py install for psutil: finished with status 'done'
Successfully installed command-runner-1.3.0 psutil-5.9.0

Copie y configure la plantilla de configuración SNMP:

Ejecute los siguientes comandos en la terminal:

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

Establezca su cadena de comunidad reemplazando RANDOMSTRINGGOESHERE

com2sec readonly  default       MyInternalNetwork

Descargar el script del identificador de la versión de distribución

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

Luego inicie y habilite el servicio snmpd 

sudo systemctl enable snmpd
sudo systemctl restart snmpd

Cuando todo esté hecho, cree el archivo de configuración nginx para LibreNMS

Configuración de Nginx sin SSL

Esto se coloca en /etc/nginx/conf.d/librenms.conf

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

Configuración de Nginx con SSL

server {
        listen 80;
        server_name librenms.example.com;
        root        /opt/librenms/html;
        return 301 https://$server_name$request_uri;
}

server {
    	listen 443 ssl http2;
        server_name librenms.example.com;;
        root        /opt/librenms/html;
        index       index.php;

	# Set Logs path
     	access_log  /var/log/nginx/access.log;
     	error_log   /var/log/nginx/error.log;

	# Configure SSL
	ssl_certificate /etc/letsencrypt/live/librenms.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/librenms.example.com/privkey.pem;

   	# Enabling Gzip compression on Nginx
 	 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;
     }

     # PHP-FPM handle all .php files requests
     location ~ \.php {
         include fastcgi.conf;
         fastcgi_split_path_info ^(.+\.php)(/.+)$;
         fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
     }

     location ~ /\.ht {
         deny all;
     }
 }

Confirme la sintaxis de nginx:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si todo se ve bien, reinicie el servicio.

sudo systemctl restart nginx

Configurar trabajos cron

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

Copiar la configuración de logrotate

LibreNMS mantiene registros en /opt/librenms/logs. Con el tiempo, estos pueden crecer y rotarse.

Para rotar los registros antiguos, puede utilizar el archivo de configuración logrotate proporcionado:

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

Establecer permisos adecuados

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

Inicie el instalador web LibreNMS

Abra http://librenms.example.com/install.php en su navegador web para finalizar la instalación.

Confirme que todas las comprobaciones previas a la instalación pasen y haga clic en "Siguiente etapa".

Configure las credenciales de la base de datos como se creó anteriormente. Comenzará a importar el esquema de la base de datos y completar los datos.

En la página siguiente, se le pedirá que configure la cuenta de usuario administrador.

Username: admin
Password: StrongPassword

Lo siguiente es la generación del archivo de configuración; es posible que deba crear el archivo manualmente con el contenido proporcionado si no se puede crear. La ruta del archivo debe ser /opt/librenms/.env.

$ sudo vim /opt/librenms/.env 
# Database connection settings
DB_HOST=localhost
DB_DATABASE=librenms
DB_USERNAME=librenms_user
DB_PASSWORD=Password1234!

Cambie la propiedad del archivo a un usuario librenms:

sudo chown librenms:librenms /opt/librenms/.env

Haga clic en el botón Finalizar instalación ” para completar la instalación de LibreNMS en CentOS 7.

Debería ser recibido con una página de inicio de sesión de administrador. Inicie sesión y seleccione Validar instalación

También tenemos otros tutoriales de monitoreo sobre Zabbix, Grafana, Prometheus e InfluxDB.

Artículos relacionados: