Install LibreNMS New Fork From Observium

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.

LibreNMS has many features:

  • Automatic discovery: Automatically discover your entire network using CDP, FDP, LLDP, OSPF, BGP, SNMP and ARP.
  • Customizable alerting: Highly flexible alerting system, notify via email, irc, slack and more.
  • Distributed Polling: Horizontal scaling to grow with your network.
  • Plugin system: LibreNMS has plugin system that enables you to extend your install for your needs.

This tutorial will cover the installation process of LibreNMS  on RHEL/CentOS/ based systems with the minimal configurations needed to be done.


In this article we assume that you have made a fresh install for Centos server and you are the root user. If you are not, prepend sudo to all shell commands or temporarily become a user with root privileges with sudo -s.

Database configuration

LibreNMS is based on LAMP Server (Mysql, apache and php). The first step that we will do it is to install mysql server and configure the database for LbreNMS.

yum install net-snmp mysql-server 
service snmpd start 
service mysqld start 
chkconfig --levels 235 mysqld on 
chkconfig --levels 235 snmpd on

Now  after installing the mysql server you need to secure using the mysql secure script.


Now you can set up the mysql user and database for LibreNMS.

You need to have the password of the MySQL root user.

Log into MySQL:

mysql -u root -p

After successful authenticated, you need to create the database for the WordPress Website.


The database Name is librenms. You will need this information later.

Now, you should create the database administrator.

CREATE USER [email protected] IDENTIFIED BY 'librenmspassword';

Next, you need to give this user  permissions to administer the database you created.

GRANT ALL PRIVILEGES ON librenms.* TO [email protected];

You need to flush the privilege information to disk to activate the new MySQL user:


If your database is on the same server as LibreNMS, you can just use localhost as the IP address. If you are deploying a separate database server you must change localhost above with the IP of the server running LibreNMS. And also you need to change you need to change the bind-address.

vim /etc/my.cnf

Add the following line:

bind-address = <ip>

Change <ip> to the IP address that your MySQL server should listen on. Restart MySQL:

service mysqld restart

LibreNMS Installation

Before we download the LibreNMS package you need to install some prerequisite software.

The packages listed below are an all-inclusive list of packages that were necessary on a clean install of CentOS 6.5. It also requires the EPEL repository.

if not using HTTPd (Apache): RHEL requires httpd to be installed regardless of of nginx‘s (or any other web-server’s) presence.

rpm -Uvh
yum install php php-cli php-gd php-mysql php-snmp php-pear php-curl httpd net-snmp graphviz graphviz-php mysql ImageMagick jwhois nmap mtr rrdtool MySQL-python net-snmp-utils vixie-cron php-mcrypt fping git
pear install Net_IPv4-1.3.4
pear install Net_IPv6-1.2.2b2

Next step is to add the librenms-user.

useradd librenms -d /opt/librenms -M -r
usermod -a -G librenms apache

Then make sure that you set httpd to start on system boot.

chkconfig --levels 235 httpd on

Next, add the following to /etc/httpd/conf.d/librenms.conf

<VirtualHost *:80>
  DocumentRoot /opt/librenms/html/
  CustomLog /opt/librenms/logs/access_log combined
  ErrorLog /opt/librenms/logs/error_log
  AllowEncodedSlashes On
  <Directory "/opt/librenms/html/">
    AllowOverride All
    Options FollowSymLinks MultiViews

If you are running Apache 2.2.18 or higher then change AllowEncodedSlashes to NoDecode and append Require all granted underneath Options FollowSymLinks MultiViews.

In this stage, you can clone the repository via HTTPS or SSH. In either case, you need to ensure the appropriate port (443 for HTTPS, 22 for SSH) is open in the outbound direction for your server.

cd /opt
git clone 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

cd /opt
git clone [email protected]:librenms/librenms.git librenms instead
cd /opt/librenms

At this stage you can either launch the web installer by going to http://IP/install.php, follow the on-screen instructions then skip to the ‘Web Interface’ section further down.

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.

Add the following line to the end of config.php:

$config['fping'] = "/usr/sbin/fping";

Be sure you have no characters (including whitespace like: newlines, spaces, tabs, etc) outside of the<?php?> blocks. Your graphs will break otherwise.

Now you need to initialize the database.

php build-base.php

Now it’s time to create th admin user with privilege should be 10. Substitute your desired username and password–and leave the angled brackets off.

php adduser.php <name> <pass> 10

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 apache:apache logs
chmod 775 rrd
chown librenms:librenms rrd

Start the web-server:

service httpd restart
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.

Discover localhost and poll it for the first time:

php discovery.php -h all && php poller.php -h all

Create cronjob

The polling method used by LibreNMS is, which was placed in the public domain by its author. By default, the LibreNMS cronjob runs poller- with 16 threads. The current LibreNMS recommendation is to use 4 th reads per core. The default if no thread count is 16 threads.

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, as in the below example:

/opt/librenms/ 12 >> /dev/null 2>&1

Create the cronjob

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

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 edit ing your config.php file. Remove the comment (the # mark) on the line:

#$config['update'] = 0;

so that it looks like this:

$config['update'] = 0;

That’s it! You now should be able to log in to




That’s all for now. Thanks for visiting Unixmen. Stay tuned with us.

  • hendra

    can you post about integration with Oxidized, Graylog, smokeping and another extentions ?
    thanks before

  • christine.mccroy

    I was paid 104000 bucks last 12 month period by doing an on-line job and also I was able to do it by w­orking in my own time f­o­r quite a few hours each day. I tried work opportunity I found out on the internet and I am thrilled that I was in a position to make such great money. It is seriously newbie-friendly and therefore I am so pleased that I found out regarding it. Read through what I do… http://nubr­.­co/5tw6JX