Install Observium on Ubuntu 20.04|18.04 with Nginx

Posted on 33 views

In this article, we will look at how to Install Observium on Ubuntu 20.04|18.04 Linux. Observium is an auto-discovering network monitoring tool with low-maintenance and support for Cisco, Juniper, Linux, Windows, HP, Dell, FreeBSD, Brocade, NetApp, Netscaler and many more.

In our previous article, I wrote about how to How to Install and Configure LibreNMS on Ubuntu. For the record, LibreNMS is a fork of Observium. Observium focuses on providing a beautiful and powerful yet simple and intuitive interface to the health and status of your network.

Install Observium on Ubuntu 20.04|18.04 LTS with Nginx

Observium is powered by PHP, MariaDB and Nginx/Apache web server. Let’s kick off by ensuring all these dependencies are installed on our Ubuntu 20.04|18.04 system.

Step 1: Install PHP and required modules

Ubuntu 18.04+ has PHP 7.x in its repositories. Install it by running the commands below on your terminal:

sudo apt update
sudo apt -y install wget php php-pear,cgi,common,curl,mbstring,gd,mysql,bcmath,imap,json,xml,snmp,fpm,zip

To confirm the php version installed, use the command php -v:

# Ubuntu 20.04
$ php -v
PHP 7.4.3 (cli) (built: Jun 13 2022 13:43:30) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

# Ubuntu 18.04
$  php -v
PHP 7.2.8 (cli) (built: Jul 17 2018 09:50:46) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

Configure and Start PHP-FPM

Ensure date.timezone is set in php.ini to your preferred time zone:

Edit both files:

sudo vim /etc/php/*/fpm/php.ini
sudo vim /etc/php/*/cli/php.ini

Change date.timezone under [Date] section:

; Defines the default timezone used by the date functions
date.timezone = Africa/Nairobi

Restart php fpm:

sudo systemctl restart php*-fpm.service

Step 2: Install Nginx Web Server

For this setup, we will use Nginx as a web server for Observium, install it by running:

sudo apt remove apache2 -y
sudo apt -y install nginx

Ensure it is enabled to start on boot:

sudo systemctl enable nginx

Step 3: Install and configure MariaDB

Install MariaDB Server:

sudo apt install mariadb-server

Once you’re done with the installation, create database and user for Observium.

Observium is not fully compatible with MySQL strict mode, for now, please disable this after mysql is installed.

sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

Within the [mysqld] section please add:


Then restart mysql

sudo systemctl restart mariadb

Once database server has been installed and configured, you need to create a database for Observium.

$ sudo mysql -u root
create database observium;
grant all privileges on observium.* to observium@localhost IDENTIFIED by "StrongPassword";
flush privileges;

Step 4: Download and install Observium

Install wget command line downloader:

sudo apt install wget

Add observium system user:

sudo useradd -r -M -d /opt/observium observium

Now add this user to web user group www-data

sudo usermod -a -G observium www-data

When done. proceed to install packages required by Observium

sudo apt update
sudo apt install rrdtool whois fping imagemagick graphviz mtr-tiny nmap python3-mysqldb snmp snmpd python3-memcache mtr-tiny acl

Download the latest Observium Community edition and extract it.

tar xvf observium-community-latest.tar.gz

Move the resulting folder to the /opt directory:

sudo mv observium /opt

Change to the observium directory and create a config file.

sudo cp /opt/observium/config.php.default /opt/observium/config.php

Edit the file to set database connection:

sudo vim /opt/observium/config.php

Set like below:

// Database config ---  This MUST be configured
$config['db_extension'] = 'mysqli';
$config['db_host']      = 'localhost';
$config['db_user']      = 'observium';
$config['db_pass']      = 'StrongPassword';
$config['db_name']      = 'observium';

Create rrd and logs directory.

sudo mkdir /opt/observium/rrd,logs

Change permission of the directory:

sudo chown -R observium:observium /opt/observium/
sudo chmod -R 775 /opt/observium/

Configure snmpd

Copy snmpd sample file:

sudo cp /opt/observium/snmpd.conf.example /etc/snmp/snmpd.conf

Configure String below in snmpd.conf file.

$ sudo vim /etc/snmp/snmpd.conf
com2sec readonly  default         0bs3rv1um

Restart snmpd

sudo systemctl restart snmpd

Verify service status is running:

$ systemctl status snmpd
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
     Loaded: loaded (/lib/systemd/system/snmpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-04-28 18:38:01 UTC; 5s ago
    Process: 39459 ExecStartPre=/bin/mkdir -p /var/run/agentx (code=exited, status=0/SUCCESS)
   Main PID: 39460 (snmpd)
      Tasks: 1 (limit: 4683)
     Memory: 5.5M
     CGroup: /system.slice/snmpd.service
             └─39460 /usr/sbin/snmpd -LOw -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f -p /run/

Apr 28 18:38:01 ubuntu systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon....
Apr 28 18:38:01 ubuntu systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..

Step 5: Configure Nginx

Let’s create the VirtualHost definition for Nginx to load Observium web interface.

Create new file

sudo vim /etc/nginx/conf.d/observium.conf

Paste below contents and modify to fit your use.

 listen      80;
 root        /opt/observium/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/php-fpm.sock;
 location ~ /\.ht 
  deny all;

Check syntax:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

if all is okay, restart nginx:

sudo systemctl restart nginx

Step 6: Configure Observium on Web UI

Import MySQL scheme :

cd /opt/observium
sudo ./discovery.php -u

Sample output:

$ sudo ./discovery.php -u

  ___   _                              _
 / _ \ | |__   ___   ___  _ __ __   __(_) _   _  _ __ ___
| | | || '_ \ / __| / _ \| '__|\ \ / /| || | | || '_ ` _ \
| |_| || |_) |\__ \|  __/| |    \ V / | || |_| || | | | | |
 \___/ |_.__/ |___/ \___||_|     \_/  |_| \__,_||_| |_| |_|
                     Observium Community Edition 20.9.10731

Install initial database schema ... done.
-- Updating database/file schema
416 -> 417 # (db) .. Done (0s).
417 -> 418 # (db) . Done (0s).
418 -> 419 # (db) .... Done (0s).
419 -> 420 # (db) .. Done (0s).
420 -> 421 # (db) ... Done (0s).
421 -> 422 # (db) .. Done (0s).
422 -> 423 # (db) ...... Done (0s).
423 -> 424 # (php)  Done (0s).
424 -> 425 # (db) . Done (0s).
425 -> 426 # (db) ............... Done (0s).
426 -> 427 # (db) ... Done (0s).
427 -> 428 # (db) ... Done (1s).
428 -> 429 # (db) ... Done (0s).
429 -> 430 # (db) (WARNING! Required MySQL version 5.6+ or MariaDB 10.0+).... Done (0s).
430 -> 431 # (db) ..... Done (0s).
431 -> 432 # (php)  Done (0s).
432 -> 433 # (db) ......... Done (0s).
433 -> 434 # (db) ... Done (0s).
434 -> 435 # (db) . Done (0s).
-- Done.

Add admin user:

Add a user for accessing the Observium portal. You can add more than one user.

Command syntax:

adduser.php    [email]

User access Levels:

  0 - Disabled (This user disabled)
  1 - Normal User (This user has read access to individual entities)
  5 - Global Read (This user has global read access)
  7 - Global Secure Read (This user has global read access with secured info)
  8 - Global Secure Read / Limited Write (This user has secure global read access with scheduled maintenence read/write.)
  10 - Administrator (This user has full administrative access)


$ cd /opt/observium
$ sudo ./adduser.php admin StrOnPassw0rd 10
Observium CE 20.9.10731
Add User
User admin added successfully.

$ sudo ./adduser.php jkmutai StrOnPassw0rd 10
Observium CE 20.9.10731
Add User
User jmutai added successfully.

10 is the highest level of access

Access Observium Web Interface

Now open your web browser and start the installer:

Use the username and password of the admin user to login.



Gravatar Image
A systems engineer with excellent skills in systems administration, cloud computing, systems deployment, virtualization, containers, and a certified ethical hacker.