LibreNMS - Usa ka Hingpit nga Gipili nga Himan sa Pag-monitor sa Network alang sa Linux


Ang LibreNMS usa ka bukas nga tinubdan, gamhanan ug puno sa feature nga auto-discovering PHP based network monitoring system nga naggamit sa SNMP protocol. Gisuportahan niini ang usa ka halapad nga mga operating system lakip ang Linux, FreeBSD, ingon man mga aparato sa network lakip ang Cisco, Juniper, Brocade, Foundry, HP ug daghan pa.

  1. Awtomatikong nadiskobrehan niini ang tibuok network gamit kining mga protocol: CDP, FDP, LLDP, OSPF, BGP, SNMP ug ARP.
  2. Kini adunay usa ka mobile friendly nga Web UI, uban sa customizable dashboards.
  3. Nagsuporta sa usa ka ahente sa Unix.
  4. Nagsuporta sa horizontal scaling aron mapadako sa imong network.
  5. Nagsuporta sa usa ka flexible ug napasadya nga sistema sa pag-alerto; nagpadala ug mga pahibalo pinaagi sa email, irc, slack ug uban pa.
  6. Nagsuporta ug API para sa pagdumala, pag-graph ug pagkuha sa datos gikan sa imong sistema.
  7. Nagtanyag ug sistema sa pagsingil sa trapiko.
  8. Nagsuporta usab sa Android ug iOS nga mga app nga nagtanyag sa kinauyokan nga mga gamit.
  9. Nagsuporta sa integrasyon sa NfSen, nakolekta, SmokePing, RANCID ug Oxidized.
  10. Nagsuporta sa daghang pamaagi sa pag-authenticate sama sa MySQL, HTTP, LDAP, Radius ug Active Directory.
  11. Gitugotan ang awtomatikong pag-update ug daghang uban pang mga bahin.

Ang usa ka online nga demo anaa aron imong sulayan sa dili pa i-install ang LibreNMS sa mga sistema sa Linux.

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

  1. Ubuntu 16.04 uban sa LEMP Stack
  2. CentOS 7 uban sa LEMP Stack

Sa kini nga panudlo mahibal-an naton kung giunsa ang pag-install sa LibreNMS Network Monitoring Tool sa usa ka bag-ong na-install nga Ubuntu o CentOS Linux (pareho nga mga panudlo magamit usab sa mga distribusyon nga nakabase sa Debian ug RHEL).

PAHINUMDOM: Kining tanan nga mga instruksyon niini nga artikulo kinahanglang ipadagan isip root user, kung dili, gamita ang sudo command aron makakuha og root user privileges.

Lakang 1: I-install ang Gikinahanglan nga mga Pakete

1. Una magsugod pinaagi sa pag-instalar sa tanang gikinahanglan nga mga pakete gamit ang default package manager sama sa gipakita.

$ 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. Kung ma-install na ang tanan nga mga pakete, ang mga serbisyo sa nginx, php-fpm, mariadb ug snmp magsugod ug mahimo nga awtomatikong magsugod sa oras sa pag-boot (kini kasagaran ang kaso sa Ubuntu), kung dili, mahimo nimong ipadagan ang mga mando sa ubos aron pagsugod ug pagpagana kanila.

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

Lakang 2: I-install ang LibreNMS Monitoring Tool

3. Sunod, paghimo ug system user nga gitawag og librenms, gamit ang useradd command; diin ang -M nga bandila nagpugong sa paghimo sa direktoryo sa balay sa user, ug ang -r makapahimo sa paghimo sa usa ka sistema nga account. Dayon idugang ang librenms user sa grupo nga www-data (sa Ubuntu) o nginx (sa CentOS) sama sa mosunod.

------------ 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. Dayon i-install ang LibreNMS pinaagi sa composer command sama sa gipakita.

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

Lakang 3: Paghimo LibreNMS Database

5. Sa dili ka pa magsugod sa paggamit sa MariaDB server, kinahanglan nimo nga i-secure ang imong pag-instalar, pagdagan ang security script nga gihatag sa binary package. Pangutan-on ka nga magbutang usa ka password sa ugat, tangtangon ang mga wala mailhi nga tiggamit, pag-disable ang pag-login sa gamut sa layo ug tangtangon ang database sa pagsulay.

Mahimo nimong ilunsad ang script pinaagi sa pag-isyu sa ubos nga sugo ug tubaga ang tanang pangutana gamit ang yes/y.

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

6. Unya login sa MariaDB database sa paghimo sa usa ka database alang sa LibreNMS (hinumdomi sa paggamit sa usa ka lig-on/luwas nga password sa usa ka produksyon nga palibot).

$ 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. Pagkahuman, disable ang MySQL strict mode sa pagkakaron (compatibility sa MySQL strict mode kay idugang pa).

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

Sulod sa [mysqld] nga seksyon palihog idugang.

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

Unya i-restart ang database server aron ma-epekto ang mga pagbag-o.

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

Lakang 4: I-configure ug Sugdi ang PHP-FPM

8. Sunod, ibutang ang imong date.timezone sa php.ini sa imong time zone karon, pananglitan \Africa/Kampala, ingon sa gipakita sa mosunod nga screenshot.

------------ 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. Sunod mahimo ang mcrypt PHP module sa Ubuntu ug i-restart ang php-fpm sama sa gipakita.

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

10. Sa CentOS/RHEL kinahanglan nimong himoon ang mosunod nga mga kausaban sa php-fpm configuration file.

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

Paghimo sa mosunod nga mga pagbag-o.

;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. I-restart ang php-fpm nga serbisyo sama sa gipakita.

# systemctl restart php-fpm

Lakang 5: I-configure ang Nginx para sa LibreNMS

12. Niini nga lakang, kinahanglan nimo nga i-configure ang Nginx server block para sa librenms aron ma-access ang web UI. Paghimo ug .conf file para niini sama sa gipakita.

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

Idugang ang mosunod nga config, usba server_name kon gikinahanglan.

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. Unya i-save ug exit ang file. Kuhaa usab ang default server block configuration ug i-restart ang Nginx server.

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

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

PAHINUMDOM: Sa CentOS/RHEL, kinahanglan nimo nga i-disable ang default nga seksyon sa site, kung kini ra ang site nga imong gi-host. Pagtangtang sa seksyon sa server gikan sa /etc/nginx/nginx.conf file.

14. Usab sa CentOS/RHEL, kinahanglan nimo nga i-install ang tool sa polisiya alang sa SELinux ug I-configure ang mga konteksto nga gikinahanglan sa LibreNMS gamit ang mosunod nga mga sugo.

------------ 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. Tugoti ang fping pinaagi sa paghimo sa file http_fping.tt uban sa mosunod nga mga sulod.

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. Dayon padagana kini nga mga sugo.

------------ 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. Kung naggamit ka og Firewall sa CentOS/RHEL, i-enable ang HTTP/HTTPS access pinaagi sa 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

Lakang 6: I-configure ang SNMPD para sa LibreNMS

18. Karon gamita ang sampol nga snmp configuration sa paghimo sa imong configuration file ug ablihi kini para sa pag-edit, sama sa mosunod.

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

Pangitaa ang string RANDOMSTRINGGOESHERE ug usba kini sa imong kaugalingong community string sama sa gipakita sa screenshot.

19. Sunod, i-download ang shell script sa imong sistema, nga makatabang sa pag-ila kung unsa nga OS ug kung kini mao ang Linux nan kini makamatikod kung unsang Linux distribution, imong gigamit:

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

Lakang 7: Paghimo Cron ug I-configure ang Logrotate

20. Karon padagana ang sugo sa ubos aron ma-setup ang cron job para sa LibreNMS.

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

21. Sunod, ang tanan nga LibreNMS logs girekord sa /opt/librenms/logs, mahimo nimo kinahanglan nga i-configure kini nga mga log aron mahimong auto-rotate, gamit ang logrotate config file nga gihatag, sama niini.

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

Dayon ibutang ang angay nga mga permiso sa LibreNMS installation root directory ug log files.

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

Lakang 8: Pag-access sa LibreNMS Web Installer

22. Sunod, gamita ang mosunod nga URL aron ma-access ang web installer ug sunda ang mga instruksyon sa screen.

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

Aron kini nga adres magamit sa usa ka lokal nga makina, kinahanglan nimo nga i-setup ang usa ka lokal nga DNS gamit ang mga host file (/etc/hosts), alang sa resolusyon sa lokal nga domain o mga katuyoan sa pagsulay sa dili pa mabuhi.

192.168.43.31 tecmint.lan
192.168.43.31 librenms.tecmint.lan

23. Imong makita ang instalasyon nga welcome page sama sa gipakita sa mosunod nga screenshot, i-klik ang Next Stage aron magpadayon.

24. Dayon isulod ang mga setting (database host, port, username ug user password) para sa LibreNMS database ug i-klik ang Next Stage aron magpadayon.

25. Ang web installer magsugod na sa pag-import sa MySQL database, kini magdugay. Timan-i nga ang proseso mosulay sa paghunong sa pipila ka mga punto, yano nga pag-klik sa Retry aron magpadayon sa proseso sa pag-import.

26. Kung kompleto na ang importasyon sa database, kinahanglan nimo nga makita ang mensahe nga \Database is up to date!, ingon sa gipakita sa screenshot sa ubos. Unya i-klik ang Goto Add User aron magpadayon.

27. Sunod, idugang ang usa ka LibreNMS nga tiggamit, ipiho ang username, password ug email, dayon i-klik ang Add User aron ma-epekto ang mga pagbag-o.

28. Karon i-klik ang paghimo sa LibreNMS configuration para sa imong sistema, pinaagi sa pag-klik sa Generate Config.

29. Sa higayon nga mamugna ang config, sama sa gipakita sa miaging screenhot, kopyaha kini ug i-save kini sa root directory sa imong instalasyon, sa file nga gitawag og /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-save ug isira ang file. Dayon balik sa web installer aron magpadayon sa proseso sa pag-instalar, pinaagi sa pag-klik sa Finish Install.

31. Karon kompleto na ang imong pag-install sa LibreNMS, mahimo nimong i-klik ang \validate ang imong pag-install ug ayohon ang bisan unsang mga isyu, kinahanglan nga makita ang panid sa pag-login.

32. Sunod, isulod ang imong mga kredensyal sa user aron ma-access ang validation page.

33. Gikan sa proseso sa pag-validate sa pag-install, ang LibreNMS nakadiskubre sa duha ka mga isyu, ang usa mao nga ang mga aparato wala pa gidugang (kini usa ka pasidaan alang sa karon), ug ikaduha, wala kami magbutang sa angay nga pagtugot sa config file (/opt/librenms /config.php) nga mano-mano nga gidugang, sama sa gipakita sa screen shot sa ubos.

Karon pagdagan ang mosunud nga mando aron itakda ang husto nga pagtugot sa config file.

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

34. Aron makadugang og mga himan, adto sa: http://librenms.tecmint.lan/addhost. Pagkahuman sa pagdugang sa mga aparato, mahimo kang moadto sa home page ug makadugang sa lainlaing mga dashboard.

Mao na! Makita nimo ang dugang nga impormasyon, lakip ang pag-install ug pag-setup sa LibreNMS Documentation sa https://docs.librenms.org/.

Ang LibreNMS usa ka hingpit nga gipakita nga sistema sa pag-monitor sa network nga nagsuporta sa lainlaing hardware sa network. Kami nanghinaut nga kini usa ka klaro nga giya sa pag-install, kung adunay ka mga pangutana, paabuta kami pinaagi sa porma sa feedback sa ubos.