Observium is an auto-discovering network monitoring platform that supports a wide range of devices, including routers, switches, servers, and virtual machines. It provides real-time network performance and health monitoring using SNMP and other protocols.
-
Observium Community (Free)
- Open-source version with essential features.
- No official support, limited updates.
-
Observium Professional (Paid)
- Includes extended features, security updates, and support.
- Faster updates and priority bug fixes.
These requirements relate to the latest CE and Subscription versions of Observium. We strongly recommend not running old releases of Observium.
| Package | Minimum | Recommended | Notes |
|---|---|---|---|
| Apache | 2.2 | > 2.4 | Configuration is different between 2.2 and 2.4 |
| fping | - | > 3.8 | fping is not in the expected location on some distros |
| MySQL | 5.6.5 | > 5.7 | For 8.x do not use version below 8.0.12 |
| MariaDB | 10.0 | > 10.3 | |
| Net-SNMP | 5.4 | > 5.7 | Several persistent bugs still exist in 5.7+ |
| RRDtool | 1.5.5 | > 1.6 | Issues may occur below 1.5. 1.6 has much better performance. |
| PHP | 7.2.x | > 8.1 | PHP 8.1+ is recommended. |
yum install epel-release
dnf install -y dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf module list php
dnf module reset php
dnf module enable php:8.2
dnf module enable php:remi-8.2
yum install -y wget bash-completion gcc git nmap php php-opcache php-cli php-common php-curl php-mysqlnd php-gd php-mbstring php-posix php-pear php-snmp php-xml php-zip cronie net-snmp net-snmp-utils fping rrdtool subversion whois ipmitool graphviz policycoreutils-devel ImageMagick php-sodium python3 python3-devel python3-mysql python3-PyMySQL
php -v
vim /etc/php.ini
memory_limit = 512M
max_execution_time = 60
date.timezone = Asia/Dhaka
If you want to monitor libvirt virtual machines:
yum install libvirt
Set Python3 to be the default Python version:
alternatives --list
alternatives --config python3
alternatives --set python /usr/bin/python3
python3 -V
Python 3.11.11
dnf install -y mariadb-server mariadb
vim /etc/my.cnf
[mysqld]
bind-address = 0.0.0.0
Set the MySQL root password:
/usr/bin/mysqladmin -u root password '<mysql root password>'
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb
mysql -u root
CREATE DATABASE observiumdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'observium'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON observiumdb.* TO 'observium'@'localhost';
ALTER USER 'observium'@'localhost' IDENTIFIED BY 'admin1234';
FLUSH PRIVILEGES;
Observium comes in two editions, an Open Source Community Edition released on a biannual cycle, and a Subscription Edition with additional features, rapid bug fixes and feature improvements on a daily basis and an easy to use SVN-based update mechanism.
mkdir -p /opt/observium
cd /opt
wget http://www.observium.org/observium-community-latest.tar.gz
tar zxvf observium-community-latest.tar.gz
cd observium
cp config.php.default config.php
vim config.php
// Database config
// --- This MUST be configured
$config['db_host'] = 'localhost';
$config['db_name'] = 'observiumdb';
$config['db_user'] = 'observium';
$config['db_pass'] = 'admin1234';
Since Fping is in a different location, add a line to config.php to tell Observium.
which fping
/usr/sbin/fping
Add the following:
vim config.php
$config['fping'] = "/usr/sbin/fping";
Run the discovery.php script with the upgrade switch -u in order to insert the initial MySQL schema
./discovery.php -u
dnf install -y httpd
If the server will be running only Observium, create /etc/httpd/conf.d/observium.conf with these contents :
vim /etc/httpd/conf.d/observium.conf
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /opt/observium/html/
ServerName 192.168.10.191
<Directory "/opt/observium/html/">
AllowOverride All
Options FollowSymLinks MultiViews
Require all granted
</Directory>
ErrorLog /var/log/httpd/observium_error.log
CustomLog /var/log/httpd/observium_access.log combined
</VirtualHost>
mkdir -p /opt/observium/logs
chown apache:apache /opt/observium/logs
Create the rrd directory to store RRDs in:
cd /opt/observium
mkdir rrd
chown apache:apache rrd
systemctl restart httpd
Add a first user, use level of 10 for admin::
cd /opt/observium
./adduser.php <username> <password> <level>
./adduser.php admin istl123 10
Do an initial discovery and polling run to populate the data for the new device:
./discovery.php -h all
./poller.php -h all
vim /etc/snmp/snmpd.conf
systemctl restart snmpd
vim /etc/cron.d/observium
# Run a complete discovery of all devices once every 6 hours
33 */6 * * * root /opt/observium/observium-wrapper discovery >> /dev/null 2>&1
# Run automated discovery of newly added devices every 5 minutes
*/5 * * * * root /opt/observium/observium-wrapper discovery --host new >> /dev/null 2>&1
# Run multithreaded poller wrapper every 5 minutes
*/5 * * * * root /opt/observium/observium-wrapper poller >> /dev/null 2>&1
# Run housekeeping script daily for syslog, eventlog and alert log
13 5 * * * root /opt/observium/housekeeping.php -ysel >> /dev/null 2>&1
# Run housekeeping script daily for rrds, ports, orphaned entries in the database and performance data
47 4 * * * root /opt/observium/housekeeping.php -yrptb >> /dev/null 2>&1
systemctl reload crond
From the host running Observium, use SCP to copy to the client as shown:
scp /opt/observium/scripts/distro user@remote_client:/usr/bin/distro
scp /opt/observium/scripts/distro root@192.168.10.192:/usr/bin/distro
Open your browser and go to: http://your-server-ip/
Ensure that the client system has the SNMP package:
apt -y install snmpd
yum -y install net-snmp
vim /etc/snmp/snmpd.conf
## Listen to all interface
agentAddress udp:161
## Change "observium" to your preferred SNMP community string
com2sec readonly default public
group MyROGroup v2c readonly
view all included .1 80
access MyROGroup "" any noauth exact all none none
## Update your location here
syslocation DC, Dhaka
syscontact Admin <admin@technbd.com>
## Distro Detection
extend .1.3.6.1.4.1.2021.7890.1 distro /usr/bin/distro
systemctl start snmpd
systemctl restart snmpd
systemctl status snmpd
ll /usr/bin/distro
chmod +x /usr/bin/distro
Check from localhost:
snmpwalk -v 2c -c public localhost
Check from Observium server:
snmpwalk -v 2c -c public 192.168.10.192