Observium setup on Debian 10 with Nginx
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. Observium focuses on providing a beautiful and powerful yet simple and intuitive interface to the health and status of your network. Observium is powered by PHP, MariaDB and Nginx/Apache web server.
Step 1: Install PHP and required modules
sudo apt -y install wget php php-{pear,cgi,common,curl,mbstring,gd,mysql,bcmath,imap,json,xml,snmp,fpm,zip}
Configure and Start PHP-FPM
Ensure date.timezone is set in php.ini to your preferred time zone:
Modify the below files to set the timezone
sudo vim /etc/php/*/fpm/php.ini
sudo vim /etc/php/*/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 = Asia/Bahrain
sudo systemctl restart php*-fpm.service
Step 2: Install Nginx Web Server
sudo apt remove apache2 -y
sudo apt -y install nginx
sudo systemctl enable nginx
Step 3: Install and configure MariaDB
sudo apt install mariadb-server
create database and user for Observium.
Observium is not fully compatible with MySQL strict mode, disable it by modifying the /etc/mysql/mariadb.conf.d/50-server.cnf file as below within the [mysqld]
section
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0
Restart Mariadb
sudo systemctl restart mariadb
Create database for observium
$ sudo mysql -u root
create database observium;
grant all privileges on observium.* to observium@localhost IDENTIFIED by "YourPassword";
flush privileges;
quit
Step 4: Download and Install Observium
Install wget command line downloader using apt
sudo apt install wget
Add observium system user:
sudo useradd -r -M -d /opt/observium observium
Add this user to web user group www-data
sudo usermod -a -G observium www-data
Proceedings 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.
wget http://www.observium.org/observium-community-latest.tar.gz
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'] = 'YourPassword';
$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 to conf
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 Mon 2021-07-12 12:00:14 +03; 21h ago
Process: 21776 ExecStartPre=/bin/mkdir -p /var/run/agentx (code=exited, status=0/SUCCESS)
Main PID: 21777 (snmpd)
Tasks: 1 (limit: 4915)
Memory: 5.9M
CGroup: /system.slice/snmpd.service
└─21777 /usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f
Step 5: Configure Nginx
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 according to your setup. Also make sure the existence of /var/run/php/php7.3-fpm.sock or modify version.
server {
listen 80;
server_name observium.yourdomain.local;
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.3-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Check nginx for syntax error
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
And restart nginx:
sudo systemctl restart nginx
Step 6: Configure Observium on Web UI
cd /opt/observium
sudo ./discovery.php -u
Output:
$ sudo ./discovery.php -u
___ _ _
/ _ \ | |__ ___ ___ _ __ __ __(_) _ _ _ __ ___
| | | || '_ \ / __| / _ \| '__|\ \ / /| || | | || '_ ` _ \
| |_| || |_) |\__ \| __/| | \ V / | || |_| || | | | | |
\___/ |_.__/ |___/ \___||_| \_/ |_| \__,_||_| |_| |_|
Observium Community Edition 20.9.10731
https://www.observium.org
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.
adduser.php <username> <password> <level 1-10> [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)
10 is the highest level of access
$ cd /opt/observium
$ sudo ./adduser.php admin adminP@ssw0rd 10
Observium CE 20.9.10731
Add User
User admin added successfully.
$ sudo ./adduser.php netmon UserP@ssw0rd 5
Observium Community Edition 20.9.10731
Add User
User netmon added successfully.
Access Observium Web Interface
Now open your web browser to access the application
http://observium.yourdomain.local
Use the username and password of the user to login.