How To Install Observium on Fedora 41
In this tutorial, we will show you how to install Observium on Fedora 41. Observium is a powerful, open-source network monitoring platform designed for Linux systems that helps network administrators track the performance, availability, and health of their network infrastructure. Whether you’re managing a small home network or enterprise infrastructure, Observium provides valuable insights through its comprehensive monitoring capabilities. In this guide, we’ll walk through the complete process of installing Observium on Fedora 41, from system preparation to configuration and daily operation.
Understanding Observium and Its Benefits
Observium stands out among network monitoring solutions due to its robust feature set and intuitive interface. This platform enables you to monitor various network devices including servers, routers, switches, and more through protocols like SNMP, Ping, and various agent-based mechanisms.
Key Features and Capabilities
Observium offers two distinct editions to suit different needs:
- Community Edition: Available for free with biannual releases, this version provides core monitoring functionality for smaller deployments and those new to network monitoring.
- Subscription Edition: Offering daily updates, enhanced features, expanded hardware support, and priority fixes through an SVN-based update mechanism, this paid version is ideal for production environments.
The platform excels at visualizing network performance through detailed graphs and customizable dashboards. You can monitor bandwidth usage, CPU load, memory utilization, and numerous other metrics critical to network health. What sets Observium apart is its auto-discovery capability that can identify devices on your network and automatically configure appropriate monitoring parameters.
System Requirements for Observium on Fedora 41
Before beginning the installation process, ensure your Fedora 41 system meets the following requirements for optimal performance:
Hardware Specifications
- For smaller networks (under 20 devices): 2GB RAM, 2 CPU cores, 20GB storage
- For medium networks (20-100 devices): 4GB RAM, 4 CPU cores, 40GB storage
- For larger networks (100+ devices): 8GB+ RAM, 8+ CPU cores, 100GB+ storage
Storage requirements increase over time as Observium collects and stores monitoring data in RRD files. For production environments, SSD storage is recommended for better performance, especially when generating graphs and reports.
Network Configuration
Your Fedora server should have a static IP address and properly configured DNS to ensure consistent access to the web interface and reliable network monitoring. Observium requires outbound access to monitored devices on various ports, including 161/UDP for SNMP traffic.
Firewall Considerations
You’ll need to configure your firewall to allow:
- Inbound HTTP/HTTPS traffic to the web interface
- Outbound SNMP traffic to monitored devices
- ICMP traffic for ping monitoring
Preparing Your Fedora 41 Environment
A properly prepared system lays the groundwork for a smooth Observium installation. Let’s start by ensuring your Fedora 41 system is ready.
Update System Packages
First, update all system packages to their latest versions:
sudo dnf update -y
sudo reboot
This ensures you have the latest security patches and dependencies before proceeding.
Configure System Hostname
Set a proper hostname for your Observium server:
sudo hostnamectl set-hostname observium.yourdomain.local
Edit the /etc/hosts
file to include your server’s IP address and hostname:
sudo nano /etc/hosts
Add a line like:
192.168.1.100 observium.yourdomain.local observium
Replace the IP address with your server’s actual IP address.
Configure Required Repositories
Observium requires packages that aren’t included in the standard Fedora repositories. Add the EPEL (Extra Packages for Enterprise Linux) repository:
sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-41.noarch.rpm
We’ll also need the REMI repository for PHP packages:
sudo dnf install -y https://rpms.remirepo.net/fedora/remi-release-41.rpm
Finally, install the yum-utils package to help manage repositories:
sudo dnf install -y yum-utils
Enable PHP 8.2 from the REMI repository:
sudo dnf module reset php
sudo dnf module enable php:remi-8.2
This ensures we have the required PHP version for Observium.
Installing Required Packages
Now that our system is prepared, let’s install all the dependencies needed for Observium.
Web Server Components
Install Apache web server:
sudo dnf install -y httpd
sudo systemctl enable --now httpd
PHP and Required Modules
Install PHP and required extensions:
sudo dnf install -y php php-mysqlnd php-gd php-curl php-json php-mbstring php-process php-snmp php-xml php-zip php-opcache
Database Server
Install MariaDB:
sudo dnf install -y mariadb-server
sudo systemctl enable --now mariadb
Monitoring Dependencies
Install SNMP, RRDtool, and other required tools:
sudo dnf install -y rrdtool net-snmp net-snmp-utils fping whois subversion graphviz ImageMagick jwhois nmap ipmitool
These packages provide essential functionality for network discovery, data collection, and visualization.
Verify Package Installation
You can verify that all required packages are installed by running:
rpm -qa | grep -E 'php|httpd|mariadb|rrdtool|snmp'
This command lists all installed packages matching the specified patterns.
Database Configuration
A properly configured database is crucial for Observium’s performance and data storage.
Secure Database Installation
Run the MariaDB security script to set a root password and secure your installation:
sudo mysql_secure_installation
Follow the prompts to:
- Set a root password
- Remove anonymous users
- Disallow root login remotely
- Remove test database
- Reload privilege tables
Create Observium Database
Log in to MySQL:
sudo mysql -u root -p
Create the database and user:
CREATE DATABASE observium DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON observium.* TO 'observium'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
EXIT;
Replace ‘your_password’ with a strong password. Make note of this password as you’ll need it later for Observium configuration.
Test Database Connection
Verify you can connect to the database with the new user:
mysql -u observium -p -e "SHOW TABLES FROM observium;"
You should see an empty result since the database is newly created.
Downloading and Installing Observium
Now we’ll download and install the Observium software itself.
Choose Observium Edition
For the Community Edition (free):
cd /opt
sudo wget http://www.observium.org/observium-community-latest.tar.gz
sudo tar zxvf observium-community-latest.tar.gz
For the Subscription Edition (paid, requires credentials):
cd /opt
sudo svn co http://svn.observium.org/svn/observium/trunk observium
Set Correct Permissions
Ensure proper ownership and permissions:
sudo chown -R apache:apache /opt/observium
sudo chmod -R 755 /opt/observium
Create Required Directories
Create directories for logs, RRD files, and configuration:
cd /opt/observium
sudo mkdir -p rrd logs
sudo chown apache:apache rrd logs
This ensures Observium can write to these directories.
Configuring Observium
With the software installed, let’s configure Observium for your environment.
Create Configuration File
Copy the default configuration file:
cd /opt/observium
sudo cp config.php.default config.php
Edit the configuration file:
sudo nano config.php
Update the following parameters:
// Database config
$config['db_host'] = 'localhost';
$config['db_user'] = 'observium';
$config['db_pass'] = 'your_password';
$config['db_name'] = 'observium';
// Base URL
$config['base_url'] = 'http://your_server_ip_or_domain/';
// Default community
$config['snmp']['community'] = array('public');
$config['snmp']['version'] = 'v2c';
Replace ‘your_password’ with the actual database password you created earlier.
Initialize Database Schema
Run the database initialization script:
cd /opt/observium
sudo ./discovery.php -u
This creates the required database tables and initializes the schema.
Set Up Fping Path
If fping is installed in a non-standard location, add its path to the configuration:
sudo which fping
Note the output and add it to config.php:
sudo nano config.php
Add the following line:
$config['fping'] = '/usr/bin/fping';
Replace the path with the actual path from the ‘which fping
‘ command.
Apache Web Server Configuration
Proper web server configuration ensures secure and efficient access to Observium’s web interface.
Create Virtual Host
Create a new virtual host configuration file:
sudo nano /etc/httpd/conf.d/observium.conf
Add the following configuration:
<VirtualHost *:80>
ServerName observium.yourdomain.local
DocumentRoot /opt/observium/html
<Directory /opt/observium/html/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/observium-error.log
CustomLog /var/log/httpd/observium-access.log combined
</VirtualHost>
Replace ‘observium.yourdomain.local’ with your actual server name.
Enable Required Apache Modules
Ensure the required Apache modules are enabled:
sudo dnf install -y mod_rewrite
Restart Apache
Apply the new configuration:
sudo systemctl restart httpd
Configure SELinux (if enabled)
If SELinux is enabled on your system, configure it to allow Apache to access Observium:
sudo semanage fcontext -a -t httpd_sys_content_t "/opt/observium(/.*)?"
sudo restorecon -Rv /opt/observium
Additionally, allow Apache to execute SNMP commands:
sudo setsebool -P httpd_can_network_connect 1
Initial Observium Setup
Now that the installation is complete, let’s set up Observium through its web interface.
Access the Web Interface
Open a web browser and navigate to http://your_server_ip_or_domain/
You should see the Observium login page. The default credentials are:
- Username:
admin
- Password:
admin
Create Administrator Account
After logging in for the first time, you should change the admin password:
- Click on your username in the top right corner
- Select “Edit User”
- Set a new secure password
- Click “Save Changes”
Navigate the Dashboard
Familiarize yourself with the Observium dashboard, which displays system status and key metrics. The main sections include:
- Overview: A summary of your network status
- Devices: List of all monitored devices
- Ports: Network interface information
- Health: System health metrics
- Inventory: Device inventory information
Configure Email Notifications
To receive alerts, set up email notifications:
- Go to Settings > Global Settings
- Under “Email” section, configure your mail server details
- Save the changes
Adding and Discovering Network Devices
The real value of Observium comes from monitoring your network devices.
Add Devices via Web Interface
To add a device through the web interface:
- Go to Devices > Add Device
- Enter the hostname or IP address
- Select the appropriate SNMP version
- Enter the SNMP community string (typically “public” for v1/v2c)
- Select device type (if known)
- Click “Add Device”
Add Devices via Command Line
You can also add devices via the command line:
cd /opt/observium
./addhost.php hostname community snmpversion
For example:
./addhost.php 192.168.1.1 public v2c
Run Initial Discovery
After adding devices, run the discovery process:
cd /opt/observium
./discovery.php -h all
This will discover details about all added devices.
Setting Up Automated Tasks with Cron
Automation is key to keeping your monitoring data up-to-date.
Create Cron Jobs
Create a cron file for Observium:
sudo nano /etc/cron.d/observium
Add the following cron jobs:
# Run a complete discovery of all devices once every 6 hours
33 */6 * * * apache /opt/observium/discovery.php -h all >> /dev/null 2>&1
# Run polling of all devices every 5 minutes
*/5 * * * * apache /opt/observium/poller-wrapper.py 8 >> /dev/null 2>&1
# Run housekeeping script once a day
15 0 * * * apache /opt/observium/housekeeping.php >> /dev/null 2>&1
This sets up:
- Complete discovery every 6 hours
- Regular polling every 5 minutes
- Daily housekeeping to maintain database efficiency
The number “8” in the poller-wrapper command represents the number of threads to use. Adjust this based on your server’s capabilities.
Verify Cron Jobs
To verify the cron jobs are running correctly, check the logs:
sudo tail -f /opt/observium/logs/poller.log
You should see polling activity occurring at the specified intervals.
Performance Tuning and Optimization
For optimal Observium performance, especially in larger environments, consider these optimizations.
PHP Configuration
Edit PHP configuration:
sudo nano /etc/php.ini
Optimize these settings:
memory_limit = 512M
max_execution_time = 300
date.timezone = "Your/Timezone"
Replace “Your/Timezone” with your actual timezone.
Database Tuning
For MariaDB optimization, edit the configuration:
sudo nano /etc/my.cnf.d/server.cnf
Add these settings under the [mysqld] section:
innodb_buffer_pool_size = 1G
query_cache_size = 64M
join_buffer_size = 4M
tmp_table_size = 64M
max_heap_table_size = 64M
Adjust values based on your server’s available memory.
RRD Storage Management
RRD files can grow significantly over time. Consider placing them on dedicated storage:
sudo mkdir -p /data/rrd
sudo mv /opt/observium/rrd/* /data/rrd/
sudo chown -R apache:apache /data/rrd
Then update config.php:
$config['rrd_dir'] = '/data/rrd';
Securing Your Observium Installation
Security is critical for any network monitoring solution.
Implement HTTPS
Install SSL certificates:
sudo dnf install -y mod_ssl
Generate a self-signed certificate (or use a valid certificate):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/observium.key -out /etc/pki/tls/certs/observium.crt
Update Apache configuration:
sudo nano /etc/httpd/conf.d/observium.conf
Add SSL configuration:
<VirtualHost *:443>
ServerName observium.yourdomain.local
DocumentRoot /opt/observium/html
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/observium.crt
SSLCertificateKeyFile /etc/pki/tls/private/observium.key
<Directory /opt/observium/html/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/observium-error.log
CustomLog /var/log/httpd/observium-access.log combined
</VirtualHost>
Restart Apache:
sudo systemctl restart httpd
Set Up Role-Based Access Control
Create additional users with appropriate permissions:
- Go to Settings > Users
- Click “Add User”
- Set username, password, and appropriate access level
- Save changes
Troubleshooting Common Issues
Even with careful installation, issues can arise. Here are solutions to common problems.
SNMP Communication Problems
If devices show as down or SNMP data isn’t being collected:
- Verify SNMP is enabled on the device
- Confirm community strings match
- Check firewall rules on both Observium server and monitored devices
- Test SNMP manually:
snmpwalk -v2c -c public hostname system
Database Connection Issues
If you encounter database errors:
- Verify database credentials in config.php
- Check MariaDB service is running:
sudo systemctl status mariadb
- Test database connection:
mysql -u observium -p -e "SHOW TABLES FROM observium;"
Web Interface Not Loading
If the web interface isn’t accessible:
- Check Apache status:
sudo systemctl status httpd
- Verify SELinux permissions:
sudo audit2allow -a
- Check Apache error logs:
sudo tail -f /var/log/httpd/error_log
PHP Memory Limit Errors
If you see “Allowed memory size exhausted” errors, increase PHP memory limit:
sudo nano /etc/php.ini
Set a higher memory_limit value:
memory_limit = 512M
Restart Apache:
sudo systemctl restart httpd
SNMP Index File Issues
If you encounter errors with the SNMP index file:
cd /opt/observium/mibs
sudo rm -f .index
This removes the corrupted index file, which will be recreated automatically.
Backup and Recovery Procedures
Regular backups are essential for any critical system.
Configuration Backup
Back up the Observium configuration:
sudo tar -czf observium-config-$(date +%Y%m%d).tar.gz /opt/observium/config.php /etc/httpd/conf.d/observium.conf
Database Backup
Create a database backup script:
sudo nano /usr/local/bin/backup-observium-db.sh
Add the following content:
#!/bin/bash
BACKUP_DIR="/backups/observium"
DATE=$(date +%Y%m%d)
mkdir -p $BACKUP_DIR
mysqldump -u observium -p'your_password' observium > $BACKUP_DIR/observium-db-$DATE.sql
gzip $BACKUP_DIR/observium-db-$DATE.sql
find $BACKUP_DIR -name "observium-db-*.sql.gz" -mtime +30 -delete
Make the script executable:
sudo chmod +x /usr/local/bin/backup-observium-db.sh
Add a cron job for automated backups:
sudo nano /etc/cron.d/observium-backup
Add the following line:
0 1 * * * root /usr/local/bin/backup-observium-db.sh
Congratulations! You have successfully installed Observium. Thanks for using this tutorial for installing the Observium monitoring tool on your Fedora 41 system. For additional help or useful information, we recommend you check the official Observium website.