Zabbix Monitoring
Zabbix is a full-featured enterprise monitoring platform that covers servers, network devices, and applications. It provides active agents for servers, SNMP monitoring for network devices, and built-in alerting through email, Slack, PagerDuty, and others. Zabbix is heavier to operate than Prometheus/Grafana but covers a broader monitoring scope including network infrastructure and has better out-of-the-box templates for traditional server monitoring.
Zabbix architecture
Zabbix components:
zabbix-server — central monitoring server (collects data, evaluates triggers)
zabbix-web — web interface (PHP, requires Apache/Nginx + MySQL)
zabbix-agent — lightweight agent on monitored servers
zabbix-proxy — optional proxy for distributed monitoring
Data flow:
zabbix-agent (on server) → pushes metrics to → zabbix-server
zabbix-server → evaluates → triggers → sends alerts
Admin → configures via → zabbix-webInstalling Zabbix
# Install Zabbix 7.0 LTS on Ubuntu:
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
sudo apt update
sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
# Set up database:
sudo mysql -e "CREATE DATABASE zabbix CHARACTER SET utf8mb4;"
sudo mysql -e "CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'ZabbixPass!42';"
sudo mysql -e "GRANT ALL ON zabbix.* TO 'zabbix'@'localhost';"
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
# Configure /etc/zabbix/zabbix_server.conf:
# DBPassword=ZabbixPass!42
sudo systemctl enable --now zabbix-server zabbix-agent apache2
Adding hosts to monitor
# Install zabbix-agent on each server to monitor:
sudo apt install -y zabbix-agent
sudo nano /etc/zabbix/zabbix_agentd.conf
zabbix_agentd.conf key settings
Server=192.168.1.100 # IP of your Zabbix server
ServerActive=192.168.1.100 # For active checks
Hostname=webserver01 # Must match hostname in Zabbix web UI
sudo systemctl enable --now zabbix-agent
# In Zabbix web UI:
# Configuration > Hosts > Create Host
# Host name: webserver01
# Groups: Linux servers
# Agent interface: IP of webserver01
# Link template: "Linux by Zabbix agent"
Triggers and alerts
# Zabbix templates include pre-built triggers:
# "Linux CPU load average is too high" — fires when 15min avg > 1 per core
# "Free disk space is less than 20%" — configurable threshold
# "Host has been restarted" — detects unexpected reboots
# Configure email alerts:
# Administration > Media types > Email
# Enter SMTP server settings
# Assign to users:
# Administration > Users > irfan > Media > Add email
# Set notification escalation:
# Configuration > Actions > Trigger actions
# Step 1 (immediate): send to on-call
# Step 2 (if unacknowledged after 15min): send to manager
Conclusion
Zabbix's main advantage over Prometheus+Grafana is out-of-the-box agent-based monitoring with pre-built templates for hundreds of applications and network devices — you do not need to write alert rules from scratch. The main disadvantage is complexity: Zabbix is significantly harder to operate than Prometheus. For environments with 20+ servers and mixed infrastructure (servers, switches, UPS devices, printers), Zabbix's breadth makes it worth the operational cost. For cloud-native or container-heavy environments, Prometheus+Grafana is usually the better fit.
Need help with Ubuntu administration?
Work directly with Muhammad Irfan Aslam for Ubuntu Server, Linux, cloud, Docker, DevOps, CI/CD, or infrastructure troubleshooting support.
Work with Muhammad Irfan Aslam