Búsqueda de sitios web

Cómo instalar LibreNMS en CentOS 8/RHEL 8


Bienvenido a la guía de hoy sobre cómo instalar y configurar LibreNMS en RHEL 8/CentOS 8. LibreNMS es una herramienta de monitoreo de red de descubrimiento automático de código abierto 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

Las principales características de la herramienta de monitoreo LibreNMS son:

  • 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

Siga los pasos a continuación para instalar y configurar LibreNMS en RHEL/CentOS 8. Antes de comenzar esta instalación, asegúrese de tener:

  • Repositorio EPEL instalado en RHEL/CentOS 8.

Paso 1: instalar las dependencias requeridas

Siempre comenzamos la instalación con las dependencias requeridas por la aplicación. Agregue el repositorio EPEL a RHEL/CentOS 8 usando nuestra guía a continuación.

Cómo instalar el repositorio EPEL en RHEL/CentOS 8

Luego habilite el repositorio de powertools:

sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf -y install yum-utils
sudo dnf -y config-manager --set-enabled powertools

Abra su terminal y ejecute los siguientes comandos para instalar las dependencias necesarias.

sudo dnf -y install vim zip unzip git cronie fping ImageMagick mtr net-snmp net-snmp-utils nmap rrdtool tar wget 
sudo dnf -y install python3 python3-pip python3-devel
sudo dnf -y install gcc make cmake

Paso 2: instale PHP y Apache

Instale el servidor web Apache, PHP y las extensiones requeridas por LibreNMS.

Instalar httpd:

sudo yum -y install @httpd

Instale PHP y las extensiones requeridas:

sudo dnf -y install http://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo dnf module -y reset php
sudo dnf module install php:remi-7.4 -y
sudo dnf -y install php php-{cli,common,fpm,curl,gd,mbstring,process,snmp,xml,zip,memcached,mysqlnd,json,mbstring,pdo,pdo-dblib,xml}

Inicie el servicio Apache y PHP FPM.

sudo systemctl enable --now php-fpm httpd

Consultar el estado de los servicios.

$ systemctl status php-fpm httpd
 ● php-fpm.service - The PHP FastCGI Process Manager
    Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
    Active: active (running) since Sat 2018-12-29 11:30:09 EAT; 9s ago
  Main PID: 353 (php-fpm)
    Status: "Ready to handle connections"
     Tasks: 6 (limit: 11510)
    Memory: 25.2M
    CGroup: /system.slice/php-fpm.service
            ├─353 php-fpm: master process (/etc/php-fpm.conf)
            ├─359 php-fpm: pool www
            ├─360 php-fpm: pool www
            ├─361 php-fpm: pool www
            ├─362 php-fpm: pool www
            └─363 php-fpm: pool www
 Dec 29 11:30:09 rhel8.local systemd[1]: Starting The PHP FastCGI Process Manager…
 Dec 29 11:30:09 rhel8.local systemd[1]: Started The PHP FastCGI Process Manager.
 ● httpd.service - The Apache HTTP Server
    Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Drop-In: /usr/lib/systemd/system/httpd.service.d
            └─php-fpm.conf
    Active: active (running) since Sat 2018-12-29 11:30:10 EAT; 8s ago
      Docs: man:httpd.service(8)
  Main PID: 365 (httpd)
    Status: "Started, listening on: port 443, port 80"
     Tasks: 213 (limit: 11510)
    Memory: 33.4M
    CGroup: /system.slice/httpd.service
            ├─365 /usr/sbin/httpd -DFOREGROUND
            ├─367 /usr/sbin/httpd -DFOREGROUND
            ├─368 /usr/sbin/httpd -DFOREGROUND
            ├─369 /usr/sbin/httpd -DFOREGROUND
            └─370 /usr/sbin/httpd -DFOREGROUND
 Dec 29 11:30:10 rhel8.local systemd[1]: Starting The Apache HTTP Server…
 Dec 29 11:30:10 rhel8.local httpd[365]: Server configured, listening on: port 443, port 80
 Dec 29 11:30:10 rhel8.local systemd[1]: Started The Apache HTTP Server.

Verifique la versión de PHP y los módulos cargados.

$ php -v
PHP 7.4.27 (cli) (built: Dec 14 2021 17:17:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.27, Copyright (c), by Zend Technologies

$ php -m

Establezca la zona horaria de PHP dentro del archivo /etc/php.ini .

$ sudo vim /etc/php.ini 
; http://php.net/date.timezone
date.timezone = Africa/Nairobi

Permita los puertos http y https en el firewall.

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

Árbitro:

Cómo instalar Apache con mod_ssl y mod_http2 en RHEL 8

Cómo instalar PHP en RHEL/CentOS 8

Paso 3: instalar y configurar el servidor de base de datos

Instale el servidor de base de datos MariaDB en RHEL/CentOS 8 usando la guía a continuación.

Puede optar por utilizar el servidor de base de datos MySQL o MariaDB. Si no tiene ninguno de los dos instalados, las siguientes guías le resultarán útiles.

Cómo instalar MariaDB en RHEL 8/CentOS 8ufeff

Cómo instalar MySQL 8.0 en RHEL 8/CentOS 8

Después de la instalación del servidor de base de datos, cree la base de datos y el usuario para la herramienta de monitoreo LibreNMS.

$ mysql -u root -p
CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'StrongDBPassword';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
exit

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

sudo vim /etc/my.cnf.d/mariadb-server.cnf

Dentro de la sección [mysqld] agregue:

innodb_file_per_table=1
lower_case_table_names=0

Reiniciar el servicio mariadb

sudo systemctl enable mariadb
sudo systemctl restart mariadb

El estado del servicio debería mostrarse en ejecución.

$ systemctl status mariadb
 ● mariadb.service - MariaDB 10.3 database server
    Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
    Active: active (running) since Sat 2018-12-29 11:45:07 EAT; 10s ago
      Docs: man:mysqld(8)
            https://mariadb.com/kb/en/library/systemd/
   Process: 2340 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
   Process: 2271 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
   Process: 2245 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
  Main PID: 2309 (mysqld)
    Status: "Taking your SQL requests now…"
     Tasks: 30 (limit: 11510)
    Memory: 74.9M
    CGroup: /system.slice/mariadb.service
            └─2309 /usr/libexec/mysqld --basedir=/usr
 Dec 29 11:45:06 rhel8.local systemd[1]: Starting MariaDB 10.3 database server…
 Dec 29 11:45:06 rhel8.local mysql-prepare-db-dir[2271]: Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done.
 Dec 29 11:45:06 rhel8.local mysql-prepare-db-dir[2271]: If this is not the case, make sure the /var/lib/mysql is empty before running mysql-prepare-db>
 Dec 29 11:45:07 rhel8.local mysqld[2309]: 2018-12-29 11:45:07 0 [Note] /usr/libexec/mysqld (mysqld 10.3.10-MariaDB) starting as process 2309 …
 Dec 29 11:45:07 rhel8.local mysqld[2309]: 2018-12-29 11:45:07 0 [Warning] Could not increase number of max_open_files to more than 1024 (request: 4182)
 Dec 29 11:45:07 rhel8.local mysqld[2309]: 2018-12-29 11:45:07 0 [Warning] Changed limits: max_open_files: 1024  max_connections: 151 (was 151)  table_>
 Dec 29 11:45:07 rhel8.local systemd[1]: Started MariaDB 10.3 database server.

Paso 4: Instalar y configurar LibreNMS en RHEL/CentOS 8

Agregar usuario librenms

sudo useradd librenms -d /opt/librenms -M -r
sudo usermod -a -G librenms apache

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

sudo su - librenms
./scripts/composer_wrapper.php install --no-dev
exit

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

Copie y configure la plantilla de configuración SNMP:

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
$ systemctl status snmpd
 ● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
    Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; vendor preset: disabled)
    Active: active (running) since Sat 2018-12-29 12:07:23 EAT; 5s ago
  Main PID: 2747 (snmpd)
     Tasks: 1 (limit: 11510)
    Memory: 5.4M
    CGroup: /system.slice/snmpd.service
            └─2747 /usr/sbin/snmpd -LS0-6d -f
 Dec 29 12:07:23 rhel8.local systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon….
 Dec 29 12:07:23 rhel8.local snmpd[2747]: NET-SNMP version 5.8
 Dec 29 12:07:23 rhel8.local systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..

Configurar apache

Cree un nuevo archivo de configuración de Apache para LibreNMS.

sudo vi /etc/httpd/conf.d/librenms.conf

Agregue la siguiente configuración, edite ServerName según sea necesario:

<VirtualHost *:80>
  DocumentRoot /opt/librenms/html/
  ServerName  librenms.example.com

  AllowEncodedSlashes NoDecode
  <Directory "/opt/librenms/html/">
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews
  </Directory>
</VirtualHost>

Reemplace librenms.example.com con el nombre de host de su servidor configurado en DNS.

Configurar la política SELinux

Permitir que Apache proporcione archivos en /opt/librenms/html/

sudo semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/logs(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/logs(/.*)?'
sudo restorecon -RFvv /opt/librenms/logs/
sudo semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/rrd(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/rrd(/.*)?'
sudo restorecon -RFvv /opt/librenms/rrd/
sudo semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/storage(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/storage(/.*)?'
sudo restorecon -RFvv /opt/librenms/storage/
sudo semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/bootstrap/cache(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/bootstrap/cache(/.*)?'
sudo restorecon -RFvv /opt/librenms/bootstrap/cache/
sudo setsebool -P httpd_can_sendmail=1

Permitir ping

Cree el archivo http_fping.tt con el siguiente contenido.

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 };

Luego ejecuta estos comandos

sudo checkmodule -M -m -o http_fping.mod http_fping.tt
sudo semodule_package -o http_fping.pp -m http_fping.mod
sudo semodule -i http_fping.pp

Si todo se ve bien, reinicie el servicio httpd.

sudo systemctl restart httpd

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:librenms /opt/librenms
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 se hayan aprobado todas las comprobaciones previas a la instalación y haga clic en "Siguiente etapa".

2. 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.

Si la importación se realizó correctamente, debería recibir un mensaje como el siguiente.

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

4. 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/config.php

<?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'] = 'StrongDBPassword';
$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

Cambie la propiedad del archivo a un usuario librenms:

sudo chown librenms:librenms /opt/librenms/config.php

5. Haga clic en el botón “Finalizar instalación” para completar la instalación de LibreNMS. Debería ser recibido con una página de inicio de sesión de administrador. Inicie sesión y seleccione Validar instalación

El panel de LibreNMS debería verse similar al siguiente.

Lea la documentación de LibreNMS para conocer configuraciones y configuraciones avanzadas.

Artículos similares:

Cómo instalar y configurar LibreNMS en Ubuntu

Cómo monitorear el host VMware ESXi usando LibreNMS

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

Artículos relacionados: