LibreNMS: una eina de supervisió de xarxa completa per a Linux


LibreNMS és un sistema de monitorització de xarxa basat en PHP, de codi obert, potent i ric en funcions de descoberta automàtica que utilitza el protocol SNMP. Admet una àmplia gamma de sistemes operatius com Linux, FreeBSD, així com dispositius de xarxa com Cisco, Juniper, Brocade, Foundry, HP i molts més.

  1. Descobreix automàticament tota una xarxa mitjançant aquests protocols: CDP, FDP, LLDP, OSPF, BGP, SNMP i ARP.
  2. Té una interfície d'usuari web adaptada per a mòbils, amb taulers de control personalitzables.
  3. Admet un agent Unix.
  4. Admet l'escala horitzontal per expandir-se amb la vostra xarxa.
  5. Admet un sistema d'alertes molt flexible i personalitzable; envia notificacions per correu electrònic, irc, slack i molt més.
  6. Admet una API per gestionar, representar gràfics i recuperar dades del vostre sistema.
  7. Ofereix un sistema de facturació del trànsit.
  8. També és compatible amb les aplicacions d'Android i iOS que ofereixen funcions bàsiques.
  9. Admet la integració amb NfSen, collectd, SmokePing, RANCID i Oxidized.
  10. Admet diversos mètodes d'autenticació com ara MySQL, HTTP, LDAP, Radius i Active Directory.
  11. Permet l'actualització automàtica i moltes altres funcions.

Hi ha disponible una demostració en línia perquè la proveu abans d'instal·lar LibreNMS als sistemes Linux.

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

  1. Ubuntu 16.04 amb la pila LEMP
  2. CentOS 7 amb LEMP Stack

En aquest tutorial aprendrem a instal·lar l'eina de supervisió de la xarxa LibreNMS en un Ubuntu o CentOS Linux recentment instal·lat (les mateixes instruccions també funcionen en distribucions basades en Debian i RHEL).

NOTA: Totes aquestes instruccions d'aquest article s'han d'executar com a usuari root, si no ho sou, utilitzeu l'ordre sudo per obtenir privilegis d'usuari root.

Pas 1: instal·leu els paquets necessaris

1. Primer comenceu instal·lant tots els paquets necessaris mitjançant el gestor de paquets predeterminat, tal com es mostra.

$ 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
# 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. Un cop instal·lats tots els paquets, els serveis nginx, php-fpm, mariadb i snmp s'iniciaran i s'habilitaran per iniciar-se automàticament en el moment de l'arrencada (normalment és el cas amb Ubuntu), en cas contrari, podeu executar les ordres següents per iniciar-los i activar-los.

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

Pas 2: instal·leu l'eina de supervisió LibreNMS

3. A continuació, creeu un usuari del sistema anomenat librenms, amb l'ordre useradd; on la marca -M desactiva la creació del directori inicial de l'usuari i -r permet la creació d'un compte del sistema. A continuació, afegiu l'usuari de librenms al grup www-data (a Ubuntu) o nginx (a CentOS) de la manera següent.

------------ 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. A continuació, instal·leu LibreNMS mitjançant l'ordre del compositor, tal com es mostra.

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

Pas 3: creeu la base de dades LibreNMS

5. Abans de poder començar a utilitzar el servidor MariaDB, cal assegurar la instal·lació, executar l'script de seguretat proporcionat al paquet binari. Us demanarà que configureu una contrasenya d'arrel, elimineu usuaris anònims, desactiveu l'inici de sessió d'arrel de forma remota i elimineu la base de dades de prova.

Podeu iniciar l'script emetent l'ordre següent i respondre totes les preguntes amb yes/y.

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

6. A continuació, inicieu sessió a la base de dades MariaDB per crear una base de dades per a LibreNMS (recordeu utilitzar una contrasenya segura/segura en un entorn de producció).

$ 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 '[email !#@%$libre';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

7. Després, desactiveu el mode estricte de MySQL de moment (encara no s'ha afegit la compatibilitat amb el mode estricte de MySQL).

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

A la secció [mysqld], si us plau, afegiu.

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

A continuació, reinicieu el servidor de bases de dades per efectuar els canvis.

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

Pas 4: configureu i inicieu PHP-FPM

8. A continuació, configureu la vostra data.timezone al php.ini a la vostra zona horària actual, per exemple \Àfrica/Kampala, tal com es mostra a la següent 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

9. A continuació, activeu el mòdul PHP mcrypt a Ubuntu i reinicieu php-fpm tal com es mostra.

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

10. A CentOS/RHEL heu de fer els canvis següents al fitxer de configuració php-fpm.

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

Feu els següents canvis.

;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. Reinicieu el servei php-fpm tal com es mostra.

# systemctl restart php-fpm

Pas 5: configureu Nginx per a LibreNMS

12. En aquest pas, heu de configurar un bloc de servidor Nginx per a librenms per accedir a la interfície d'usuari web. Creeu un fitxer .conf com es mostra.

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

Afegiu la configuració següent, editeu nom_servidor segons sigui necessari.

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. A continuació, deseu i sortiu del fitxer. Traieu també la configuració predeterminada del bloc del servidor i reinicieu el servidor Nginx.

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

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

NOTA: a CentOS/RHEL, haureu de desactivar la secció del lloc predeterminada, si aquest és l'únic lloc que allotgeu. Suprimiu la secció del servidor del fitxer /etc/nginx/nginx.conf.

14. També a CentOS/RHEL, heu d'instal·lar l'eina de polítiques per a SELinux i configurar els contextos necessaris per LibreNMS mitjançant les ordres següents.

------------ 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. Permet fping creant el fitxer http_fping.tt amb el contingut següent.

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. A continuació, executeu aquestes ordres.

------------ 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 feu servir el tallafoc a CentOS/RHEL, activeu l'accés HTTP/HTTPS mitjançant el tallafoc.

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

Pas 6: configureu SNMPD per a LibreNMS

18. Ara utilitzeu la configuració snmp de mostra per crear el vostre fitxer de configuració i obrir-lo per editar-lo, de la manera següent.

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

Cerqueu la cadena RANDOMSTRINGGOESHERE i canvieu-la per la vostra pròpia cadena de comunitat tal com es mostra a la captura de pantalla.

19. A continuació, descarregueu un script d'intèrpret d'ordres al vostre sistema, que us ajudarà a detectar quin sistema operatiu i, si és Linux, detectarà quina distribució de Linux esteu utilitzant:

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

Pas 7: creeu Cron i configureu Logrotate

20. Ara executeu l'ordre següent per configurar un treball cron per al LibreNMS.

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

21. A continuació, tots els registres de LibreNMS s'enregistren a /opt/librenms/logs, pot ser que necessiteu configurar aquests registres perquè es tornin automàticament, utilitzant el fitxer de configuració de logrotate proporcionat, com aquest.

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

A continuació, configureu els permisos adequats al directori arrel d'instal·lació de LibreNMS i als fitxers de registre.

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

Pas 8: accediu a l'instal·lador web de LibreNMS

22. A continuació, utilitzeu l'URL següent per accedir a l'instal·lador web i seguiu les instruccions que apareixen a la pantalla.

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

Perquè aquesta adreça funcioni en una màquina local, heu de configurar un DNS local mitjançant el fitxer hosts (/etc/hosts), per a la resolució del domini local o amb finalitats de prova abans de posar-se en marxa.

192.168.43.31 tecmint.lan
192.168.43.31 librenms.tecmint.lan

23. Veureu la pàgina de benvinguda de la instal·lació tal com es mostra a la captura de pantalla següent, feu clic a Etapa següent per continuar.

24. A continuació, introduïu la configuració (amfitrió de la base de dades, port, nom d'usuari i contrasenya d'usuari) per a la base de dades LibreNMS i feu clic a Etapa següent per continuar.

25. L'instal·lador web ara començarà a importar la base de dades MySQL, això trigarà un temps. Tingueu en compte que el procés intentarà aturar-se en determinats moments, simplement feu clic a Reintentar per continuar amb el procés d'importació.

26. Un cop finalitzada la importació de la base de dades, hauríeu de veure el missatge \La base de dades està actualitzada!, tal com es mostra a la captura de pantalla següent. A continuació, feu clic a Ves a Afegeix usuari per continuar.

27. A continuació, afegiu un usuari de LibreNMS, especifiqueu el nom d'usuari, la contrasenya i el correu electrònic i, a continuació, feu clic a Afegeix usuari per fer els canvis.

28. Ara feu clic a crear la configuració de LibreNMS per al vostre sistema, fent clic a Generar configuració.

29. Un cop generada la configuració, com es mostra a la captura de pantalla anterior, copieu-la i deseu-la al directori arrel de la vostra instal·lació, en un fitxer anomenat /opt/librenms/config.php.

# vi /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'] = '[email !#@%$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. Deseu i tanqueu el fitxer. A continuació, torneu a l'instal·lador web per continuar amb el procés d'instal·lació fent clic a Finalitza la instal·lació.

31. Ara que la vostra instal·lació de LibreNMS s'ha completat, podeu fer clic a \validar la instal·lació i solucionar qualsevol problema, hauria d'aparèixer la pàgina d'inici de sessió.

32. A continuació, introduïu les vostres credencials d'usuari per accedir a la pàgina de validació.

33. Des del procés de validació de la instal·lació, LibreNMS ha descobert dos problemes, un és que no s'han afegit dispositius (això és un avís per ara) i, en segon lloc, no hem establert el permís adequat al fitxer de configuració (/opt/librenms). /config.php) que es va afegir manualment, tal com es mostra a la captura de pantalla següent.

Ara executeu l'ordre següent per establir el permís correcte al fitxer de configuració.

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

34. Per afegir dispositius, aneu a: http://librenms.tecmint.lan/addhost. Després d'afegir dispositius, podeu anar a la pàgina d'inici i afegir diversos taulers.

Això és! Podeu trobar més informació, inclosa la instal·lació i la configuració, a la documentació de LibreNMS a https://docs.librenms.org/.

LibreNMS és un sistema de monitorització de xarxa amb totes les funcions que admet una varietat de maquinari de xarxa. Esperem que aquesta sigui una guia d'instal·lació lúcida, si teniu cap pregunta, poseu-vos en contacte amb nosaltres mitjançant el formulari de comentaris que trobareu a continuació.