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-web

Installing 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