Zabbix 7.0 Ubuntu ve Debian’a Kurulum Rehberi

Üretim ortamında izleme sistemi kurmak, her sysadmin’in er ya da geç yüzleşmek zorunda kaldığı kritik görevlerden biri. Zabbix 7.0, bu iş için olgun, güvenilir ve açık kaynak bir çözüm sunuyor. Ben yıllarca farklı izleme araçları denedim; Nagios’tan Prometheus’a, Grafana stack’inden PRTG’ye kadar. Ama özellikle karma ortamlarda (Linux + Windows + ağ ekipmanları bir arada) Zabbix’in sunduğu esnekliği başka bir araçta bulmak çok zor. Bu rehberde Zabbix 7.0’ı Ubuntu 22.04/24.04 ve Debian 12 üzerine sıfırdan kuracağız, sonra da pratik olarak çalışır hale getireceğiz.

Kurulum Öncesi Hazırlık

Önce ortamı netleştirelim. Bu rehberdeki adımlar şu konfigürasyonlarda test edildi:

  • Ubuntu 22.04 LTS (Jammy Jellyfish)
  • Ubuntu 24.04 LTS (Noble Numbat)
  • Debian 12 (Bookworm)

Minimum sistem gereksinimleri üretim için biraz konservatif kalıyor, o yüzden şöyle bir öneri sunayım: küçük bir ortam için (50 host’a kadar) 4 vCPU, 8 GB RAM, 100 GB disk yeterli. Orta ölçekli ortamlarda (50-500 host) bu rakamları en az iki katına çıkarmanızı öneririm. Disk için mutlaka SSD kullanın; Zabbix veritabanı I/O açısından oldukça açgözlüdür.

Kuruluma başlamadan önce sistem güncellemelerini yapalım ve gerekli temel paketleri hazırlayalım:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget gnupg2 software-properties-common apt-transport-https

Hostname ayarının düzgün yapıldığından emin olun. Zabbix’in kendi kendini izleyebilmesi için bu önemli:

sudo hostnamectl set-hostname zabbix-server.example.com

/etc/hosts dosyasına da bu hostname’i ekleyin:

echo "127.0.1.1 zabbix-server.example.com zabbix-server" | sudo tee -a /etc/hosts

Zabbix Repository Ekleme

Zabbix’in resmi repository’sini sisteme eklemek için dağıtımınıza göre farklı paket kullanmanız gerekiyor. Önemli bir not: Zabbix’i asla Ubuntu veya Debian’ın kendi repository’sinden kurmayin. Oradaki sürümler genellikle çok geride kalıyor ve bu durum ileride cidli sorunlara yol açabiliyor.

Ubuntu 22.04 için:

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_7.0-2+ubuntu22.04_all.deb
sudo apt update

Ubuntu 24.04 için:

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_7.0-2+ubuntu24.04_all.deb
sudo apt update

Debian 12 için:

wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_7.0-2+debian12_all.deb
sudo dpkg -i zabbix-release_7.0-2+debian12_all.deb
sudo apt update

PostgreSQL Kurulumu ve Yapılandırması

Zabbix, MySQL/MariaDB, PostgreSQL ve Oracle ile çalışabiliyor. Ben üretim ortamlarında artık neredeyse her zaman PostgreSQL tercih ediyorum. Özellikle büyük ortamlarda performans farkı ciddi biçimde hissediliyor. PostgreSQL 16’yı kuralım:

sudo apt install -y postgresql postgresql-contrib
sudo systemctl enable postgresql
sudo systemctl start postgresql

PostgreSQL kurulduktan sonra Zabbix için veritabanı ve kullanıcı oluşturalım:

sudo -u postgres psql << EOF
CREATE USER zabbix WITH PASSWORD 'GucluBirSifre123!';
CREATE DATABASE zabbix OWNER zabbix ENCODING 'UTF8' LC_COLLATE='tr_TR.UTF-8' LC_CTYPE='tr_TR.UTF-8' TEMPLATE template0;
GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;
EOF

Eğer tr_TR.UTF-8 locale’i sisteminizde yoksa en_US.UTF-8 kullanabilirsiniz. Bunu kontrol etmek için:

locale -a | grep -i tr

Gerekirse locale oluşturun:

sudo locale-gen tr_TR.UTF-8
sudo update-locale

Zabbix Server, Frontend ve Agent Kurulumu

Şimdi asıl paketleri kuralım:

sudo apt install -y zabbix-server-pgsql zabbix-frontend-php php8.1-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent2

Ubuntu 24.04 kullanıyorsanız PHP sürümü farklı olabilir. Hangi PHP sürümünün kurulduğunu kontrol edin:

php --version

Veritabanı şemasını import edelim. Bu işlem veritabanı boyutuna ve sunucu performansına göre birkaç dakika sürebilir, sabırlı olun:

zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Import tamamlandıktan sonra doğrulama yapalım:

sudo -u postgres psql -d zabbix -c "dt" | wc -l

Bu komut yaklaşık 170+ tablo döndürmeli. Daha az dönüyorsa import eksik tamamlanmış demektir.

Zabbix Server Yapılandırması

/etc/zabbix/zabbix_server.conf dosyasını düzenlememiz gerekiyor. Bu dosya oldukça uzun ama dikkat edilmesi gereken kritik parametreler var:

sudo nano /etc/zabbix/zabbix_server.conf

Aşağıdaki parametreleri bulup güncelleyin:

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=GucluBirSifre123!

# Performance tuning - ortamınıza göre ayarlayın
StartPollers=10
StartPingers=5
StartTrappers=10
CacheSize=256M
HistoryCacheSize=64M
HistoryIndexCacheSize=16M
TrendCacheSize=32M
ValueCacheSize=256M

# Log ayarları
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=100
DebugLevel=3

Bu CacheSize değerleri orta büyüklükte bir ortam için makul başlangıç noktaları. İleride zabbix_server -R diaginfo komutuyla cache kullanım oranlarını izleyebilir ve buna göre ayarlayabilirsiniz.

PHP Timezone Ayarı

Frontend düzgün çalışması için timezone ayarını yapmak şart. Yoksa grafiklerde zaman kaymaları yaşarsınız ve bu oldukça sinir bozucu bir debug süreci yaratır:

sudo nano /etc/zabbix/apache.conf

Dosyada şu satırı bulun ve İstanbul timezone’unu ayarlayın:

php_value date.timezone Europe/Istanbul

Servislerin Başlatılması

Her şey hazır. Servisleri başlatalım:

sudo systemctl restart zabbix-server zabbix-agent2 apache2
sudo systemctl enable zabbix-server zabbix-agent2 apache2

Servislerin düzgün ayağa kalktığını kontrol edin:

sudo systemctl status zabbix-server
sudo systemctl status zabbix-agent2

Zabbix server logunu izleyerek hata olup olmadığını kontrol edin:

sudo tail -f /var/log/zabbix/zabbix_server.log

Burada cannot connect to the database gibi hata mesajları görürseniz büyük ihtimalle şifre veya bağlantı bilgilerinde sorun var demektir. PostgreSQL’in yerel bağlantılara izin verdiğinden emin olun:

sudo nano /etc/postgresql/16/main/pg_hba.conf

Şu satırın var olduğundan emin olun:

local   all             zabbix                                  md5

Değişiklik yaptıysanız PostgreSQL’i yeniden başlatın:

sudo systemctl restart postgresql

Web Arayüzü Kurulumu

Tarayıcınızdan http://sunucu-ip/zabbix adresine gidin. Zabbix kurulum sihirbazı sizi karşılayacak. Adımları takip edin:

  • Welcome ekranında “Next step” tıklayın
  • Check of pre-requisites ekranında tüm değerler yeşil olmalı
  • Configure DB connection ekranında PostgreSQL bilgilerini girin
  • Settings ekranında server adı ve timezone ayarlayın
  • Pre-installation summary ekranını onaylayın
  • Install ekranından kurulumu tamamlayın

Kurulum tamamlandıktan sonra varsayılan kullanıcı adı Admin, şifre ise zabbix. İlk giriş yaptıktan sonra bu şifreyi hemen değiştirin. Ciddi söylüyorum, bunu atlamayın; internete açık Zabbix sunucularında varsayılan şifreyle giriş deneme saldırıları çok yaygın.

Zabbix Agent2 Yapılandırması

Zabbix Server’ın kendisini de izlemesi için agent yapılandırmasını tamamlayalım:

sudo nano /etc/zabbix/zabbix_agent2.conf
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=zabbix-server.example.com

# Log ayarları
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=100

# Güvenlik için
AllowKey=system.*
AllowKey=vfs.*
AllowKey=net.*
AllowKey=proc.*

Agent2’yi yeniden başlatın:

sudo systemctl restart zabbix-agent2

Web arayüzünde Configuration > Hosts bölümüne gidin. Zabbix server host’u zaten tanımlı olacak. Bu host’un Agent interface’ini düzenleyip DNS adını zabbix-server.example.com olarak ayarlayın.

Güvenlik Duvarı Ayarları

UFW kullanıyorsanız gerekli portları açmanız gerekiyor. Zabbix server portu 10051, agent portu ise 10050:

sudo ufw allow 80/tcp comment "Zabbix Web"
sudo ufw allow 443/tcp comment "Zabbix Web HTTPS"
sudo ufw allow 10050/tcp comment "Zabbix Agent"
sudo ufw allow 10051/tcp comment "Zabbix Server"
sudo ufw reload

Üretim ortamında 10051 portunu internete açmayın. Zabbix server portuna sadece agent’lardan ve güvendiğiniz ağlardan erişim olmalı.

SSL Sertifikası Ekleme

HTTP üzerinden Zabbix kullanmak, özellikle kullanıcı adı/şifre geçiyor olduğu düşünüldüğünde, ciddi bir güvenlik açığı. Let’s Encrypt ile ücretsiz SSL alalım:

sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d zabbix.example.com

Certbot Apache yapılandırmanızı otomatik güncelleyecek. Sertifika yenileme işlemi ise cronjob ile otomatik halloluyor, ayrıca bir şey yapmanıza gerek yok.

Pratik: İlk Sunucuyu İzlemeye Almak

Yeni bir Linux sunucusunu Zabbix’e eklemek için o sunucuya da agent kurmanız gerekiyor. Basit bir örnek:

# Monitör edilecek sunucuda
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_7.0-2+ubuntu22.04_all.deb
sudo apt update
sudo apt install -y zabbix-agent2

# /etc/zabbix/zabbix_agent2.conf düzenle
sudo nano /etc/zabbix/zabbix_agent2.conf

Agent yapılandırmasında şunları güncelleyin:

Server=ZABBIX_SERVER_IP
ServerActive=ZABBIX_SERVER_IP
Hostname=monitored-server.example.com
sudo systemctl enable zabbix-agent2
sudo systemctl start zabbix-agent2

Web arayüzünde Configuration > Hosts > Create host ile bu sunucuyu ekleyin. Templates sekmesinden Linux by Zabbix agent template’ini atayın. Birkaç dakika içinde metrikler akmaya başlayacak.

Performans İzleme ve Sorun Giderme

Zabbix’i kurdunuz ve çalışıyor, harika. Ama birkaç hafta sonra veritabanı büyümeye, sorgular yavaşlamaya başlayabilir. PostgreSQL için birkaç kritik ayar:

sudo nano /etc/postgresql/16/main/postgresql.conf

Ortamınıza göre şu parametreleri güncelleyin:

shared_buffers = 2GB          # RAM'in %25'i
effective_cache_size = 6GB    # RAM'in %75'i
work_mem = 32MB
maintenance_work_mem = 512MB
checkpoint_completion_target = 0.9
wal_buffers = 64MB
default_statistics_target = 100
max_connections = 100

Zabbix’te Administration > Queue bölümünü düzenli kontrol edin. Burada bekleyen item sayısı sürekli artıyorsa ya poller sayısını artırmanız ya da veritabanı performansını iyileştirmeniz gerekiyor demektir.

Housekeeper ayarlarını da gözden geçirin. Administration > General > Housekeeping bölümünde history ve trend verilerinin ne kadar süre tutulacağını belirleyebilirsiniz. Varsayılan değerler çoğu zaman veritabanını şişirir. Ben genellikle history için 7-14 gün, trend için 365 gün kullanıyorum.

Yedekleme Stratejisi

Zabbix kurulumunuzun iki kritik bileşeni var: veritabanı ve yapılandırma dosyaları. Basit bir PostgreSQL yedekleme scripti:

#!/bin/bash
BACKUP_DIR="/backup/zabbix"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR

# Veritabanı yedeği
sudo -u postgres pg_dump zabbix | gzip > $BACKUP_DIR/zabbix_db_$DATE.sql.gz

# Yapılandırma dosyaları yedeği
tar -czf $BACKUP_DIR/zabbix_conf_$DATE.tar.gz /etc/zabbix/

# 30 günden eski yedekleri sil
find $BACKUP_DIR -name "*.gz" -mtime +30 -delete

echo "Yedekleme tamamlandi: $DATE"

Bu scripti /usr/local/bin/zabbix-backup.sh olarak kaydedin, çalıştırılabilir yapın ve cron’a ekleyin:

sudo chmod +x /usr/local/bin/zabbix-backup.sh
echo "0 2 * * * root /usr/local/bin/zabbix-backup.sh" | sudo tee -a /etc/cron.d/zabbix-backup

Sonuç

Zabbix 7.0, kurulumu tamamlandıktan sonra gerçekten güçlü bir izleme platformuna sahip olduğunuzu hissettiriyor. 7.0 sürümüyle gelen yeni özellikler arasında geliştirilmiş kullanıcı arayüzü, daha iyi raporlama araçları ve Zabbix Agent2’nin olgunlaşmış plugin sistemi öne çıkıyor.

Kurulumda en sık karşılaşılan sorunları şöyle özetleyebilirim: yanlış PHP timezone ayarı, PostgreSQL bağlantı izinleri, ve repository yerine doğrudan apt ile kurulum yapma hatası. Bunlardan kaçındığınızda kurulum genellikle sorunsuz tamamlanıyor.

Bundan sonraki adım olarak Zabbix’te template’leri derinlemesine incelemenizi, kendi custom template’lerinizi oluşturmayı öğrenmenizi ve özellikle kritik servisler için akıllı alert politikaları kurmanızı öneririm. Izleme sistemi kurmak kolay; ama onu yönetilebilir, anlamlı alertler üretir hale getirmek ayrı bir sanat. O konuları da ilerleyen yazılarda ele alacağız.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir