Published on July 26th, 2015 📆 | 6916 Views ⚑
0LibreNMS — Network Monitoring System
iSpeech.org
LibreNMS is an autodiscovering PHP/MySQL/SNMP based network monitoring tool which includes support for a wide range of network hardware and operating systems including Cisco, Linux, FreeBSD, Juniper, Brocade, Foundry, HP and many more. LibreNMS is a community-based fork of Observium.
Install
[adsense size='1']
On the DB Server
This host is where the MySQL database runs. It could be the same machine as your network management server (this is the most common initial deployment scenario).
apt-get install mysql-server mysql-client mysql -uroot -p
Input the MySQL root password to enter the MySQL command-line interface.
Create the database:
CREATE DATABASE librenms; GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'<ip>' IDENTIFIED BY '<password>' ; FLUSH PRIVILEGES; exit
Replace <ip> above with the IP or DNS name of the server running LibreNMS. If your database is on the same server as LibreNMS, you can use localhost.
If you are deploying a separate database server, you need to change the bind-address. If your MySQL database resides on the same server as LibreNMS, you should skip this step.
vim /etc/mysql/my.cnf
Find the line: bind-address = 127.0.0.1
Change 127.0.0.1 to the IP address that your MySQL server should listen on. Restart MySQL:
service mysql restart
On the NMS
This host is where the web server and SNMP poller run. It could be the same machine as your database server.
Install the required software:
apt-get install libapache2-mod-php5 php5-cli php5-mysql php5-gd php5-snmp php-pear php5-curl snmp graphviz php5-mcrypt php5-json apache2 fping imagemagick whois mtr-tiny nmap python-mysqldb snmpd mysql-client php-net-ipv4 php-net-ipv6 rrdtool git
The packages listed above are an all-inclusive list of packages that were necessary on a clean install of Ubuntu 12.04/14.04.
You need to configure snmpd appropriately if you have not already done so. An absolute minimal config for snmpd is:
rocommunity public 127.0.0.1
Adding the above line to /etc/snmp/snmpd.conf and running service snmpd restart will activate this config.
In /etc/php5/apache2/php.ini and /etc/php5/cli/php.ini, ensure date.timezone is set to your preferred time zone. See https://php.net/manual/en/timezones.php for a list of supported timezones. Valid examples are: âAmerica/New Yorkâ, âAustralia/Brisbaneâ, âEtc/UTCâ.
Adding the librenms-user
useradd librenms -d /opt/librenms -M -r usermod -a -G librenms www-data
Cloning
LibreNMS is installed using git. The initial install from github.com is called a git clone; subsequent updates are done through git pull.
You can clone the repository via HTTPS or SSH. In either case, you need to ensure that the appropriate port (443 for HTTPS, 22 for SSH) is open in the outbound direction for your server.
cd /opt git clone https://github.com/librenms/librenms.git librenms cd /opt/librenms
The recommended method of cloning a git repository is HTTPS. If you would like to clone via SSH instead, use the command git clone git@github.com:librenms/librenms.git librenms instead.
Sometimes the initial clone can take quite a while (nearly 3 minutes on a 10 Mbps fibre connection in Australia is a recent example). If itâs a big problem to you, you can save about 50% of the bandwidth by not pulling down the full git history. This comes with some limitations (namely that you canât use it as the basis for further git repos), but if youâre not planning to develop for LibreNMS itâs an acceptable option. To perform the initial clone without full history, run the following instead:
cd /opt git clone --depth 1 https://github.com/librenms/librenms.git librenms cd /opt/librenms
[adsense size='1']
Web Interface
To prepare the web interface (and adding devices shortly), youâll need to create and chown a directory as well as create an Apache vhost.
First, create and chown the rrd directory and create the logs directory:
mkdir rrd logs chown www-data:www-data logs chmod 775 rrd chown librenms:librenms rrd
NOTE: If youâre not running Ubuntu or Debian, you will need to change www-data to the user and group which run the Apache web server. If youâre planing on running rrdcached, make sure that the path is also chmodâed to 775 and chownâed to librenms:librenms.
Next, add the following to /etc/apache2/sites-available/librenms.conf:
<VirtualHost *:80> DocumentRoot /opt/librenms/html/ ServerName librenms.example.com CustomLog /opt/librenms/logs/access_log combined ErrorLog /opt/librenms/logs/error_log AllowEncodedSlashes On <Directory "/opt/librenms/html/"> AllowOverride All Options FollowSymLinks MultiViews </Directory> </VirtualHost>
If you are running Apache 2.2.18 or higher then change AllowEncodedSlashes to NoDecode
If you have Apache 2.3 or newer then please add the following line before AllowOverride All:
Require all granted
On at least Ubuntu 14.04 (and possibly other distributions and versions as well), mcrypt is not enabled on install. Run the following to enable it:
php5enmod mcrypt
Change librenms.example.com to the appropriate hostname for your domain, then enable the vhost and restart Apache:
a2ensite librenms.conf a2enmod rewrite service apache2 restart
If this is the only site you are hosting on this server (it should be :)) then you will need to disable the default site setup in Ubuntu:
a2dissite 000-default
(To get to your LibreNMS install externally, youâll also need add it to your DNS or hosts file.)
Manual vs. web installer
At this stage you can either launch the web installer by going to https://librenms.example.com/install.php, follow the onscreen instructions then skip to the âAdd localhostâ section. Alternatively if you want to continue the setup manually then just keep following these instructions.
cp config.php.default config.php vim config.php
Change the values to the right of the equal sign for lines beginning with $config[db_] to match your database information as setup above.
Change the value of $config[âsnmpâ][âcommunityâ] from public to whatever your read-only SNMP community is. If you have multiple communities, set it to the most common.
Be sure you have no characters (including whitespace like: newlines, spaces, tabs, etc) outside of the <?php?> blocks. Your graphs will break otherwise.
Initialise the database
Initiate the follow database with the following command:
php build-base.php
Create admin user
Create the admin user â priv should be 10
php adduser.php <name> <pass> 10
Substitute your desired username and passwordâand leave the angled brackets off.
[adsense size='1']
Add localhost
php addhost.php localhost public v2c
This assumes you havenât made community changesâif you have, replace public with your community. It also assumes SNMP v2c. If youâre using v3, there are additional steps (NOTE: instructions for SNMPv3 to come).
Discover localhost and poll it for the first time:
php discovery.php -h all && php poller.php -h all
Create cronjob
LibreNMS uses Job Snijdersâ poller-wrapper.py. By default, the cron job runs poller-wrapper.py with 16 threads. The current recommendation is to use 4 threads per core as a rule of thumb. If the thread count needs to be changed, you can do so by editing the cron file (/etc/cron.d/librenms). Just add a number after poller-wrapper.py, as in the example below:
/opt/librenms/poller-wrapper.py 12 >> /dev/null 2>&1
Create the cronjob
cp librenms.nonroot.cron /etc/cron.d/librenms
Daily Updates
LibreNMS performs daily updates by default. At 00:15 system time every day, a git pull âno-edit âquiet is performed. You can override this default by editing your config.php file. Remove the comment (the # mark) on the line:
#$config['update'] = 0;
so that it looks like this:
$config['update'] = 0;
[adsense size='1']
Install complete
Thatâs it! You now should be able to log in to https://librenms.example.com/. Please note that we have not covered HTTPS setup in this example, so your LibreNMS install is not secure by default. Please do not expose it to the public Internet unless you have configured HTTPS and taken appropriate web server hardening steps.
Gloss