LibreNMS on the Raspberry Pi 2 or 3

LibreNMS is a fork of Observium – per the LibreNMS Github:

“We intend LibreNMS to be a viable project and community that:

  • encourages contribution,
  • focuses on the needs of its users, and
  • offers a welcoming, friendly environment for everyone.”

This project is going to utilize a Rapberry 2, Raspian Jesse Lite, and then proceed with the required packages to set up LibreNMS.

To start, you will need an SD Card – preferrably at a minimum a 32GB Class 10 Micro-SD. Format the Micro-SD with an appropriate tool -SDFormatter works great, and can be downloaded at:

https://www.sdcard.org/downloads/formatter_4/

Format the SD card, and download the Raspian Jesse Lite image to your PC. Once you have the image file downloaded, you will need to write it to the SD card. Within OS X, the process will be within the terminal:

diskutil list
diskutil unmountDisk /dev/disk2
sudo dd if=~/Downloads/2016-05-27-raspberry-jessie-lite.img of=/dev/rdisk2 bs=1m
diskutil eject /dev/disk2

In the above example, we determined which disk we needed to write using the “diskutil list” command, then proceeded to unmount the disk, write the image to the disk, then eject the disk.

At this point, you may remove the SD card, insert it in the Raspberry Pi, and boot.

The default login credentials are pi and raspberry.

After logging in, you will want to run the following command:

sudo raspi-config

Proceed to expand the file system, set up your language (use space to de-select and select), set up your timezone, and default keyboard. You will also want to change your default password. Within the advanced options, you can change the hostname and enable SSH.

Once your configurations have been changed, reboot your Pi.

Assign a static IP if desired, applying your network settings. In the example below, the pi is assigned a static ip in the 172.16.13.0/24 subnet, with a gateway and DNS name server of 172.16.13.250.

sudo nano /etc/network/interfaces

 

librenms_static_ip

 

 

 

 

 

 

Update the file, and save  (control+o to write, control+x to exit).

After saving your settings, reboot the pi, then verify the IP address:

sudo reboot
ifconfig

Now we can install LibreNMS. First we need to update our Pi’s available packages:

sudo apt-get update

Install the database:

sudo apt-get install mariadb-server mariadb-client

It will prompt for a root password for the database, please enter twice and record.

Restart the SQL service:

sudo service mysql restart

Then create the database:

mysql -uroot -p

Enter your database root password, then proceed with the following SQL commands:

CREATE DATABASE librenms;
 GRANT ALL PRIVILEGES ON librenms.*
  TO 'librenms'@'localhost'
  IDENTIFIED BY '<password>'
 ;
 FLUSH PRIVILEGES;
 exit

Now edit the following file:

sudo nano /etc/mysql/my.cnf

Add the follow lines to the mariadb.cnf file under the [mysqld] section:

innodb_file_per_table=1 

Save the file, and restart the SQL service:

service mysql restart

Next install the following packages:

sudo 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 php-net-ipv4 php-net-ipv6 rrdtool git

No configure a basic SNMP config file – we will move the template and create a new file:

sudo mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.old
sudo nano /etc/snmp/snmpd.conf

Add your new SNMP parameters to the config file (replace with the appropriate info):

rocommunity infosoda
syslocation My Laboratory
syscontact Call the HelpDesk

Save your file, then restart the SNMPD service:

sudo service snmpd restart

Add the librenms user:

sudo useradd librenms -d /opt/librenms -M -r
sudo usermod -a -G librenms www-data

Now change directories and download LibreNMS:

cd /opt
sudo git clone https://github.com/librenms/librenms.git librenms
cd /opt/librenms

Prepare the web interface:

sudo mkdir rrd logs
sudo chown -R librenms:librenms /opt/librenms
sudo chmod 775 rrd

Now we create our conf file for Apache:

sudo nano /etc/apache2/sites-available/librenms.conf

Now add the following to the librenms.conf file, Changing librenms.example.com to the appropriate hostname for your domain:

<VirtualHost *:80>
 DocumentRoot /opt/librenms/html/
 ServerName librenms.example.com
 CustomLog /opt/librenms/logs/access_log combined
 ErrorLog /opt/librenms/logs/error_log
 AllowEncodedSlashes NoDecode
 <Directory "/opt/librenms/html/">
 Require all granted
 AllowOverride All
 Options FollowSymLinks MultiViews
 </Directory>
 </VirtualHost>

Enable mcrypt:

sudo php5enmod mcrypt

Load the website:

sudo a2ensite librenms.conf
sudo a2enmod rewrite
sudo service apache2 restart

Disable the default site setup:

sudo a2dissite 000-default
sudo service apache2 reload

Configure your polling defaults (copy the template to your default config, then modify your subnet and default SNMP community name):

sudo cp config.php.default config.php
sudo nano 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.

Initialize the database:

sudo php build-base.php

Add user in the following format:

sudo php adduser.php <name> <pass> 10 <email>

Validate the install, and correct any errors:

sudo php validate.php 

Add the localhost:

sudo php addhost.php localhost public v2c

Discover the newly added localhost:

php discovery.php -h all

Create the cronjob:

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

At this point, your setup is complete and you should be able to log into the web interface utilizing the credentials created with the adduser.php command. Open your browser and browse to http://yourip

librenms_web_page

 

Leave a Reply

Your email address will not be published. Required fields are marked *