May 6, 2021

LibreNMS howto

LibreNMS is a fork of Observium, so at least it started life the same, but with a more open concept. You have to get it from GitHub right now. Here’s how to install it on Debian Jessie, though other distros will work with some modification

Debian Jessie LibreNMS install

First, install a database:

apt-get install mysql-server mysql-client
<enter initial password>
mysql -u root -p
CREATE DATABASE librenms;
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
exit

Now install the packages needed for LibreNMS:

apt-get install nginx-full php5-fpm php5-cli php5-mysql php5-gd php5-snmp php-pear php5-curl php5-mcrypt php5-json php-net-ipv4 php-net-ipv6 snmp snmpd graphviz fping imagemagick whois mtr-tiny nmap python-mysqldb rrdtool git

Now set up snmpd like:

vi /etc/snmp/snmpd.conf
#rocommunity public  localhost <--uncomment line
/etc/init.d/snmpd restart

Now change php.ini settings for your timezone:

vi /etc/php5/fpm/php.ini
date.timezone = America/Los_Angeles <--uncomment and add real timezone
vi /etc/php5/cli/php.ini
date.timezone = America/Los_Angeles <--uncomment and add real timezone
<pre>
Now add a user for libreNMS and then go install it from git
<pre lang="bash">
useradd librenms -d /opt/librenms -M -r
usermod -a -G librenms www-data
cd /opt
git clone https://github.com/librenms/librenms.git librenms
cd /opt/librenms
Cloning into 'librenms'...
remote: Counting objects: 95984, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 95984 (delta 0), reused 0 (delta 0), pack-reused 95980
Receiving objects: 100% (95984/95984), 76.97 MiB | 287.00 KiB/s, done.
Resolving deltas: 100% (65888/65888), done.
Checking connectivity... done.
cd /opt/librenms
mkdir rrd logs
chown -R librenms:librenms /opt/librenms
chmod 775 rrd

Now set up nginx:

cd /etc/nginx/sites-available
mv default default.orig
vi default
  server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /opt/librenms/html;
        index index.php;
        access_log  /opt/librenms/logs/access_log;
        error_log   /opt/librenms/logs/error_log;
        location / {
                try_files $uri $uri/ @librenms;
        }
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                include fastcgi_params;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
        }
        location ~ /\.ht {
                deny all;
        }
        location @librenms {
                rewrite api/v0(.*)$ /api_v0.php?$1 last;
                rewrite ^(.+)$ /index.php?$1 last;
        }
  }
nginx -t
  nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
  nginx: configuration file /etc/nginx/nginx.conf test is successful
service nginx restart

now restart nginx and look for errors:

rm /etc/nginx/sites-enabled/default
php5enmod mcrypt
service nginx restart
service php5-fpm restart

Now configure your database:

cd /opt/librenms
cp config.php.default config.php
vi config.php
  ### Database config
  $config['db_host'] = 'localhost';
  $config['db_user'] = 'USERNAME'; <-- change
  $config['db_pass'] = 'PASSWORD'; <-- change
  $config['db_name'] = 'librenms';
php build-base.php
  -- Updating database schema
  000 -> 001 ... done.
  001 -> 002 ... done.
  002 -> 003 ... done.
  003 -> 004 ... done.
  004 -> 005 ... done.
  005 -> 006 ... done (0 errors).
  006 -> 007 ... done (0 errors).
  ...
  144 -> 145 ... done (0 errors).
  145 -> 146 ... done (0 errors).
  -- Done
php adduser.php <name> <pass> 10 <email> <-- change to whatever
php validate.php
  ==========================================================
  LibreNMS Version: c1779f055f42623138ab5f9c6b577482b1f34e9c
  DB Schema: 146
  PHP: 5.6.26-0+deb8u1
  MySQL: 5.5.52-0+deb8u1
  RRDTool: 1.4.8
  SNMP: NET-SNMP 5.7.2.1
  ==========================================================
  [WARN]  Your install is out of date, last update: Thu, 20 Oct 2016 00:47:22 +0000
  [FAIL]  We have found some files that are owned by a different user than librenms, this will stop you updating automatically and / or rrd files being updated causing graphs to fail:
  If you do not run a bespoke install then you can fix this by running `chown -R librenms:librenms /opt/librenms`
  /opt/librenms/config.php
  /opt/librenms/logs/access_log
  /opt/librenms/logs/error_log
  [OK]    Database connection successful
  [FAIL]  Discovery has never run, check the cron job
  [FAIL]  The poller has never run, check the cron job
chown -R librenms:librenms /opt/librenms
php addhost.php localhost public v2c
  Added device localhost (1)
php discovery.php -h all
  LibreNMS Discovery
  Version info:
  Commit SHA: c1779f055f42623138ab5f9c6b577482b1f34e9c
  DB Schema: 146
  PHP: 5.6.26-0+deb8u1
  MySQL: 5.5.52-0+deb8u1
  RRDTool: 1.4.8 
  SNMP: NET-SNMP 5.7.2.1
  localhost 1 linux  (unix)
  #### Load disco module os ####
  Changed Icon! : linux
 
  >> Runtime for discovery module 'os': 0.460 seconds
  #### Unload disco module os ####
 
  #### Load disco module ports ####
  Adding: lo(1)(1)Adding: eth0(2)(2)
  ...
  Discovered in 3.330 seconds
  MySQL: Cell[1/0s] Row[43/0.02s] Rows[29/0.01s] Column[0/0s] Update[2/0.09s] Insert[31/1.36s] Delete[0/0s]
cp librenms.nonroot.cron /etc/cron.d/librenms

If you want to upgrade do:

cd /opt/librenms
su librenms
git pull
./scripts/composer_wrapper.php install --no-dev
php includes/sql-schema/update.php
./validate.php
./daily.php

The docs are here