FedoraRHEL Based

How To Install Monitorix on Fedora 43

Install Monitorix on Fedora 43

Managing a Linux server without a monitoring tool is like driving blind. You need to know when your CPU is spiking, when your disks are filling up, and when network traffic looks suspicious. Monitorix solves all of that with a lightweight, open-source daemon and a clean browser-based interface. This guide walks you through the complete process to install Monitorix on Fedora 43, from system preparation to securing the web dashboard.

By the end, you will have a fully functional Monitorix instance running on Fedora 43, collecting metrics and rendering historical graphs without touching Apache or Nginx.

What Is Monitorix and Why Use It on Fedora 43?

Monitorix is a free, open-source system and network monitoring tool written in Perl. It runs as a background daemon and stores collected data in RRD (Round Robin Database) files managed by RRDtool.

Since version 3.0, Monitorix ships with its own built-in HTTP server. You do not need to set up a separate web server just to view graphs. That architectural decision keeps the footprint small, making it ideal for both production servers and personal workstations.

Monitorix monitors a broad range of system resources out of the box:

  • CPU usage, load average, and per-core metrics
  • RAM and swap utilization
  • Disk I/O and filesystem usage with configurable thresholds
  • Network interface traffic and packet statistics
  • System temperatures via lm_sensors
  • Active processes and user login activity
  • Network services and open port activity

On Fedora 43 specifically, Monitorix is available directly in the official Fedora repositories, so you do not need EPEL or any third-party repo. That makes installation clean, repeatable, and fully supported by Fedora’s packaging team.

Prerequisites

Before you start the installation process, make sure your environment meets these requirements:

  • OS: Fedora 43 (fresh install or existing system)
  • User privileges: A non-root user account with sudo access
  • Network access: DNF must be able to reach Fedora’s mirrors
  • Firewall: firewalld is active (default on Fedora 43)
  • SELinux: Active in Enforcing mode by default — this guide covers it
  • Perl: Version 5.10 or higher (included in base Fedora install)
  • Port 8080: Free and available for Monitorix’s built-in HTTP server
  • Disk space: At least 500 MB free for installation and RRD database growth

Step 1: Update Your Fedora 43 System

Always update your system before installing new software. This prevents dependency mismatches and ensures you have the latest security patches applied.

sudo dnf check-update
sudo dnf upgrade --refresh

The --refresh flag forces DNF to sync the latest metadata from all enabled repositories. If a kernel update is included, reboot before continuing:

sudo systemctl reboot

After reboot, log back in and confirm your Fedora version:

cat /etc/fedora-release

Expected output:

Fedora release 43 (Forty Three)

Verify Sudo Access

Confirm your account has active sudo privileges before proceeding:

sudo whoami

This should return root. If it does not, add your user to the wheel group:

sudo usermod -aG wheel your_username

Check for Port Conflicts

Monitorix defaults to port 8080. Confirm that port is free:

sudo ss -tulpn | grep :8080

If another service is using port 8080, note this. You will change the port in Monitorix’s configuration file later. If the command returns no output, the port is available.

Check SELinux Status

getenforce

The output will be Enforcing, Permissive, or Disabled. On a standard Fedora 43 install, you will see Enforcing. Keep that in mind because SELinux can block Monitorix from reading RRD files after installation. This guide covers the fix in the troubleshooting section.

Step 2: Open the Firewall for Monitorix

Configure the firewall before installation so port 8080 is ready when Monitorix starts.

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

The --permanent flag ensures the rule survives reboots. The --reload flag activates it immediately without restarting firewalld.

Verify the rule was added:

sudo firewall-cmd --list-ports

Expected output:

8080/tcp

Step 3: Install Monitorix on Fedora 43

This is the core step. Monitorix is available in Fedora 43’s official repositories, so a single DNF command handles the installation.

sudo dnf install monitorix

DNF will display the package list along with its dependencies. Type y and press Enter to confirm. The package manager resolves all direct dependencies automatically.

After installation completes, verify that Monitorix was installed correctly:

rpm -q monitorix

Expected output:

monitorix-3.16.0-2.fc43

The version number may differ slightly depending on the current Fedora 43 package.

Install Additional Perl Dependencies

Some Perl modules are not pulled in automatically. Install them explicitly to avoid runtime errors later:

sudo dnf install perl perl-libwww-perl perl-MailTools perl-MIME-Lite \
perl-CGI perl-DBI perl-XML-Simple perl-Config-General \
perl-HTTP-Server-Simple rrdtool perl-rrdtool \
perl-IO-Socket-SSL perl-LWP-Protocol-https

Here is what each group of packages does:

  • perl-CGI, perl-HTTP-Server-Simple: Power the built-in web server and graph rendering via monitorix.cgi
  • rrdtool, perl-rrdtool: Create and manage the Round Robin Databases that store all collected metrics
  • perl-Config-General: Parses Monitorix’s configuration file format
  • perl-IO-Socket-SSL, perl-LWP-Protocol-https: Enable HTTPS support for the built-in server and outbound connections

Verify the three most critical Perl modules work:

perl -e 'use CGI; use RRDs; use HTTP::Server::Simple; print "All modules OK\n"'

Expected output:

All modules OK

If you see a “Can’t locate” error, reinstall the module with sudo dnf install perl-<ModuleName>.

Optional Dependencies

# For email alerts
sudo dnf install perl-Net-SMTP-SSL perl-Authen-SASL

# For MySQL/MariaDB monitoring
sudo dnf install perl-DBD-MySQL

# For CPU temperature and sensor monitoring
sudo dnf install lm_sensors
sudo sensors-detect

Run sensors-detect and follow its prompts to auto-detect hardware sensors.

Step 4: Configure Monitorix on Fedora 43

The Monitorix configuration file lives at /etc/monitorix/monitorix.conf. Before editing, make a backup:

sudo cp /etc/monitorix/monitorix.conf /etc/monitorix/monitorix.conf.backup

Now open the file for editing:

sudo nano /etc/monitorix/monitorix.conf

Configure Global Settings

Find and update these top-level parameters to match your server:

title = My Fedora 43 Server
hostname = fedora43.yourdomain.com
theme_color = black
refresh_rate = 150
enable_zoom = y
  • title: Displayed at the top of the web interface
  • hostname: Your server’s fully qualified domain name or IP address
  • refresh_rate: How often the web interface auto-refreshes in seconds
  • enable_zoom: Allows users to click into specific graph time windows

Configure the Built-in HTTP Server Port

Locate the <httpd_builtin> block and confirm or change the port:

<httpd_builtin>
    enabled = y
    host    =
    port    = 8080
    user    = nobody
    group   = nobody
</httpd_builtin>

Change port = 8080 to another value only if port 8080 is in use on your system.

Enable Monitoring Modules

The <graph_enable> section controls which resources Monitorix collects. Enable only what you need to reduce overhead:

<graph_enable>
    system   = y
    kern     = y
    proc     = y
    disk     = y
    fs       = y
    net      = y
    lmsens   = y
    nvidia   = n
    serv     = y
</graph_enable>

Setting a module to n disables collection for that resource entirely.

Configure Network Interface Monitoring

First, find your actual interface names:

ip addr show

Then update the <net> section with the correct names:

<net>
    list = enp0s3, wlp2s0
    desc = LAN, Wireless
</net>

Replace enp0s3 and wlp2s0 with your actual interface names from ip addr show.

Configure Filesystem Monitoring

<fs>
    list = /, /home, /var
    desc = Root, Home, System
    alert_threshold_warning  = 85
    alert_threshold_critical = 95
</fs>

This tells Monitorix to monitor three mount points and trigger alerts at 85% and 95% usage. Adjust the paths to match your actual mount points.

After all changes, save the file with Ctrl+O and exit with Ctrl+X.

For a full reference of all configuration parameters, use:

man monitorix.conf

Step 5: Start and Enable the Monitorix Service

Start Monitorix now and configure it to start automatically at every boot:

sudo systemctl start monitorix
sudo systemctl enable monitorix

Check that the service is running correctly:

sudo systemctl status monitorix

Expected output (healthy service):

● monitorix.service - Monitorix
     Loaded: loaded (/usr/lib/systemd/system/monitorix.service; enabled)
     Active: active (running) since Thu 2026-03-19 05:55:00 WIB; 10s ago
   Main PID: 1234 (monitorix)
      Tasks: 2 (limit: 4915)
     Memory: 18.5M

The key line to confirm is Active: active (running).

Validate Your Configuration Syntax

Before trusting the running service, run a dry validation of your config file:

monitorix -c /etc/monitorix/monitorix.conf -v

The -v flag validates the configuration and exits without starting the service. If there are syntax errors, it reports the line number and parameter name. Fix any errors, then restart:

sudo systemctl restart monitorix

Whenever you edit monitorix.conf, always restart the service for changes to take effect.

Step 6: Access the Monitorix Web Interface

Open a browser and navigate to:

http://localhost:8080/monitorix/

For remote access from another machine on the network, replace localhost with your server’s IP address:

http://YOUR_SERVER_IP:8080/monitorix/

Navigating the Dashboard

The landing page organizes all enabled monitoring modules into clickable categories. Each category opens a graph set with four time-range views:

  • Daily: Last 24 hours
  • Weekly: Last 7 days
  • Monthly: Last 30 days
  • Yearly: Last 365 days

Hover over any data point to see exact metric values. If you enabled enable_zoom = y in the config, clicking on a graph allows you to zoom into a specific time window for granular analysis.

JavaScript must be enabled in your browser for the full interface to work. Use a desktop browser for best results, since mobile browsers may truncate wide graph labels.

Install Monitorix on Fedora 43

Step 7: Secure Your Monitorix Installation

By default, anyone who can reach port 8080 can view your Monitorix dashboard. On a production server, that is a real exposure risk. Apply authentication and optionally HTTPS.

Enable HTTP Basic Authentication

Step 1: Install httpd-tools and create an authentication file:

sudo dnf install httpd-tools
sudo mkdir -p /etc/monitorix/auth
sudo htpasswd -c /etc/monitorix/auth/.htpasswd admin

You will be prompted to set and confirm a password for the admin user. To add more users later, omit the -c flag:

sudo htpasswd /etc/monitorix/auth/.htpasswd another_user

Step 2: Edit the <httpd_builtin> block in monitorix.conf:

<httpd_builtin>
    enabled  = y
    host     =
    port     = 8080
    auth     = y
    htpasswd = /etc/monitorix/auth/.htpasswd
</httpd_builtin>

Step 3: Restart Monitorix to apply authentication:

sudo systemctl restart monitorix

Enable HTTPS with a Self-Signed Certificate

For internal production servers, add SSL to encrypt the monitoring traffic:

sudo mkdir -p /etc/monitorix/ssl
sudo openssl req -new -x509 -days 365 -nodes \
  -out /etc/monitorix/ssl/monitorix.crt \
  -keyout /etc/monitorix/ssl/monitorix.key

Update the <httpd_builtin> section:

<httpd_builtin>
    enabled       = y
    port          = 8443
    ssl           = y
    ssl_cert_file = /etc/monitorix/ssl/monitorix.crt
    ssl_key_file  = /etc/monitorix/ssl/monitorix.key
    auth          = y
    htpasswd      = /etc/monitorix/auth/.htpasswd
</httpd_builtin>

Open the new port in the firewall and restart:

sudo firewall-cmd --permanent --add-port=8443/tcp
sudo firewall-cmd --reload
sudo systemctl restart monitorix

Access the secured dashboard at:

https://YOUR_SERVER_IP:8443/monitorix/

Restrict Access by IP Range

Block all IPs except your trusted subnet:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" \
source address="192.168.1.0/24" port port="8080" protocol="tcp" accept'
sudo firewall-cmd --permanent --remove-port=8080/tcp
sudo firewall-cmd --reload

Replace 192.168.1.0/24 with your actual network range.

Troubleshooting Common Issues

Issue 1: Monitorix Service Fails to Start

Symptoms: systemctl status monitorix shows failed or inactive.

Fix:

# View detailed logs
sudo journalctl -u monitorix -n 50

# Validate the configuration file
monitorix -c /etc/monitorix/monitorix.conf -v

# Run in debug mode
sudo monitorix -c /etc/monitorix/monitorix.conf -d

The most common root cause is a missing Perl module. The debug output will name the exact module. Install it with sudo dnf install perl-<ModuleName>.

Issue 2: Graphs Are Empty or Show No Data

Symptoms: The web interface loads but graphs display no data lines.

Fix: Check and correct permissions on the RRD database directory:

sudo chown -R monitorix:monitorix /var/lib/monitorix/db/
sudo chmod -R 755 /var/lib/monitorix/db/
sudo systemctl restart monitorix

If a specific .rrd file is corrupted, delete it and Monitorix will regenerate it on the next cycle:

sudo rm /var/lib/monitorix/db/problematic_file.rrd
sudo systemctl restart monitorix

Issue 3: SELinux Blocking Monitorix

Symptoms: Service runs but graphs remain empty. The audit.log file shows AVC denials.

Fix:

# Identify AVC denials
sudo ausearch -m AVC -ts recent | grep monitorix

# Generate and apply a custom SELinux policy
sudo grep monitorix /var/log/audit/audit.log | audit2allow -M monitorix_policy
sudo semodule -i monitorix_policy.pp

# Set required boolean
sudo setsebool -P httpd_can_network_connect 1

Issue 4: Network Graphs Show Zero Traffic

Symptoms: Network monitoring is enabled but graphs show flat zero lines.

Fix: Interface names in your config do not match actual system interfaces. Run ip addr show and compare the output with the list = line in the <net> section of monitorix.conf. Update them to match exactly, then restart Monitorix.

sudo setcap cap_net_admin,cap_net_raw+ep /usr/bin/monitorix

Issue 5: Web Interface Not Accessible Remotely

Symptoms: The dashboard loads on localhost but not from another machine.

Fix:

# Confirm service is running
sudo systemctl status monitorix

# Confirm the firewall rule is active
sudo firewall-cmd --list-all | grep 8080

# Add the rule if missing
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

If both checks pass and access still fails, confirm SELinux is not blocking network connections:

sudo setsebool -P httpd_can_network_connect 1

Congratulations! You have successfully installed Monitorix. Thanks for using this tutorial for installing the Monitorix monitoring tool on your Fedora 43 Linux system. For additional or useful information, we recommend you check the official Monitorix website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is a dedicated and highly skilled Linux Systems Administrator with over a decade of progressive experience in designing, deploying, and maintaining enterprise-grade Linux infrastructure. His professional journey began in the telecommunications industry, where early exposure to Unix-based operating systems ignited a deep and enduring passion for open-source technologies and server administration.​ Throughout his career, r00t has demonstrated exceptional proficiency in managing large-scale Linux environments, overseeing more than 300 servers across development, staging, and production platforms while consistently achieving 99.9% system uptime. He holds advanced competencies in Red Hat Enterprise Linux (RHEL), Debian, and Ubuntu distributions, complemented by hands-on expertise in automation tools such as Ansible, Terraform, Bash scripting, and Python.
Back to top button