This guide will show you how to install and configure Observium on Ubuntu or Debian.
Observium is an open source and light weight network monitoring tool. It allows you to monitor all of the network devices and operating systems in your datacenter. Observium provides a powerful yet simple and easy to use web interface to monitor the health and status of your network devices.
Observium is an open source and light weight network monitoring tool. It allows you to monitor all of the network devices and operating systems in your datacenter. Observium provides a powerful yet simple and easy to use web interface to monitor the health and status of your network devices.
Prerequisites
You will need one Ubuntu 16.04, 18.04 or Debian 9, 10 having sudo non-root user privileges.Update Ubuntu/Debian
Before you begin with this tutorial, you will need to run update/upgrade on your Ubuntu or Debian:sudo apt-get update -y
sudo apt-get upgrade -y
When you are done with the above, restart the system to apply all the updates:
After restart, install some of required packages with the below command:
sudo apt-get install snmp fping python-mysqldb rrdtool subversion whois mtr-tiny ipmitool graphviz imagemagick -y
Once all the prerequisites are installed, you can proceed to the next step.
Install LAMP
You will need to install following required packages to run Observium on your Ubuntu or Debian:sudo apt-get install apache2 libapache2-mod-php7.0 -y
Once installation complete, start Apache and make it persistent on reboot using the below command:
sudo systemctl start apache2
sudo systemctl enable apache2
Next, install PHP version 7 and other important libraries with below command:
sudo apt-get install php7.0 php7.0-cli php7.0-mysql php7.0-mysqli php7.0-gd php7.0-mcrypt php7.0-json php-pear -y
Once PHP 7 and all the required libraries are installed, run the following command to install MariaDB server:
sudo apt-get install mariadb-server -y
Next, start MariaDB and make it persistent on reboot with below command:
sudo systemctl start mysql
sudo systemctl enable mysql
Configure MariaDB
You will need to secure your MariaDB installation with below script:sudo mysql_secure_installation
Answer all the questions as follows:
set root password? [Y/n] n
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
Once the MariaDB is secured, you will need to create a database and a user for Observium.
First, log in to the MySQL shell with the following command:
sudo mysql -u root -p
Enter your root password, then create a database for Observium with the following command:
MariaDB [(none)]>CREATE DATABASE obmdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Next, create a user for Observium and grant all privileges to the Observium database with the following command:
MariaDB [(none)]>GRANT ALL PRIVILEGES ON obmdb.* TO 'obmadm'@'localhost' IDENTIFIED BY 'password';
Next, flush the privileges with the following command:
MariaDB [(none)]>FLUSH PRIVILEGES;
Finally, exit from the MySQL shell with the following command:
MariaDB [(none)]>\q
Download Observium
Observium is available in two editions Open Source and Subscription, Open Source Edition is freely available for download with less features and few security fixes, while Subscription Edition is comes with additional features and hardware support. You can download the Open Source version of the Observium from their official website with the following command:
After downloading, extract the downloaded archive with the following command:
tar -xvzf observium-community-latest.tar.gz
Next, copy the extracted directory to the Apache web root directory:
sudo cp -ar observium /var/www/html/
Next, rename the sample configuration file and make some changes:
cd /var/www/html/observium
sudo cp config.php.default config.php
sudo nano config.php
Change the file as shown below:
// Database config --- This MUST be configured
$config['db_extension'] = 'mysqli';
$config['db_host'] = 'localhost';
$config['db_user'] = 'obmadm';
$config['db_pass'] = 'password';
$config['db_name'] = 'obmdb';
Save the file, then setup the default schema for the MySQL Database with the following command:
sudo ./discovery.php -u
If everything is fine you should see the following output:
___ _ _
/ _ \ | |__ ___ ___ _ __ __ __(_) _ _ _ __ ___
| | | || '_ \ / __| / _ \| '__|\ \ / /| || | | || '_ ` _ \
| |_| || |_) |\__ \| __/| | \ 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 (0s).
315 -> 316 # (db) . Done (0s).
316 -> 317 # (db) .. Done (0s).
317 -> 318 # (db) . Done (0s).
318 -> 319 # (db) ....... Done (2s).
319 -> 320 # (db) . Done (0s).
320 -> 321 # (db) . Done (0s).
321 -> 322 # (db) . Done (0s).
322 -> 323 # (db) ... Done (1s).
323 -> 324 # (db) ... Done (0s).
324 -> 325 # (db) .... Done (1s).
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 (1s).
332 -> 333 # (php) Done (0s).
333 -> 334 # (db) . Done (0s).
334 -> 335 # (php) Done (0s).
335 -> 336 # (db) . Done (0s).
336 -> 337 # (db) . Done (1s).
337 -> 338 # (db) . Done (0s).
338 -> 339 # (db) ... Done (0s).
339 -> 340 # (db) ... Done (0s).
340 -> 341 # (db) ........ Done (1s).
341 -> 342 # (db) ............... Done (0s).
342 -> 343 # (db) ... Done (0s).
343 -> 344 # (db) .... Done (1s).
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 (1s).
351 -> 352 # (db) .. Done (0s).
-- Done.
Next, you will need to create a directory to store RRDs and Logs:
sudo mkdir rrd logs
Change the ownership of the observium directory with the following command:
sudo chown -R www-data:www-data /var/www/html/observium
Next, you will need to create an Apache virtual host file for Observium. To do so, create a new configuration file observium.conf:
sudo nano /etc/apache2/sites-available/observium.conf
Add the following lines:
ServerAdmin admin@example.com
ServerName example.com
DocumentRoot /var/www/html/observium
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
Save the file, then enable the observium virtual host file and disable default virtual host file with the following command:
sudo a2ensite observium
sudo a2dissite 000-default
Next, you will also need to enable Apache rewrite module and PHP mcrypt module. You can do this by running the following command:
sudo a2enmod rewrite
sudo phpenmod mcrypt
Finally, restart apache web server with the following command:
sudo systemctl restart apache2
Next, create your first admin user with the following command:
sudo /var/www/html/observium/adduser.php admin yourpassword 10
If everything went fine, you should see the following output:
Observium CE 0.17.7.8697
Add User
User admin added successfully.
Access Observium Web Interface
Before accessing Observium, you will need to allow port 80 through the UFW firewall. By default, UFW is not installed on Debian 9, so you will need to install it first.sudo apt-get install ufw -y
Once the UFW is installed, enable UFW with the following command:
sudo ufw enable
Next, allow port 80 through UFW firewall with the following command:
sudo ufw allow 80
Once the firewall is configured, open your web browser and type the URL http://server_hostname.example.com or http://server_ip_address you should see the following page:

Here, enter your admin username and password, then click on the Login button you should see the Observium default dashboard as below:

Next, you will need to create a cron job for polling and discovering devices from network. You can do this by creating a cron file inside /etc/cron.d directory:
sudo nano /etc/cron.d/observium
Add the following lines:
# Run a complete discovery of all devices once every 2 hours
25 */2 * * * root /var/www/html/observium/discovery.php -h all >> /dev/null 2>&1
# Run automated discovery of newly added devices every 10 minutes
*/10 * * * * root /var/www/html/observium/discovery.php -h new >> /dev/null 2>&1
# Run multithreaded poller wrapper every 10 minutes
*/10 * * * * root /var/www/html/observium/poller-wrapper.py 4 >> /dev/null 2>&1
# Run housekeeping script daily for syslog, eventlog and alert log
10 2 * * * root /var/www/html/observium/housekeeping.php -ysel >> /dev/null 2>&1
# Run housekeeping script daily for rrds, ports, orphaned entries in the database and performance data
10 1 * * * root /var/www/html/observium/housekeeping.php -yrptb >> /dev/null 2>&1
Save and close the file when you are finished, then restart cron service to apply this changes:
sudo systemctl restart cron