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.