„LibreNMS“ - visapusiškas „Linux“ tinklo stebėjimo įrankis


„LibreNMS“ yra atviro kodo, galinga ir funkcijomis turtinga, automatiškai atrandanti PHP tinklo stebėjimo sistema, naudojanti SNMP protokolą. Jis palaiko daugybę operacinių sistemų, įskaitant „Linux“, „FreeBSD“, taip pat tinklo įrenginius, įskaitant „Cisco“, „Juniper“, „Brocade“, „Foundry“, HP ir daugelį kitų.

  1. Jis automatiškai atranda visą tinklą naudodamas šiuos protokolus: CDP, FDP, LLDP, OSPF, BGP, SNMP ir ARP.
  2. Jis turi mobiliesiems pritaikytą žiniatinklio vartotojo sąsają su pritaikomais prietaisų skydeliais.
  3. Palaiko „Unix“ agentą.
  4. Palaiko horizontalų mastelį, kad būtų galima išplėsti jūsų tinkle.
  5. palaiko labai lanksčią ir pritaikomą įspėjimo sistemą; siunčia pranešimus el. paštu, „irc“, „slack“ ir kt.
  6. Palaiko API, skirtą tvarkyti, braižyti ir gauti duomenis iš jūsų sistemos.
  7. Siūlo srauto atsiskaitymo sistemą.
  8. Taip pat palaiko „Android“ ir „iOS“ programas, kurios siūlo pagrindines funkcijas.
  9. Palaiko integraciją su „NfSen“, „collectd“, „SmokePing“, RANCID ir „Oxidized“.
  10. Palaiko kelis autentifikavimo metodus, tokius kaip „MySQL“, HTTP, LDAP, „Radius“ ir „Active Directory“.
  11. Leidžiama automatiškai atnaujinti ir daug kitų funkcijų.

Internetinę demonstracinę versiją galite išbandyti prieš diegdami „LibreNMS“ „Linux“ sistemose.

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

  1. „Ubuntu 16.04“ su „LEMP Stack“
  2. „CentOS 7“ su „LEMP Stack“

Šioje pamokoje sužinosime, kaip įdiegti „LibreNMS“ tinklo stebėjimo įrankį į ką tik įdiegtą „Ubuntu“ arba „CentOS Linux“ (tos pačios instrukcijos taip pat veikia Debian ir RHEL pagrįstuose paskirstymuose).

PASTABA: Visos šios šio straipsnio instrukcijos turėtų būti vykdomos kaip root vartotojas, jei ne, naudokite komandą sudo, kad gautumėte root vartotojo teises.

1 žingsnis: įdiekite reikalingus paketus

1. Pirmiausia pradėkite įdiegdami visus reikiamus paketus naudodami numatytąjį paketų tvarkyklę, kaip parodyta.

$ 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. Įdiegus visus paketus, bus paleistos „nginx“, „php-fpm“, „mariadb“ ir „snmp“ paslaugos, kurios bus automatiškai paleistos įkrovos metu (tai paprastai būna „Ubuntu“ atveju), priešingu atveju galite paleisti toliau nurodytas komandas paleiskite ir įgalinkite juos.

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

2 žingsnis: įdiekite „LibreNMS“ stebėjimo įrankį

3. Tada sukurkite sistemos vartotoją, vadinamą librenms, naudodami komandą useradd; kai vėliava -M neleidžia kurti vartotojo namų katalogo, o -r leidžia sukurti sistemos abonementą. Tada pridėkite „librenms“ vartotoją prie grupės „www-data“ („Ubuntu“) arba „nginx“ („CentOS“) taip.

------------ 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. Tada įdiekite „LibreNMS“ naudodami kompozitoriaus komandą, kaip parodyta.

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

3 žingsnis: sukurkite „LibreNMS“ duomenų bazę

5. Prieš pradėdami naudoti „MariaDB“ serverį, turite apsaugoti savo diegimą, paleisti dvejetainiame pakete pateiktą saugos scenarijų. Jis paprašys nustatyti pagrindinį slaptažodį, pašalinti anoniminius vartotojus, nuotoliniu būdu išjungti root prisijungimą ir pašalinti bandomąją duomenų bazę.

Galite paleisti scenarijų pateikdami žemiau esančią komandą ir atsakydami į visus klausimus naudodami yes/y .

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

6. Tada prisijunkite prie „MariaDB“ duomenų bazės, kad sukurtumėte „LibreNMS“ duomenų bazę (nepamirškite naudoti patikimo/saugaus slaptažodžio gamybos aplinkoje).

$ 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. Vėliau kol kas išjunkite „MySQL“ griežtąjį režimą (suderinamumas su „MySQL“ griežtuoju režimu dar nėra pridėtas).

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

Skiltyje [mysqld] pridėkite.

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

Tada paleiskite duomenų bazės serverį iš naujo, kad atliktumėte pakeitimus.

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

4 žingsnis: sukonfigūruokite ir paleiskite PHP-FPM

8. Tada nustatykite savo date.timezone php.ini į dabartinę laiko juostą, pvz., „Afrika/Kampala“, kaip parodyta kitoje ekrano kopijoje.

------------ 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. Tada įjunkite „mcrypt PHP“ modulį „Ubuntu“ ir iš naujo paleiskite php-fpm, kaip parodyta.

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

10. „CentOS/RHEL“ turite atlikti šiuos pakeitimus php-fpm konfigūracijos faile.

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

Atlikite šiuos pakeitimus.

;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. Paleiskite „php-fpm“ paslaugą taip, kaip parodyta.

# systemctl restart php-fpm

5 veiksmas: konfigūruokite „Nginx“, skirtą „LibreNMS“

12. Šiame žingsnyje turite sukonfigūruoti „Nginx“ serverio bloką, kad galėtumėte naudotis žiniatinklio vartotojo sąsaja. Sukurkite failą .conf , kaip parodyta.

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

Pridėkite šią konfigūraciją, prireikus redaguokite server_name .

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. Tada išsaugokite ir išeikite iš failo. Taip pat pašalinkite numatytąją serverio bloko konfigūraciją ir iš naujo paleiskite „Nginx“ serverį.

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

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

PASTABA: „CentOS/RHEL“ turėsite išjungti numatytąją svetainės skiltį, jei tai yra vienintelė svetainė, kurią priglobiate. Ištrinkite serverio sekciją iš failo /etc/nginx/nginx.conf.

14. Be to, „CentOS/RHEL“ turite įdiegti „SELinux“ politikos įrankį ir konfigūruoti „LibreNMS“ reikalingus kontekstus naudodami šias komandas.

------------ 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. Leiskite fping sukurti failą http_fping.tt su tokiu turiniu.

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. Tada vykdykite šias komandas.

------------ 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. Jei naudojate užkardą naudodami „CentOS/RHEL“, įgalinkite HTTP/HTTPS prieigą per užkardą.

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

6 veiksmas: sukonfigūruokite SNMPD „LibreNMS“

18. Dabar naudokite „snmp“ konfigūracijos pavyzdį, kad sukurtumėte konfigūracijos failą ir atidarykite jį redaguoti taip.

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

Raskite eilutę RANDOMSTRINGGOESHERE ir pakeiskite ją į savo bendruomenės eilutę, kaip parodyta ekrano kopijoje.

19. Tada atsisiųskite „shell“ scenarijų į savo sistemą, kuris padės nustatyti, kuri OS, o jei tai yra „Linux“, jis aptiks jūsų naudojamą „Linux“ paskirstymą:

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

7 žingsnis: sukurkite „Cron“ ir konfigūruokite „Logrotate“

20. Dabar paleiskite toliau pateiktą komandą, norėdami nustatyti „LibreNMS“ „cron“ užduotį.

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

21. Toliau visi „LibreNMS“ žurnalai įrašomi aplanke/opt/librenms/logs. Jums gali tekti sukonfigūruoti šiuos žurnalus automatiškai pasukant, naudojant pateiktą logrotate konfigūracijos failą.

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

Tada nustatykite atitinkamas teises „LibreNMS“ diegimo šakniniame kataloge ir žurnalo failuose.

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

8 žingsnis: Prisijunkite prie „LibreNMS“ žiniatinklio diegimo programos

22. Tada naudokite šį URL, kad pasiektumėte žiniatinklio diegimo programą, ir vykdykite ekrane pateikiamas instrukcijas.

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

Kad šis adresas veiktų vietiniame kompiuteryje, prieš pradėdami veikti, turite nustatyti vietinį DNS naudodami „hosts“ failą (/etc/hosts ) vietinio domeno raiškos ar bandymo tikslais.

192.168.43.31 tecmint.lan
192.168.43.31 librenms.tecmint.lan

23. Pamatysite įdiegimo pasveikinimo puslapį, kaip parodyta kitoje ekrano kopijoje, norėdami tęsti, spustelėkite „Kitas etapas“.

24. Tada įveskite „LibreNMS“ duomenų bazės nustatymus (duomenų bazės prieglobą, prievadą, vartotojo vardą ir vartotojo slaptažodį) ir spustelėkite „Kitas etapas“, kad tęstumėte.

25. Dabar žiniatinklio diegimo programa pradės importuoti „MySQL“ duomenų bazę, tai užtruks šiek tiek laiko. Atminkite, kad procesą bandys pristabdyti tam tikruose taškuose. Jei norite tęsti importavimo procesą, spustelėkite „Bandyti dar kartą“.

26. Baigus importuoti duomenų bazę, turėtumėte pamatyti pranešimą „Duomenų bazė atnaujinta!“, Kaip parodyta toliau pateiktoje ekrano kopijoje. Tada spustelėkite Goto Add User, kad tęstumėte.

27. Tada pridėkite „LibreNMS“ vartotoją, nurodykite vartotojo vardą, slaptažodį ir el. Pašto adresą, tada spustelėkite Pridėti vartotoją, kad atliktumėte pakeitimus.

28. Dabar spustelėkite Sukurti savo sistemos LibreNMS konfigūraciją spustelėdami Generuoti konfigūraciją.

29. Kai konfigūracija bus sugeneruota, kaip parodyta ankstesnėje ekrano kopijoje, nukopijuokite ją ir išsaugokite savo diegimo šakniniame kataloge faile pavadinimu /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. Išsaugokite ir uždarykite failą. Tada grįžkite į žiniatinklio diegimo programą ir tęskite diegimo procesą spustelėdami Baigti diegti.

31. Dabar jūsų „LibreNMS“ diegimas baigtas, galite spustelėti „patvirtinti savo įdiegimą ir išspręsti visas problemas“, turėtų pasirodyti prisijungimo puslapis.

32. Tada įveskite savo vartotojo duomenis, kad pasiektumėte patvirtinimo puslapį.

33. Iš diegimo patvirtinimo proceso LibreNMS atrado dvi problemas, viena yra ta, kad įrenginiai nebuvo pridėti (kol kas tai yra įspėjimas), antra, mes nenustatėme tinkamo leidimo konfigūracijos faile (/ opt/librenms /config.php), kuris buvo pridėtas rankiniu būdu, kaip parodyta toliau pateiktame ekrano paveikslėlyje.

Dabar paleiskite šią komandą, kad nustatytumėte teisingą leidimą konfigūracijos faile.

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

34. Norėdami pridėti įrenginių, eikite į: http://librenms.tecmint.lan/addhost. Pridėję įrenginius, galite eiti į pagrindinį puslapį ir pridėti įvairių informacijos suvestinių.

Viskas! Daugiau informacijos, įskaitant diegimą ir sąranką, rasite „LibreNMS“ dokumentacijoje adresu https://docs.librenms.org/.

„LibreNMS“ yra visapusiška tinklo stebėjimo sistema, palaikanti įvairią tinklo aparatūrą. Tikimės, kad tai buvo aiškus diegimo vadovas. Jei turite klausimų, susisiekite su mumis naudodami toliau pateiktą atsiliepimų formą.