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.