(Last Updated On: August 7, 2018)

In this article, we will look at how to Install Observium on Ubuntu 18.04 LTS (Bionic Beaver) 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 18.04 LTS with Nginx. 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 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 18.04 system.

Step 1: Install PHP and required modules

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

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

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

# 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/7.2/fpm/php.ini
sudo vim /etc/php/7.2/cli/php.ini

Change date.timezone under [Date] section:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Africa/Nairobi

Restart php fpm:

sudo systemctl restart php7.2-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-get install nginx

Ensure it is enabled to start on boot:

sudo systemctl enable nginx

Step 3: Install and configure MariaDB

Follow our guide to Install MariaDB 10.x on Ubuntu 18.04

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.cnf

Within the [mysqld] section please add:

innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0

Then restart mysql

sudo systemctl restart mysql

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

create database observium;
grant all privileges on observium.* to observium@localhost IDENTIFIED by "StrongPassword";
flush privileges;
quit

Step 4: Download and Install Observium

Install wget:

sudo apt-get 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-get update
sudo apt install rrdtool whois fping imagemagick graphviz \
mtr-tiny nmap python-mysqldb snmp snmpd python-memcache mtr-tiny acl

Download the latest Observium Community edition and extract it.

cd /opt
wget http://www.observium.org/observium-community-latest.tar.gz
tar xvf observium-community-latest.tar.gz
rm observium-community-latest.tar.gz

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

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

Restart snmpd

sudo systemctl restart snmpd

Step 5: Configure Nginx

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

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

server {
 listen      80;
 server_name observium.example.com;
 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/php7.2-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
./discovery.php -u

Sample output:

# php ./discovery.php -u

  ___   _                              _
 / _ \ | |__   ___   ___  _ __ __   __(_) _   _  _ __ ___
| | | || '_ \ / __| / _ \| '__|\ \ / /| || | | || '_ ` _ \
| |_| || |_) |\__ \|  __/| |    \ V / | || |_| || | | | | |
 \___/ |_.__/ |___/ \___||_|     \_/  |_| \__,_||_| |_| |_|
                         Observium Community Edition 17.9.0
                                   http://www.observium.org

Install initial database schema ... done.
-- Updating database/file schema
310 -> 311 # (db) . Done (0s).
311 -> 312 # (db) .... Done (0s).
312 -> 313 # (db)  Done (0s).
313 -> 314 # (db)  Done (0s).
314 -> 315 # (php) . Done (1s).
315 -> 316 # (db) . Done (0s).
316 -> 317 # (db) .. Done (0s).
317 -> 318 # (db) . Done (0s).
318 -> 319 # (db) ....... Done (0s).
319 -> 320 # (db) . Done (0s).
320 -> 321 # (db) . Done (0s).
321 -> 322 # (db) . Done (0s).
322 -> 323 # (db) ... Done (0s).
323 -> 324 # (db) ... Done (0s).
324 -> 325 # (db) .... Done (0s).
325 -> 326 # (db) . Done (0s).
326 -> 327 # (db) . Done (0s).
327 -> 328 # (db) . Done (0s).
328 -> 329 # (db) . Done (0s).
329 -> 330 # (db) . Done (0s).
330 -> 331 # (db) . Done (0s).
331 -> 332 # (db) ... Done (0s).
332 -> 333 # (php)  Done (0s).
333 -> 334 # (db) . Done (0s).
334 -> 335 # (php)  Done (0s).
335 -> 336 # (db) . Done (0s).
336 -> 337 # (db) . Done (0s).
337 -> 338 # (db) . Done (0s).
338 -> 339 # (db) ... Done (0s).
339 -> 340 # (db) ... Done (0s).
340 -> 341 # (db) ........ Done (0s).
341 -> 342 # (db) ............... Done (0s).
342 -> 343 # (db) ... Done (0s).
343 -> 344 # (db) .... Done (0s).
344 -> 345 # (db) .. Done (0s).
345 -> 346 # (db) . Done (0s).
346 -> 347 # (db) . Done (0s).
347 -> 348 # (db) F Done (0s, 1 errors).
348 -> 349 # (db) .. Done (0s).
349 -> 350 # (php)  Done (0s).
350 -> 351 # (db) ..... Done (0s).
351 -> 352 # (db) .. Done (0s).
-- Done.

Add admin user:

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

# cd /opt/observium
# ./adduser.php admin AdminPass 10
Observium CE 17.9.0
Add User
User admin added successfully.

# ./adduser.php jmutai password 10
Observium CE 17.9.0
Add User
User jmutai added successfully.

10 is the highest level of access

Now open your web browser and start the installer:

http://observium.example.com

Login with configured admin user and password.