Zabbix CentOS ve Rocky Linux’a Kurulum Rehberi
Üretim ortamında izleme sistemi kurmak, “şimdilik bir şeyler çalışsın” zihniyetiyle yaklaşılamayacak kadar kritik bir iştir. Yıllar içinde onlarca şirkette Zabbix kurulumu yaptım ve her seferinde şunu gördüm: Kurulumu doğru yapmak, ilerleyen haftalarda yaşanacak onlarca sorunu peşinen çözüyor. Bu yazıda hem CentOS 7/8 hem de Rocky Linux 8/9 üzerinde Zabbix 6.x kurulumunu, production’a yakın bir yaklaşımla anlatacağım.
Ön Gereksinimler ve Ortam Hazırlığı
Kuruluma başlamadan önce sunucunun temiz olduğundan emin olun. Özellikle daha önce başka izleme araçları denediyseniz, çakışan servisler sizi saatler kaybettirebilir.
Minimum sistem gereksinimleri pratikte şöyle:
- CPU: 2 çekirdek (50 host altı için yeterli, 500+ host için 4+ çekirdek)
- RAM: 4 GB (veritabanı aynı sunucudaysa 8 GB öneriyorum)
- Disk: 50 GB (history retention politikanıza göre bu rakam hızla büyür)
- OS: CentOS 7/8 veya Rocky Linux 8/9
- SELinux: Kapalı veya permissive modda (production’da permissive tercih edin, tamamen kapatmak güvenlik açığıdır)
Önce SELinux durumunu kontrol edin:
sestatus
# Permissive moda almak için:
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
Firewall ayarları da önceden yapılmalı. Zabbix default olarak 10051 (server), 10050 (agent) portlarını kullanır:
firewall-cmd --permanent --add-port=10051/tcp
firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Sistem saatini de doğrulayın. Zabbix grafiklerinde saat kayması yaşıyorsanız troubleshooting kâbusu sizi bekliyor:
timedatectl set-timezone Europe/Istanbul
timedatectl set-ntp true
systemctl enable --now chronyd
Zabbix Repository Kurulumu
Zabbix’in resmi repo’sunu kullanmak şart. Topluluk repo’larından gelen paketlerle ilgili acı deneyimlerim var; versiyon çakışmaları, eksik bağımlılıklar… Resmi yoldan gidin.
CentOS 7 için:
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
yum clean all
CentOS 8 / Rocky Linux 8 için:
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
dnf clean all
Rocky Linux 9 için:
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
dnf clean all
Rocky Linux 8/9 kullanıyorsanız, PowerTools veya CRB repo’sunun aktif olduğundan emin olun. Bazı Zabbix bağımlılıkları buradan geliyor:
# Rocky Linux 8:
dnf config-manager --set-enabled powertools
# Rocky Linux 9:
dnf config-manager --set-enabled crb
Veritabanı Kurulumu: MariaDB
Zabbix, MySQL/MariaDB, PostgreSQL ve Oracle’ı destekliyor. Ben production ortamları için genellikle MariaDB tercih ediyorum; yönetimi kolay, performansı iyi ve topluluk desteği güçlü. PostgreSQL daha büyük kurulumlar için daha iyi ölçekleniyor ama bu yazıda MariaDB ile devam edeceğiz.
# CentOS 7:
yum install -y mariadb-server mariadb
# CentOS 8 / Rocky Linux 8/9:
dnf install -y mariadb-server mariadb
MariaDB’yi başlatın ve güvenlik ayarlarını yapın:
systemctl enable --now mariadb
mysql_secure_installation
mysql_secure_installation sizi interaktif olarak yönlendirecek. Root şifresi belirleyin, anonymous kullanıcıları kaldırın, remote root login’i devre dışı bırakın. Bunlar temel hijyen kuralları.
Zabbix için veritabanı ve kullanıcı oluşturun:
mysql -u root -p
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Guclu_Bir_Sifre_Koyun!';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
EXIT;
log_bin_trust_function_creators ayarı önemli. Binary log aktifse ve bunu açmazsanız, şema import işlemi hata verir. Bu hatayı görmüş ve neden kaynaklandığını anlamamış insanları bizzat kurtardım.
Zabbix Server ve Frontend Kurulumu
Temel paketleri kurun:
# CentOS 7:
yum install -y zabbix-server-mysql zabbix-agent zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts
# CentOS 8 / Rocky Linux 8/9:
dnf install -y zabbix-server-mysql zabbix-agent zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts
Zabbix şema dosyasını veritabanına import edin. Bu işlem veritabanı büyüklüğüne göre birkaç dakika sürebilir:
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Import tamamlandıktan sonra binary log ayarını geri alın:
mysql -u root -p -e "SET GLOBAL log_bin_trust_function_creators = 0;"
Zabbix Server Konfigürasyonu
Ana konfigürasyon dosyası /etc/zabbix/zabbix_server.conf dosyasıdır. Her parametreyi açıklamalıyla anlatmak yerine production’da mutlaka değiştirmeniz gereken kısımlara odaklanıyorum:
nano /etc/zabbix/zabbix_server.conf
Düzenlenecek kritik parametreler:
- DBPassword: Az önce oluşturduğunuz veritabanı şifresi
- DBHost: Eğer veritabanı başka bir sunucudaysa IP adresi, localhost ise boş bırakın
- DBName:
zabbix - DBUser:
zabbix - StartPollers: Default 5, 100+ host için 20-30 yapın
- StartPollersUnreachable: Default 1, 3-5 yapın
- StartTrappers: Default 5, büyük ortamlar için 10+
- CacheSize: Default 8M, ciddi ortamlar için 256M veya daha fazla
- HistoryCacheSize: Default 16M, yoğun metrik toplama için 64M+
- ValueCacheSize: Default 8M, graph renderlamayı hızlandırır, 64M+ öneririm
# En azından şu satırları düzenleyin:
grep -n "DBPassword|DBHost|DBName|DBUser|CacheSize" /etc/zabbix/zabbix_server.conf
Değişiklikleri yaptıktan sonra:
systemctl enable --now zabbix-server zabbix-agent httpd php-fpm
PHP Konfigürasyonu
Zabbix web arayüzü PHP tabanlı. Birkaç PHP ayarı default değerleriyle gelir ve bunlar web kurulum sihirbazında hata gösterir. Önceden düzeltelim:
# PHP-FPM için Zabbix konfigürasyon dosyası:
nano /etc/php-fpm.d/zabbix.conf
Şu değerleri kontrol edin ve gerekirse düzenleyin:
- php_value[max_execution_time]: 300 olmalı
- php_value[memory_limit]: 128M veya daha fazla
- php_value[post_max_size]: 16M
- php_value[upload_max_filesize]: 2M
- php_value[max_input_time]: 300
- php_value[date.timezone]:
Europe/Istanbulolarak ayarlayın
sed -i 's/; php_value[date.timezone].*/php_value[date.timezone] = Europe/Istanbul/' /etc/php-fpm.d/zabbix.conf
PHP-FPM’i yeniden başlatın:
systemctl restart php-fpm
Web Arayüzünden Kurulumu Tamamlama
Tarayıcıdan http://sunucu-ip/zabbix adresine gidin. Kurulum sihirbazı sizi karşılayacak.
Adımlar sırasıyla şöyle ilerler:
- Welcome: Devam edin
- Check of pre-requisites: Tüm yeşil görmeli, kırmızı varsa yukarıdaki adımları gözden geçirin
- Configure DB connection: Veritabanı bilgilerini girin
- Settings: Zabbix server hostname ve zaman diliminizi girin
- Pre-installation summary: Kontrol edin
- Install: Tamamlandı
Default giriş bilgileri:
- Kullanıcı: Admin
- Şifre: zabbix
İlk iş olarak bu şifreyi değiştirin. “Sonra değiştiririm” diyenler var, aylar sonra incident sırasında unuttukları default şifresiyle oturan sysadminler var. O grup olmayın.
İlk Agent Yapılandırması
Zabbix server kurulduğunda agent da kurulmuş oldu. Kendi sunucusunu izlemesi için agent’ı yapılandıralım:
nano /etc/zabbix/zabbix_agentd.conf
Kritik parametreler:
- Server: Zabbix server IP’si (bu durumda 127.0.0.1)
- ServerActive: Zabbix server IP’si (aktif kontroller için)
- Hostname: Bu host için benzersiz bir isim, DNS adı idealdir
# Konfigürasyonu hızlıca düzenlemek için:
sed -i 's/^Server=127.0.0.1/Server=127.0.0.1/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/^ServerActive=127.0.0.1/ServerActive=127.0.0.1/' /etc/zabbix/zabbix_agentd.conf
sed -i "s/^Hostname=Zabbix server/Hostname=$(hostname -f)/" /etc/zabbix/zabbix_agentd.conf
Agent servisini başlatın:
systemctl enable --now zabbix-agent
Uzak Sunuculara Agent Kurulumu
İzleme sistemi kurmanın asıl amacı uzak sunucuları izlemek. Bir Linux sunucuya agent kurmak şöyle:
# Hedef sunucuda, CentOS/Rocky Linux için:
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
dnf install -y zabbix-agent
Agent konfigürasyonu:
cat > /etc/zabbix/zabbix_agentd.conf << 'EOF'
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=ZABBIX_SERVER_IP
ServerActive=ZABBIX_SERVER_IP
Hostname=bu-sunucunun-hostname
Include=/etc/zabbix/zabbix_agentd.d/*.conf
EOF
# ZABBIX_SERVER_IP yerine gerçek IP'yi yazın:
sed -i 's/ZABBIX_SERVER_IP/192.168.1.100/' /etc/zabbix/zabbix_agentd.conf
systemctl enable --now zabbix-agent
firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --reload
Host Ekleme ve Template Atama
Zabbix arayüzünden host eklemek için:
- Configuration > Hosts > Create Host yolunu izleyin
- Host name: Agent konfigürasyonundaki Hostname ile aynı olmalı (kritik nokta!)
- Groups: Linux servers grubuna ekleyin
- Interfaces: Agent seçin, IP adresini girin, port 10050
- Templates sekmesine geçin ve
Linux by Zabbix agenttemplate’ini ekleyin
Template atamak, elle onlarca item tanımlamak yerine tek hamlede 100+ metriği devreye almanızı sağlar. Zabbix’in en güçlü özelliklerinden biri bu.
Temel Sorun Giderme
Kurulum sonrası en sık karşılaşılan sorunlar ve çözümleri:
Zabbix server başlamıyor:
# Log dosyasına bakın, her zaman buradan başlayın:
tail -100 /var/log/zabbix/zabbix_server.log
# Yaygın neden: veritabanı bağlantısı
systemctl status mariadb
mysql -uzabbix -p -e "SELECT 1" zabbix
Host unreachable görünüyor:
# Agent'ın çalışıp çalışmadığını kontrol edin:
systemctl status zabbix-agent
# Bağlantıyı Zabbix server'dan test edin:
zabbix_get -s HEDEF_IP -p 10050 -k agent.ping
# Firewall engel mi:
telnet HEDEF_IP 10050
Web arayüzü açılıyor ama login olunmuyor:
# Apache ve PHP-FPM loglarına bakın:
tail -50 /var/log/httpd/error_log
tail -50 /var/log/php-fpm/error.log
# Zabbix frontend konfigürasyonunun oluştuğunu doğrulayın:
cat /etc/zabbix/web/zabbix.conf.php
MariaDB Performans Tuning
Default MariaDB konfigürasyonu Zabbix için yetersiz kalır. Özellikle birkaç hafta sonra, history tabloları büyüdükçe yavaşlamalar başlar. Önceden ayarlayın:
cat >> /etc/my.cnf.d/zabbix-tuning.cnf << 'EOF'
[mysqld]
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
innodb_log_buffer_size = 32M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_file_per_table = ON
max_connections = 300
EOF
systemctl restart mariadb
innodb_buffer_pool_size değerini toplam RAM’in %50-70’i olarak ayarlayın. 8 GB RAM’li bir sunucuda 4-5 GB idealdir. innodb_flush_log_at_trx_commit = 2 değeri bir miktar ACID uyumluluğundan ödün verir ama Zabbix gibi sürekli yazma yapan uygulamalarda ciddi performans kazancı sağlar. İzleme verisi için bu trade-off kabul edilebilir.
History ve Trend Temizleme (Housekeeping)
Zabbix verisi hızla büyür. Default housekeeping ayarları çoğu zaman yeterli değil. Administration > General > Housekeeping menüsünden şu ayarları gözden geçirin:
- History storage period: 90 gün yeterli, 30 gün bile yeterli olabilir ihtiyaca göre
- Trend storage period: 365 gün, bu veriler küçük olduğu için uzun tutabilirsiniz
- Enable internal housekeeping: Aktif olmalı
Büyük ortamlarda Zabbix’in internal housekeeping’i yetmez. Bu durumda partitioning’e geçmeyi düşünün. Ama bu ayrı bir yazı konusu.
Zabbix Servisleri Yeniden Başlatma Sırası
Servis yeniden başlatma sırasında sıkça yapılan hata: önce server, sonra veritabanı. Doğru sıra şöyle:
# Doğru başlatma sırası:
systemctl start mariadb
systemctl start zabbix-server
systemctl start zabbix-agent
systemctl start httpd
systemctl start php-fpm
# Tüm servislerin durumunu kontrol edin:
systemctl status mariadb zabbix-server zabbix-agent httpd php-fpm
Bu sırayı bir script’e yazıp /usr/local/bin/zabbix-restart.sh olarak kaydetmenizi öneririm. Gece yarısı incident sırasında doğru sırayı hatırlamak istemezsiniz.
Sonuç
Bu kurulum rehberini takip ederek çalışan bir Zabbix sunucusuna sahip oldunuz. Ama kurulum, izleme yolculuğunun başlangıcı. Buradan sonra yapmanız gerekenler:
- Admin şifresini hemen değiştirin ve güçlü bir şifre belirleyin
- Kritik sunucularınıza agent kurun ve Linux by Zabbix agent template’ini atayın
- En az bir bildirim kanalı kurun (e-posta, Telegram, Slack) yoksa alertler görmezden gelinen gürültüye dönüşür
- Housekeeping politikalarını ortamınıza göre ayarlayın
- MariaDB backup’ını otomatize edin, Zabbix veritabanı kaybetmek acıtır
Rocky Linux’a geçişle birlikte CentOS 7’den göç eden ortamlarda bu kurulumu defalarca tekrarladım. Rocky Linux 9 özellikle stabil ve Zabbix ile son derece uyumlu çalışıyor. CentOS 7 kullananlar için söyleyeyim: EOL tarihi geçti, göç planınız yoksa başlayın.
Yazının devamında Zabbix’te özel template oluşturma, harici script ile özel metrik toplama ve Grafana entegrasyonunu ele alacağım.
