LibreNMS - Un instrument complet de monitorizare a rețelei pentru Linux


LibreNMS este un sistem de monitorizare a rețelei bazat pe PHP cu descoperire automată, cu sursă deschisă, puternic și bogat în funcții, care utilizează protocolul SNMP. Acceptă o gamă largă de sisteme de operare, inclusiv Linux, FreeBSD, precum și dispozitive de rețea, inclusiv Cisco, Juniper, Brocade, Foundry, HP și multe altele.

Caracteristici LibreNMS:

  1. Descoperă automat o întreagă rețea folosind aceste protocoale: CDP, FDP, LLDP, OSPF, BGP, SNMP și ARP.
  2. Are o interfață web prietenoasă cu dispozitivele mobile, cu tablouri de bord personalizabile.
  3. Suportă un agent Unix.
  4. Acceptă scalarea orizontală pentru a se extinde cu rețeaua dvs.
  5. Sprijină un sistem de alertă extrem de flexibil și personalizabil; trimite notificări prin e-mail, irc, slack și multe altele.
  6. Acceptă un API pentru gestionarea, reprezentarea grafică și preluarea datelor din sistemul dvs.
  7. Oferă un sistem de facturare a traficului.
  8. De asemenea, acceptă aplicații Android și iOS care oferă funcționalități de bază.
  9. Suporta integrarea cu NfSen, collectd, SmokePing, RANCID și Oxidized.
  10. Acceptă mai multe metode de autentificare, cum ar fi MySQL, HTTP, LDAP, Radius și Active Directory.
  11. Permite actualizarea automată și multe alte funcții.

Este disponibilă o demonstrație online pe care o puteți încerca înainte de a instala LibreNMS pe sistemele Linux.

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

Mediu de testare:

  1. Ubuntu 16.04 cu LEMP Stack
  2. CentOS 7 cu LEMP Stack

În acest tutorial vom învăța cum să instalăm Instrumentul de monitorizare a rețelei LibreNMS pe un Ubuntu sau CentOS Linux proaspăt instalat (aceleași instrucțiuni funcționează și pe Debian și RHEL).

NOTĂ: Toate aceste instrucțiuni din acest articol ar trebui să fie rulate ca utilizator root, dacă nu sunteți, utilizați comanda sudo pentru a obține root privilegii de utilizator.

Pasul 1: Instalați pachetele necesare

1. Începeți mai întâi prin a instala toate pachetele necesare utilizând managerul de pachete implicit, așa cum se arată.

Pe Ubuntu/Debian

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

Pe CentOS/RHEL

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. Odată ce toate pachetele sunt instalate, nginx, php-fpm, mariadb și snmp< Serviciile vor fi pornite și activate pentru pornirea automată la momentul pornirii (acesta este, în mod normal, cazul cu Ubuntu), în caz contrar, puteți rula comenzile de mai jos pentru a le porni și a le activa.

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

Pasul 2: Instalați Instrumentul de monitorizare LibreNMS

3. Apoi, creați un utilizator de sistem numit librenms, cu comanda useradd; unde flagul -M dezactivează crearea directorului principal al utilizatorului, iar -r permite crearea unui cont de sistem. Apoi adăugați utilizatorul librenms în grupul www-data (pe Ubuntu) sau nginx (pe CentOS) după cum urmează.

------------ 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. Apoi instalați LibreNMS prin comanda composer, așa cum se arată.

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

Pasul 3: Creați o bază de date LibreNMS

5. Înainte de a putea începe să utilizați serverul MariaDB, trebuie să vă securizați instalarea, să rulați scriptul de securitate furnizat în pachetul binar. Vă va cere să setați o parolă de root, să eliminați utilizatorii anonimi, să dezactivați autentificarea root de la distanță și să eliminați baza de date de testare.

Puteți lansa scriptul lansând comanda de mai jos și puteți răspunde la toate întrebările cu yes/y.

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

6. Apoi conectați-vă la baza de date MariaDB pentru a crea o bază de date pentru LibreNMS (nu uitați să utilizați o parolă puternică/securizată într-un mediu de producție).

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

7. După aceea, dezactivați pentru moment modul strict MySQL (compatibilitatea cu modul strict MySQL nu a fost încă adăugat).

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

În secțiunea [mysqld] vă rugăm să adăugați.

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

Apoi reporniți serverul bazei de date pentru a efectua modificările.

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

Pasul 4: Configurați și porniți PHP-FPM

8. Apoi, setați date.timezone în php.ini la fusul orar actual, de exemplu „Africa/Kampala ”, așa cum se arată în următoarea captură de ecran.

------------ 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. Apoi activați modulul PHP mcrypt în Ubuntu și reporniți php-fpm după cum se arată.

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

10. Pe CentOS/RHEL trebuie să faceți următoarele modificări în fișierul de configurare php-fpm.

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

Faceți următoarele modificări.

;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. Reporniți serviciul php-fpm după cum se arată.

systemctl restart php-fpm

Pasul 5: Configurați Nginx pentru LibreNMS

12. În acest pas, trebuie să configurați un bloc de server Nginx pentru librenms pentru a accesa interfața de utilizare web. Creați un fișier .conf pentru acesta, așa cum se arată.

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

Adăugați următoarea config, editați nume_server după cum este necesar.

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. Apoi salvați și părăsiți fișierul. De asemenea, eliminați configurația implicită de blocare a serverului și reporniți serverul Nginx.

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

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

NOTĂ: pe CentOS/RHEL, va trebui să dezactivați secțiunea site-ul implicit, dacă aceasta este singurul site pe care îl găzduiești. Ștergeți secțiunea server din fișierul /etc/nginx/nginx.conf.

14. Tot pe CentOS/RHEL, trebuie să instalați instrumentul de politici pentru SELinux și să configurați >contextele necesare LibreNMS folosind următoarele comenzi.

------------ 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. Permite fping creând fișierul http_fping.tt cu următorul conținut.

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. Apoi rulați aceste comenzi.

------------ 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. Dacă utilizați Firewall pe CentOS/RHEL, activați accesul HTTP/HTTPS prin firewall.

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

Pasul 6: Configurați SNMPD pentru LibreNMS

18. Acum utilizați exemplul de configurare snmp pentru a crea fișierul de configurare și deschideți-l pentru editare, după cum urmează.

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

Găsiți șirul RANDOMSTRINGGOESHERE și schimbați-l în propriul șir de comunitate, așa cum se arată în captura de ecran.

19. Apoi, descărcați un script shell pe sistemul dvs., care vă ajută să detectați ce sistem de operare și dacă este Linux, atunci va detecta ce distribuție Linux pe care o utilizați:

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

Pasul 7: Creați Cron și configurați Logrotate

20. Acum rulați comanda de mai jos pentru a configura o lucrare cron pentru LibreNMS.

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

21. În continuare, toate jurnalele LibreNMS sunt înregistrate în /opt/librenms/logs, poate fi necesar să configurați aceste jurnale pentru a fi rotite automat , folosind fișierul de configurare logrotate furnizat, astfel.

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

Apoi setați permisiunile corespunzătoare pentru directorul rădăcină de instalare LibreNMS și fișierele jurnal.

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

Pasul 8: Accesați LibreNMS Web Installer

22. Apoi, utilizați următoarea adresă URL pentru a accesa programul de instalare web și urmați instrucțiunile de pe ecran.

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

Pentru ca această adresă să funcționeze pe o mașină locală, trebuie să configurați un DNS local utilizând fișierul hosts (/etc/hosts), pentru rezoluția domeniului local sau în scopuri de testare, înainte de a fi difuzat.

192.168.43.31 tecmint.lan
192.168.43.31 librenms.tecmint.lan

23. Veți vedea pagina de întâmpinare a instalării, așa cum se arată în următoarea captură de ecran, faceți clic pe Etapa următoare pentru a continua.

24. Apoi introduceți setările (gazdă bazei de date, port, nume de utilizator și parolă de utilizator) pentru baza de date LibreNMS și faceți clic pe Etapa următoare pentru a continua.

25. Programul de instalare web va începe acum să importe baza de date MySQL, acest lucru va dura ceva timp. Rețineți că procesul va încerca să se întrerupă în anumite puncte, doar faceți clic pe Reîncercați pentru a continua procesul de import.

26. După finalizarea importului bazei de date, ar trebui să vedeți mesajul „Baza de date este actualizată! ”, așa cum se arată în captura de ecran de mai jos. Apoi faceți clic pe Accesați Adăugare utilizator pentru a continua.

27. Apoi, adăugați un utilizator LibreNMS, specificați numele de utilizator, parola și adresa de e-mail, apoi faceți clic pe Adăugați utilizator pentru a efectua modificările.

28. Acum faceți clic pe creați configurația LibreNMS pentru sistemul dvs., făcând clic pe Generare configurație.

29. Odată generată configurația, așa cum se arată în captura de ecran anterioară, copiați-o și salvați-o în directorul rădăcină al instalării dvs., într-un fișier numit /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'] = '=@!#@%$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. Salvați și închideți fișierul. Apoi reveniți la programul de instalare web pentru a continua procesul de instalare, făcând clic pe Finalizare instalare.

31. Acum, instalarea LibreNMS este completă, puteți da clic pe „validați instalarea și remediați orice problemă ”, ar trebui să apară pagina de conectare.

32. Apoi, introduceți acreditările dvs. de utilizator pentru a accesa pagina de validare.

33. Din procesul de validare a instalării, LibreNMS a descoperit două probleme, una este că dispozitivele nu au fost adăugate (acesta este un avertisment pentru moment) și, în al doilea rând, avem nu setați permisiunea corespunzătoare pentru fișierul de configurare (/opt/librenms/config.php) care a fost adăugat manual, așa cum se arată în captura de ecran de mai jos.

Acum rulați următoarea comandă pentru a seta permisiunea corectă pentru fișierul de configurare.

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

34. Pentru a adăuga dispozitive, accesați: http://librenms.tecmint.lan/addhost. După ce adăugați dispozitive, puteți merge la pagina de pornire și puteți adăuga diverse tablouri de bord.

Asta este! Puteți găsi mai multe informații, inclusiv instalarea și configurarea în Documentația LibreNMS la https://docs.librenms.org/.

LibreNMS este un sistem complet de monitorizare a rețelei care acceptă o varietate de hardware de rețea. Sperăm că acesta a fost un ghid de instalare lucid, dacă aveți întrebări, contactați-ne prin formularul de feedback de mai jos.